7

有不同的 Modelica 仿真环境,包括 Dymola、Wolfram SystemModeler、OpenModelica 和 Jmodelica。所以,我尝试加载一个热流体库(ThermoSysPro https://github.com/Dwarf-Planet-Project/ThermoSysPro),但除了 Dymola,其他软件上的结果都以错误结束。

如果库和仿真环境都基于 Modelica 规范标准,为什么会出现兼容性问题?我认为该库可能包含一些仅由 Dymola 支持的功能。谁能澄清这些模拟环境之间的区别?

4

1 回答 1

9

一般来说:

  1. 您使用的工具可能不支持某些 Modelica 语言元素

    仅仅因为一个工具支持 Modelica,并不意味着它已经实现了 Modelica 标准定义的一切。以 OpenModelica 为例,它在 v1.12 之前并不完全支持同步特性。

  2. 库的代码可能与您的工具使用的 Modelica 语言规范(Modelica 规范)的版本不一致

    一些工具允许某些未在 Modelica 规范中定义的东西:可能是因为 Modelica 规范在某个主题上不够精确,或者它们有点超前并且已经支持可能成为未来规范版本的一部分的东西。

    在 Dymola 中,如果您的代码符合当前的 Modelica 语言规范,您有两个选项可以更严格地检查:使用 pedantic 模式进行检查并设置标志Advanced.EnableAnnotationCheck=true让 Dymola 也检查注释

在您的具体示例中:ThermoSysPor库存在各种问题,这可能会解释您的问题。

  1. 该库是用相当旧的 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 规范。然后,您可以开始比较它在哪些工具中有效,在哪些工具中无效。

  2. 该库也不能在 Dymola 中完全运行

    我使用包含 MSL 3.2.1 的最新 Dymola 版本和 Dymola 2016 FD01 进行了测试。

    1. Dymola 2016 FD01:31 个错误,62 个警告
    2. Dymola 2020:175 个错误,095 个警告
  3. 库包含无效的语言元素。两个例子:

    1. ThermoSysPro.Examples.SimpleExamples.TestCentrifugalPumpOpenModelica v1.14 beta 2 抱怨中,这cardinality不是以合法方式使用的。显然 Dymola 2020 不在乎(即使在迂腐模式下),但它违反了 Modelica Spec 3.4。

    2. DymolaStoredErrors许多模型包含不符合标准的注释。自定义工具注释必须以“__”开头。

于 2019-11-20T09:14:01.777 回答