在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文档,但似乎没有提到这个论点。我还尝试运行上面的脚本,但编译器无法找到选项中列出的库中包含的模型的路径。
因为我要使用的多个库都是GitHub代码库,所以不能将库添加到JModelica安装中的第三方MSL文件夹中。
是否可以通过启动脚本或IPython代码将这些多个库添加到模块中?
发布于 2018-03-14 03:47:51
选项"extra_lib_dirs“已被删除,取而代之的是更简单的界面:
from pymodelica import compile_fmu
name = compile_fmu("MyModel", ["MyModelicaFile.mo", "C:\My\Modelica\Lib", ...])指定模型后的列表可以将任意数量的Modelica文件或目录带到Modelica库所在的位置。
发布于 2018-03-14 14:44:06
是的,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的一部分编译模型,那么您还必须将MSL文件夹从JModelica.org安装添加到MODELICAPATH。这是因为我们覆盖了默认的MODELICAPATH,而JModelica.org使用MODELICAPATH来查找MSL。
我可能会补充说,将库文件夹添加到MODELICAPATH比在compile_fmu命令中列出它们更有效。这样做的原因是,如果您将它们列出到compile_fmu命令中,那么所有的库都将被解析,而如果您将它们(或者更确切地说是父文件夹)添加到MODELICAPATH中,那么它们将根据需要进行加载。
https://stackoverflow.com/questions/49259284
复制相似问题