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

如何正确使用Modelica.Thermal.HeatTransfer.Components.BodyRadiation并解决建模报错?

问题描述

我使用Modelica.Thermal.HeatTransfer.Components.BodyRadiation组件研究两物体间的热辐射,编写了如下建模代码:

model thermal_analysis
  import Modelica.Thermal.HeatTransfer.Components.BodyRadiation;
  // Heat ports
  Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_Body1;
  Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b port_Body2
  BodyRadiation radiation(Gr=0.2);
equation
    // Connection of heat ports
    connect(port_Body1, radiation.port_a);
    connect(port_Body2, radiation.port_b);
end thermal_analysis;

仿真时出现以下错误:

[1] 11:24:15 Symbolic Error
[Modelica.Thermal.HeatTransfer.Interfaces.HeatPort: 4:3-5:75]: [发现不含时变变量的方程: port_Body2.Q_flow = 0.0](omeditmessagesbrowser:///Modelica.Thermal.HeatTransfer.Interfaces.HeatPort?lineNumber=4)
[2] 11:24:15 Translation Error
Internal error IndexReduction.pantelidesIndexReduction failed! 系统结构奇异,因未分配方程数多于状态数无法处理。使用-d=bltdump获取更多信息。
[3] 11:24:15 Translation Error
Internal error Transformation Module PFPlusExt index Reduction Method Pantelides failed!

尝试将port_Body2.Q_flow初始化为非零值后,又出现错误:

[1] 10:50:10 Symbolic Error
Too many equations, over-determined system. The model has 11 equation(s) and 10 variable(s).

不知如何修正错误并完成正确建模,恳请指导。


错误原因与修正方案

错误根源

  1. 缺少热储能元件:HeatPort仅负责热流传递,本身不包含温度状态变量;BodyRadiation只描述辐射换热关系,但未定义物体的热容量(温度随热流变化的特性),导致系统无时变状态,触发方程奇异问题。
  2. 语法错误:port_Body2定义末尾缺少分号,会干扰编译逻辑。

修正步骤

  1. 添加热电容元件:为每个热端口连接ThermalCapacitor,模拟物体的热容量,提供温度状态变量。
  2. 修复语法问题:补全port_Body2定义末尾的分号。
  3. 补充必要参数:给热电容设置热容值,为BodyRadiation添加发射率、面积等物理参数(按需调整)。

修正后代码

model thermal_analysis
  import Modelica.Thermal.HeatTransfer.Components.BodyRadiation;
  import Modelica.Thermal.HeatTransfer.Components.ThermalCapacitor;
  
  // Heat ports
  Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_Body1;
  Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_b port_Body2; // 修复分号
  
  // 热储能元件,模拟物体热容量(单位J/K)
  ThermalCapacitor body1(C=1000);
  ThermalCapacitor body2(C=1000);
  
  // 辐射换热组件,补充发射率、面积等参数
  BodyRadiation radiation(Gr=0.2, emissivity_a=0.9, emissivity_b=0.9, area_a=1.0, area_b=1.0);
equation
    // 连接热端口、热电容与辐射组件
    connect(port_Body1, body1.port);
    connect(body1.port, radiation.port_a);
    
    connect(port_Body2, body2.port);
    connect(body2.port, radiation.port_b);
end thermal_analysis;

额外说明

  • 若需固定某物体温度,可用Modelica.Thermal.HeatTransfer.Sources.FixedTemperature替代ThermalCapacitor,直接设置温度值。
  • Gr为形状因子,需保证取值在0到1之间,符合物理意义。

内容的提问来源于stack exchange,提问作者bb6

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:14:57