You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加热管道模型中如何为周围空气分配热容?

问题描述

我需要计算加热过程中受热管道的温度变化。内管道被加热,外侧有一个外管道,外管道与周围空气进行热交换,热量最终流入外管道周围的空气。我的问题是如何为空气分配热容(Heat Capacity)?我不清楚需要考虑的空气体积。我需要通过热流计算空气温度,而该温度会定义影响热流的温度梯度。

模型示意图

model Waermeuebertragung

type Radius = Real(unit = "m");
type Laenge = Real(unit = "m");
type Dichte = Real(unit = "kg/m^3");

  // 反应器参数
  
  parameter Radius rii = 10e-3 "内管内径";
  parameter Radius ria = 11e-3 "内管外径";
  parameter Radius rai = 23.5e-3 "外管内径";
  parameter Radius raa = 28.5e-3 "外管外径";
  parameter Laenge l = 1.5 "管式反应器长度";
  parameter Dichte rho_SS = 7800 "钢的密度";



      Modelica.Thermal.HeatTransfer.Components.HeatCapacitor Rohrwand_i(C = Waermekapazitaet_Rohr(ri=rii,ra=ria,l=l, density=rho_SS)) annotation(
        Placement(visible = true, transformation(origin = {-44, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Thermal.HeatTransfer.Components.HeatCapacitor Rohrwand_a(C = Waermekapazitaet_Rohr(ri=rai,ra=raa,l=l, density=rho_SS)) annotation(
        Placement(visible = true, transformation(origin = {40, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Thermal.HeatTransfer.Components.Convection convection_internal annotation(
        Placement(visible = true, transformation(origin = {-4, -10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature prescribedTemperature annotation(
        Placement(visible = true, transformation(origin = {-80, -10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Blocks.Sources.Ramp T_ramp(duration = 300, height = 200, offset = T_amb, startTime = 0) annotation(
        Placement(visible = true, transformation(origin = {-80, 72}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Blocks.Sources.Constant const(k = 0.01) annotation(
        Placement(visible = true, transformation(origin = {-10, 72}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Thermal.HeatTransfer.Components.Convection convection annotation(
        Placement(visible = true, transformation(origin = {84, -10}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor_i annotation(
        Placement(visible = true, transformation(origin = {-12, -54}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor_m annotation(
        Placement(visible = true, transformation(origin = {30, -54}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor_a annotation(
        Placement(visible = true, transformation(origin = {116, -54}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
      parameter Modelica.Units.SI.Temperature T_amb = 293.15;
      Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor(C = 0.1) annotation(
        Placement(visible = true, transformation(origin = {120, -2}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
    equation
      connect(convection_internal.fluid, Rohrwand_a.port) annotation(
        Line(points = {{6, -10}, {40, -10}}, color = {191, 0, 0}));
      connect(Rohrwand_i.port, convection_internal.solid) annotation(
        Line(points = {{-44, -10}, {-14, -10}}, color = {191, 0, 0}));
      connect(prescribedTemperature.port, Rohrwand_i.port) annotation(
        Line(points = {{-70, -10}, {-44, -10}}, color = {191, 0, 0}));
      connect(T_ramp.y, prescribedTemperature.T) annotation(
        Line(points = {{-68, 72}, {-64, 72}, {-64, 50}, {-98, 50}, {-98, -10}, {-92, -10}}, color = {0, 0, 127}));
      connect(const.y, convection_internal.Gc) annotation(
        Line(points = {{2, 72}, {16, 72}, {16, 30}, {-4, 30}, {-4, 0}}, color = {0, 0, 127}));
      connect(const.y, convection.Gc) annotation(
        Line(points = {{2, 72}, {84, 72}, {84, 0}}, color = {0, 0, 127}));
      connect(temperatureSensor_m.port, convection_internal.fluid) annotation(
        Line(points = {{20, -54}, {8, -54}, {8, -34}, {20, -34}, {20, -10}, {6, -10}}, color = {191, 0, 0}));
      connect(Rohrwand_a.port, convection.solid) annotation(
        Line(points = {{40, -10}, {74, -10}}, color = {191, 0, 0}));
      connect(prescribedTemperature.port, temperatureSensor_i.port) annotation(
        Line(points = {{-70, -10}, {-44, -10}, {-44, -54}, {-22, -54}}, color = {191, 0, 0}));
      connect(temperatureSensor_a.port, convection.fluid) annotation(
        Line(points = {{106, -54}, {92, -54}, {92, -26}, {106, -26}, {106, -10}, {94, -10}}, color = {191, 0, 0}));
      connect(heatCapacitor.port, convection.fluid) annotation(
        Line(points = {{120, -12}, {120, -20}, {102, -20}, {102, -10}, {94, -10}}, color = {191, 0, 0}));
      annotation(
        Diagram(coordinateSystem(extent = {{-100, 100}, {140, -60}})));
    end Waermeuebertragung;
空气热容设置方案

针对外管与空气换热的热容设置,分两种场景处理:

1. 开放空间(空气无限大)

如果管道处于开放环境,空气可自由流动补充,空气温度几乎保持环境温度不变,无需设置空气热容。直接将右侧convection模块的流体侧连接到设定为T_amb的PrescribedTemperature模块即可,此时热流仅由外管与环境的温差决定。

2. 封闭/受限空间(空气体积有限)

如果管道处于封闭腔体内,空气体积固定,按以下步骤计算热容:

  • 计算空气体积:根据腔体尺寸确定,比如假设外管周围空气腔体为半径R_air、长度与管道一致的圆柱,体积公式为 V_air = π*(R_air² - raa²)*l
  • 计算热容:空气热容公式为 C = rho_air * c_p_air * V_air,其中标准状态下空气密度rho_air≈1.225 kg/m³,定压比热容c_p_air≈1005 J/(kg·K)
  • 更新模型参数:将heatCapacitor的C = 0.1替换为上述计算值,这样空气温度会随热流变化,进而影响换热梯度

模型调整建议

  • 开放场景:删除右侧heatCapacitor,将convection.fluid直接连接到设定为T_amb的PrescribedTemperature
  • 受限场景:准确估算空气体积,代入公式计算热容后更新heatCapacitor的C参数,保留当前连接方式即可

内容的提问来源于stack exchange,提问作者Tobias R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 05:23:11