有不同的 Modelica 仿真环境,包括 Dymola、Wolfram SystemModeler、OpenModelica 和 Jmodelica。所以,我尝试加载热流体库(ThermoSysProhttps://github.com/Dwarf-Planet-Project/ThermoSysPro https://github.com/Dwarf-Planet-Project/ThermoSysPro),但除了 Dymola 之外,其他软件上的结果都以错误结束。
如果库和仿真环境都是基于Modelica规范标准,为什么会出现兼容性问题?我认为该库可能包含一些仅 Dymola 支持的功能。谁能澄清这些模拟环境之间的区别?
一般来说:
-
您使用的工具可能不支持某些 Modelica 语言元素
仅仅因为一个工具支持 Modelica,并不意味着它已经实现了 Modelica 标准定义的所有内容。以OpenModelica为例,它在v1.12之前并不完全支持同步功能。
-
库的代码可能不符合您的工具使用的 Modelica 语言规范 (Modelica spec) 版本
有些工具允许某些 Modelica 规范中未定义的功能:可能是因为 Modelica 规范在某个主题上不够精确,或者可能它们有点超前并且已经支持可能成为未来规范版本一部分的功能。
在 Dymola 中,您有两个选项可以更严格地检查您的代码是否符合当前的 Modelica 语言规范:使用迂腐模式进行检查并设置标志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 个警告
-
该库包含无效的语言元素。两个例子:
In ThermoSysPro.Examples.SimpleExamples.TestCentrifugalPump
OpenModelica v1.14 beta 2 抱怨说cardinality
未以合法方式使用。显然 Dymola 2020 并不关心(即使在迂腐模式下),但它违反了 Modelica Spec 3.4。
许多模型都包含注释DymolaStoredErrors
,这不符合标准。自定义工具注释必须以“__”开头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)