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

Dymola中ExternalMedia调用报错:热泵系统建模求助

问题分析与解决方案

核心报错原因

你当前的模型存在过约束问题:

  • 设置了inputChoice=ExternalMedia.Common.InputChoice.hs,说明介质状态由焓(h)和熵(s)唯一确定,但模型里同时给了fluid.p = p、fluid.s = s、fluid.h = h三个方程,导致状态变量冲突,触发求解器报错。
  • 同时你注释掉了p的赋值语句,p变量未被定义,也会引发求解错误。

针对"用压力和温度获取物性"的修改方案

1. 调整介质模型与状态变量

将介质的输入类型改为压力-温度(pt),并修正状态变量的赋值逻辑,修改后的完整模型如下:

model Pentane_pt
package wf
  extends ExternalMedia.Media.CoolPropMedium(
    mediumName = "Pentane",
    substanceNames = {"n-Pentane"},
    inputChoice=ExternalMedia.Common.InputChoice.pt); // 切换为pt输入模式
end wf;
  wf.BaseProperties fluid "Properties of the two-phase fluid";
  Modelica.SIunits.SpecificEnthalpy h;
  Modelica.SIunits.Pressure p;
  Modelica.SIunits.Temperature T; // 新增温度变量
  Modelica.SIunits.DerDensityByEnthalpy drdh
    "Derivative of average density by enthalpy";
  Modelica.SIunits.DerDensityByPressure drdp
    "Derivative of average density by pressure";
equation 
  p = 1E5; // 给压力赋值,示例为1bar
  T = 293.15 + time*10; // 温度随时间变化的示例值,可按需修改
  // 仅需给p和T赋值即可确定介质状态
  fluid.p = p;
  fluid.T = T;
  // 可从介质状态中直接获取h、s等物性参数
  h = fluid.h;
  // 调用与pt输入匹配的导数函数
  drdp = wf.density_derp_T(fluid.state);
  drdh = wf.density_derh_p(fluid.state);
end Pentane_pt;

2. 解决库导入失败问题

  • 确保Dymola中已正确加载ExternalMedia库:
    1. 打开Dymola,依次点击File > Open > Libraries,找到ExternalMedia库
    2. 右键选择Load Library,等待加载完成
  • 配置CoolProp依赖:
    ExternalMedia需要CoolProp计算物性,需检查ExternalMedia > Common > Config中的coolpropLibraryPath,确保其指向正确的CoolProp库文件(Windows下为CoolProp.dll,Linux下为libCoolProp.so)。若未安装CoolProp,需下载对应版本的库文件,配置路径后重启Dymola。

关键注意事项

  • 介质的inputChoice必须与你赋值的状态变量严格对应:
    • pt对应压力p+温度T
    • hs对应焓h+熵s
    • ph对应压力p+焓h
      不能同时给超过两个独立状态变量赋值,否则会引发过约束错误
  • 调用导数函数时,要选择与当前输入类型匹配的函数(比如density_derp_T对应pt输入模式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:35:26