1

在 JModelica 中,我想使用来自多个现有库的组件创建模型。

这意味着将多个库添加到 MODELICAPATH 将非常有用,因此可以在不更改其现有路径的情况下引用组件。在Dymola中似乎有类似的东西。

在 JModelica 1.13 中,这似乎曾经可以使用

c_opts =
    {'extra_lib_dirs':['c:\MyLibs1','c:\MyLibs2']}

compile_fmu(class_path, compiler_options=c_opts)

我已经阅读了 JModelica 2.1 文档,似乎没有提到这个论点。我也尝试过运行上面的脚本,编译器无法找到选项中列出的库中包含的模型的路径。

将库添加到 JModelica 安装中的第三方 MSL 文件夹不是一种选择,因为我将使用的多个库是 GitHub 存储库。

是否可以通过启动脚本或 IPython 代码将这些多个库添加到 MODELICAPATH?

4

2 回答 2

2

已删除选项“extra_lib_dirs”以支持更简单的界面:

from pymodelica import compile_fmu

name = compile_fmu("MyModel", ["MyModelicaFile.mo", "C:\My\Modelica\Lib", ...])

指定模型后的列表可以将任意数量的 Modelica 文件或目录带到 Modelica 库所在的位置。

于 2018-03-13T19:47:50.843 回答
1

是的,JModelica.org 查看环境变量 MODELICAPATH 以获取 Modelica 库的其他位置(根据Modelica 语言规范,第 13.2.4 节)。

在启动 JModelica.org 之前批量修改变量,或者在 Python 中修改环境:

import os
os.environ['MODELICAPATH'] = "C:/somePath/;" + os.environ['JMODELICA_HOME'] + "/ThirdParty/MSL"
from pymodelica import compile_fmu
compile_fmu("SomeLibrary.SomeModel")

请注意,如果您要从 MSL 编译模型或使用 MSL 的部分编译模型,那么您还必须将 JModelica.org 安装中的 MSL 文件夹添加到 MODELICAPATH。这样做的原因是我们覆盖了默认值MODELICAPATH,而 JModelica.org 用于MODELICAPATH查找 MSL。

我可能会补充一点,添加库文件夹比在命令MODELICAPATH中列出它们更有效。compile_fmu这样做的原因是,如果您将它们列出到compile_fmu命令中,那么所有库都将被解析,而如果您将它们(或者更确切地说是父文件夹)添加到 MODELICAPATH,那么它们会根据需要加载。

于 2018-03-14T06:44:05.853 回答