如何使用Dymola命令window中的函数?
How to use functions in the command window of Dymola?
我正在使用Dymola,并尝试在命令window中使用Modelica标准库提供的功能,但似乎无法使用它们,而且我无法声明变量也属于特定类型。我想知道我可以在 Dymola 的命令 window 中使用的命令是否存在某种限制。我应该在哪里找到所有允许的命令?
我尝试使用Modelica.Media中的一些函数,似乎输入变量超出范围,但我尝试了很多次和不同的单位系统。我发现我不能在命令window中声明压力类型的变量,但是Modelica.Media.Water.IF97_Utilities.h_pT()
要求我需要提供pressure
和enthalpy
类型的变量,这是我不能在命令 window?
中使用此功能的原因吗
Modelica.Media.Water.IF97_Utilities.h_pT(1e6,800,1)
Failed to expand Modelica.Media.Water.IF97_Utilities.h_props_pT(
1000000.0,
800,
Modelica.Media.Common.IF97BaseTwoPhase(
phase = 1,
region = 1,
p = 1000000.0,
T = 800.0,
h = 9.577648835649013E+20,
R = 461.526,
cp = 1.8074392528071426E+20,
cv = -3.7247229288028774E+18,
rho = 5.195917767496603E-13,
s = 1.2052984524009106E+18,
pt = 645518.9415389205,
pd = 6.693617079374418E+18,
vt = 357209983199.2206,
vp = -553368.7088215105,
x = 0.0,
dpT = 645518.9415389205
)).
Failed to expand Modelica.Media.Water.IF97_Utilities.h_pT(1000000.0, 800, 1).
问题是您给函数的输入无效。根据您提供的屏幕截图和日志,Dymola 似乎没有为此提供错误消息。我在 OpenModelica 中尝试过并得到:
Modelica.Media.Water.IF97_Utilities.h_pT(100e5, 500e3)
[Modelica 4.0.0/Media/Water/IF97_Utilities.mo:2245:9-2246:77] Error: assert triggered: IF97 medium function g5: input temperature (= 500000 K) is higher than limit of 2273.15K in region 5
通过使用限制内的值,它 returns 一个值:
Modelica.Media.Water.IF97_Utilities.h_pT(100e5, 1e3)
假设输入有效,似乎存在与在 Dymola 中以交互方式评估某些媒体功能特别相关的问题(因为它们不应在模型中评估)。它将在 Dymola 2022x 中得到纠正。
临时解决方法是先设置标志 Advanced.SemiLinear = false;
,然后:
Modelica.Media.Water.IF97_Utilities.h_pT(1e6,800,1)
= 9.577648835649013E+20
(我不确定该公式在该地区的有效性如何。)
但请记住在翻译和模拟任何模型之前设置 Advanced.SemiLinear = true;
- 特别是使用媒体功能的模型。
我正在使用Dymola,并尝试在命令window中使用Modelica标准库提供的功能,但似乎无法使用它们,而且我无法声明变量也属于特定类型。我想知道我可以在 Dymola 的命令 window 中使用的命令是否存在某种限制。我应该在哪里找到所有允许的命令?
我尝试使用Modelica.Media中的一些函数,似乎输入变量超出范围,但我尝试了很多次和不同的单位系统。我发现我不能在命令window中声明压力类型的变量,但是Modelica.Media.Water.IF97_Utilities.h_pT()
要求我需要提供pressure
和enthalpy
类型的变量,这是我不能在命令 window?
Modelica.Media.Water.IF97_Utilities.h_pT(1e6,800,1)
Failed to expand Modelica.Media.Water.IF97_Utilities.h_props_pT(
1000000.0,
800,
Modelica.Media.Common.IF97BaseTwoPhase(
phase = 1,
region = 1,
p = 1000000.0,
T = 800.0,
h = 9.577648835649013E+20,
R = 461.526,
cp = 1.8074392528071426E+20,
cv = -3.7247229288028774E+18,
rho = 5.195917767496603E-13,
s = 1.2052984524009106E+18,
pt = 645518.9415389205,
pd = 6.693617079374418E+18,
vt = 357209983199.2206,
vp = -553368.7088215105,
x = 0.0,
dpT = 645518.9415389205
)).
Failed to expand Modelica.Media.Water.IF97_Utilities.h_pT(1000000.0, 800, 1).
问题是您给函数的输入无效。根据您提供的屏幕截图和日志,Dymola 似乎没有为此提供错误消息。我在 OpenModelica 中尝试过并得到:
Modelica.Media.Water.IF97_Utilities.h_pT(100e5, 500e3)
[Modelica 4.0.0/Media/Water/IF97_Utilities.mo:2245:9-2246:77] Error: assert triggered: IF97 medium function g5: input temperature (= 500000 K) is higher than limit of 2273.15K in region 5
通过使用限制内的值,它 returns 一个值:
Modelica.Media.Water.IF97_Utilities.h_pT(100e5, 1e3)
假设输入有效,似乎存在与在 Dymola 中以交互方式评估某些媒体功能特别相关的问题(因为它们不应在模型中评估)。它将在 Dymola 2022x 中得到纠正。
临时解决方法是先设置标志 Advanced.SemiLinear = false;
,然后:
Modelica.Media.Water.IF97_Utilities.h_pT(1e6,800,1)
= 9.577648835649013E+20
(我不确定该公式在该地区的有效性如何。)
但请记住在翻译和模拟任何模型之前设置 Advanced.SemiLinear = true;
- 特别是使用媒体功能的模型。