有不同的Modelica仿真环境,包括Dymola,Wolfram SystemModeler,OpenModelica和Jmodelica。因此,我尝试加载热流体库(ThermoSysPro https://github.com/Dwarf-Planet-Project/ThermoSysPro),但是除了Dymola之外,其他软件上的结果均以错误结尾。
如果库和仿真环境均基于Modelica规范标准,为什么存在兼容性问题?我认为该库可能包含仅Dymola支持的某些功能。谁能澄清这些仿真环境之间的区别?
一般来说:
您使用的工具可能不支持某些Modelica语言元素
仅仅因为工具支持Modelica,并不意味着它已经实现了Modelica标准定义的一切。以OpenModelica为例,它在v1.12之前不完全支持同步功能。
该库的代码可能与您的工具使用的Modelica语言规范(Modelica规范)的版本不一致
有些工具允许某些东西,而这些东西在Modelica规范中没有定义:可能是因为Modelica规范在某个主题上不够精确,或者它们有些领先,并且已经支持将来规范版本中的某些内容。
在Dymola中,您有两个选项可以检查代码是否符合当前的Modelica语言规范,从而更加严格:使用pedantic模式进行检查,并设置标志Advanced.EnableAnnotationCheck=true
以使Dymola也可以检查注释
在您的具体示例中:ThermoSysPor
库存在各种麻烦,这可能可以解释您的问题。
该库使用相当老的Modelica标准库(MSL)3.2.1编写,该库基于Modelica语言规范3.2。
当前的Dymola版本(2020)使用Modelica语言规范3.4(请参阅每个版本的Dymola发行说明以了解相关信息)。OpenModelica显然支持Modelica 3.3(如发行说明中所述)。
同时,MSL也有所改进,当前版本为3.2.3。
因此,需要将ThermoSysPro更新到最新的MSL版本3.2.3以及该工具支持的Modelica规格。然后,您可以开始比较哪些工具可以使用,哪些工具不能使用。
该库在Dymola中也无法完全正常工作
我使用最新的Dymola版本和Dymola 2016 FD01(包含MSL 3.2.1)进行了测试。
Dymola 2016 FD01:31错误,62警告
Dymola 2020:175个错误,095个警告
该库包含无效的语言元素。两个例子:
在ThermoSysPro.Examples.SimpleExamples.TestCentrifugalPump
OpenModelica v1.14 beta 2中抱怨,这cardinality
不是合法使用的方式。显然Dymola 2020并不在乎(即使是在学步模式下也是如此),但它违反了Modelica Spec 3.4。
许多模型包含注解DymolaStoredErrors
,这不是标准的。自定义工具注释必须以“ __”开头。