環境はWindowsでWSLは使っていない。
mainはOMCSessionZMQを使用する。
main2はModelicaSystemを使用する。
from OMPython import ModelicaSystem
from OMPython import OMCSessionZMQ
import pandas as pd
from matplotlib import pyplot as plt
def main():
"""
https://openmodelica.org/doc/OpenModelicaUsersGuide/latest/ompython.html#ompython
"""
omc = OMCSessionZMQ()
print(omc.sendExpression("getVersion()"))
omc.sendExpression("loadModel(Modelica)")
omc.sendExpression("loadFile(\"sample.mo\")")
result = omc.sendExpression("simulate(myPackage.ex1.myModel, stopTime=10.0, outputFormat=\"csv\")")
print(result)
df = pd.read_csv("myPackage.ex1.myModel_res.csv", index_col=0)
plt.figure()
plt.plot(df.index, df["a"])
plt.show()
def main2():
mod=ModelicaSystem("sample.mo","myPackage.ex1.myModel", ["Modelica"])
print(mod.getParameters())
mod.setSimulationOptions(["stopTime=10.0","outputFormat=\"csv\""])
mod.simulate()
df = pd.read_csv("myPackage.ex1.myModel_res.csv", index_col=0)
plt.figure()
plt.plot(df.index, df["a"])
plt.show()
if __name__ == "__main__":
main()
print("-----")
main2()実行ログ
mainの実行で出力されるグラフ
main2の実行で出力されるグラフ
main2は実行されておらず、mainの結果ファイルが読み込まれている。
WindowsでOMPythonを実行するときはOMCSessionZMQ形式を使う必要がある。