加热管道模型中如何为周围空气分配热容?
问题描述
我需要计算加热过程中受热管道的温度变化。内管道被加热,外侧有一个外管道,外管道与周围空气进行热交换,热量最终流入外管道周围的空气。我的问题是如何为空气分配热容(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.
相关产品推荐
相关产品推荐

