1

很久以前,我使用JModelica/pymodelica将modelica模型编译成FMU,使用一个简单的python脚本。现在我了解到 JModelica 作为一个开源项目已停止使用。(运行 FMU 的库似乎已经扩展到新的开源项目,但我没有找到编译器。)

是否有最新、开源且同样简单的替代方案?

我从后面得到的脚本如下,我希望能找到一些东西让我将它更新到 Python3 并继续我多年前离开的地方。

#! /local/opt/modelica/bin/jm_python.sh
# Import the compiler function
from pymodelica import compile_fmu

import optparse
parser = optparse.OptionParser()
(options,args) = parser.parse_args()

# Specify Modelica model and model file (.mo or .mop)
mo_file = args[0]
model_name = mo_file.split(".")[0]
print mo_file, model_name

# Compile the model and save the return argument, which is the file name of the FMU
my_fmu = compile_fmu(model_name, mo_file, target='cs')
4

1 回答 1

2

剩下的唯一开源替代品是 OpenModelica。当然,JModelica 仍然存在于一些 github 分支中,但我不确定是否仍然更新和支持。

您可以尝试使用 OpenModelica 和 OMPython。 https://www.openmodelica.org/doc/OpenModelicaUsersGuide/latest/ompython.html

另见: https ://www.openmodelica.org/forum/default-topic/3121-compile-cosimulation-fmu-via-ompython-api-call

我想要生成一个 FMU,它会是这样的:

from OMPython import OMCSessionZMQ
omc = OMCSessionZMQ()
model_path=omc.sendExpression("getInstallationDirectoryPath()") + "/share/doc/omc/testmodels/"
from OMPython import ModelicaSystem
mod=ModelicaSystem(model_path + "BouncingBall.mo","BouncingBall")
ffmu = mod.convertMo2Fmu()
于 2021-09-22T10:46:44.053 回答