有不同的Modelica仿真环境,包括Dymola、Wolfram SystemModeler、OpenModelica和Jmodelica。因此,我尝试加载一个热流体库(ThermoSysPro https://github.com/Dwarf-Planet-Project/ThermoSysPro),但是除了Dymola之外,其他软件的结果都是错误的。
如果库和仿真环境都基于Modelica规范标准,为什么会出现兼容性问题?我认为这个库可能包含了一些只有Dymola支持的特性。有人能澄清这些模拟环境之间的区别吗?
发布于 2019-11-20 09:14:01
一般而言:
您使用的
仅仅因为一个工具支持Modelica,并不意味着它已经实现了Modelica标准定义的所有东西。以OpenModelica为例,它在V1.12之前不完全支持同步特性。
有些工具允许某些东西,这些东西在Modelica规范中没有定义:可能是因为Modelica规范在某个主题上不够精确,或者它们有点超前,并且已经支持可能成为未来规范版本一部分的内容。
在Dymola中,如果代码符合当前的Modelica语言规范,您有两个更严格的检查选项:使用迂回模式检查并设置标志Advanced.EnableAnnotationCheck=true,让Dymola也检查注释
在您的具体示例中:ThermoSysPor库存在各种问题,这可能会解释您的问题。
目前的Dymola版本(2020)使用Modelica语言规范3.4 (请参阅每个版本的Dymola发行说明来找出这一点)。OpenModelica显然支持Modelica3.3(正如发行说明中所指出的)。
同时,MSL也发生了一些变化,目前的版本为3.2.3。
因此,需要将ThermoSysPro更新到最新的MSL3.2.3版本和工具支持的Modelica规范。然后,您可以开始比较它在哪些工具中工作和哪些不工作。
我测试了最新的Dymola版本和Dymola 2016 FD01,其中包含MSL3.2.1。
1. Dymola 2016 FD01: 31 errors, 62 warnings
2. Dymola 2020: 175 errors, 095 warnings
1. In `ThermoSysPro.Examples.SimpleExamples.TestCentrifugalPump` OpenModelica v1.14 beta 2 complains, that `cardinality` is not used in a legal way. Apparently Dymola 2020 does not care (even in pedantic mode), but it's against the Modelica Spec 3.4.
2. Many models contain the annotation `DymolaStoredErrors`, which is not standard conform. Custom tool annotations must start with '\_\_'.
https://stackoverflow.com/questions/58939793
复制相似问题