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

基于TableBased创建不可压缩流体模型时遇作用域未找到错误

问题:Modelica不可压缩润滑油测试模型翻译错误

我通过复制Glycol47包,基于TableBase方法创建了不可压缩润滑油流体模型LubeOil,包代码保存无错误:

package LubeOil "LubeOil lubricating oil"
  extends Modelica.Media.Incompressible.TableBased(
    mediumName="LubeOil",
    T_min = Cv.from_degC(0), T_max = Cv.from_degC(320),
    TinK = false, T0=273.15,
    tableDensity=
      [0, 998; 20, 998; 40, 998; 60, 998; 80, 998; 100, 998;
       150, 998; 200, 998; 250, 998; 300, 998; 320, 998],
    tableHeatCapacity=
      [0, 1; 20, 1; 40, 1; 60, 1; 80, 1; 100, 1;
       150, 1; 200, 1; 250, 1; 300, 1; 320, 1],
    tableConductivity=
      [0,1;  20,1;  40,1;  60,1;  80,1;  100,1;
       150,1;  200,1;  250,1;  300,1;  320,1],
    tableViscosity = [0, 14370; 20, 1917; 40, 424; 60, 134; 80, 54.5;
       100, 26.64; 150, 7.47; 200, 3.22; 250, 1.76; 300, 1.10; 320,0.94],
    tableVaporPressure=
      [160, 1; 180, 1; 200, 1; 220, 1; 240, 1; 260, 1;
       280, 1; 300, 1; 320, 1]);
    annotation (Documentation(info="<html>

</html>"));
end LubeOil;

随后复制TestGlycol模型编写测试代码:

model testlubeoil "LubeOil Medium model"
  //extends Modelica.Icons; //.Example;
  //package Medium = Modelica.Media.Incompressible.Examples.LubeOil "Medium model (Glycol47)";
  package Medium = Modelica.Media.Incompressible.LubeOil;
  Medium.BaseProperties medium;
  Medium.DynamicViscosity eta = Medium.dynamicViscosity(medium.state);
  Medium.ThermalConductivity lambda = Medium.thermalConductivity(medium.state);
  Medium.SpecificEntropy s = Medium.specificEntropy(medium.state);
  Medium.SpecificHeatCapacity cv = Medium.specificHeatCapacityCv(medium.state);
  Medium.SpecificInternalEnergy u = Medium.specificInternalEnergy(medium.state);
  Medium.SpecificInternalEnergy h = Medium.specificEnthalpy(medium.state);
  Medium.SpecificInternalEnergy d = Medium.density(medium.state);
protected
  constant Modelica.Units.SI.Time timeUnit = 1;
  constant Modelica.Units.SI.Temperature Ta = 1;
equation
  medium.p = 1.013e5;
  medium.T = Medium.T_min + time/timeUnit*Ta;
  annotation(
    experiment(StopTime = 5));
end testlubeoil;

保存测试模型时出现翻译错误:

[testlubeoil: 12:3-12:65]: Class Medium.SpecificInternalEnergy not found in scope testlubeoil


错误原因

测试模型中存在类型不匹配的核心问题:

  • 焓(h)的类型误用了SpecificInternalEnergy,实际应对应Medium.SpecificEnthalpy
  • 密度(d)的类型误用了SpecificInternalEnergy,实际应对应Medium.Density

修正后的测试模型代码

model testlubeoil "LubeOil Medium model"
  //extends Modelica.Icons; //.Example;
  //package Medium = Modelica.Media.Incompressible.Examples.LubeOil "Medium model (Glycol47)";
  package Medium = Modelica.Media.Incompressible.LubeOil;
  Medium.BaseProperties medium;
  Medium.DynamicViscosity eta = Medium.dynamicViscosity(medium.state);
  Medium.ThermalConductivity lambda = Medium.thermalConductivity(medium.state);
  Medium.SpecificEntropy s = Medium.specificEntropy(medium.state);
  Medium.SpecificHeatCapacity cv = Medium.specificHeatCapacityCv(medium.state);
  Medium.SpecificInternalEnergy u = Medium.specificInternalEnergy(medium.state);
  Medium.SpecificEnthalpy h = Medium.specificEnthalpy(medium.state);
  Medium.Density d = Medium.density(medium.state);
protected
  constant Modelica.Units.SI.Time timeUnit = 1;
  constant Modelica.Units.SI.Temperature Ta = 1;
equation
  medium.p = 1.013e5;
  medium.T = Medium.T_min + time/timeUnit*Ta;
  annotation(
    experiment(StopTime = 5));
end testlubeoil;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:52:33