一般来说:
您使用的工具可能不支持某些 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 中完全运行
我使用包含 MSL 3.2.1 的最新 Dymola 版本和 Dymola 2016 FD01 进行了测试。
- 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
许多模型包含不符合标准的注释。自定义工具注释必须以“__”开头。