在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?
答案 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,则会根据需要加载它们。