在JModelica中向MODELICAPATH添加其他库

时间:2018-03-13 14:53:36

标签: modelica jmodelica

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

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

在JModelica 1.13中,似乎有可能using

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

compile_fmu(class_path, compiler_options=c_opts)

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

将库添加到JModelica安装中的第三方MSL文件夹不是一个选项,因为我正在使用的多个库是GitHub repos。

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

2 个答案:

答案 0 :(得分:2)

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

from pymodelica import compile_fmu

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

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

答案 1 :(得分:1)

是的,JModelica.org查看环境变量MODELICAPATH以获取Modelica库的其他位置(根据Modelica language specification,第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或模型编译模型,则必须将JLodelica.org安装中的MSL文件夹添加到MODELICAPATH中。这样做的原因是我们覆盖了默认MODELICAPATH,而JModelica.org使用MODELICAPATH来查找MSL。

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