JModelica.org には、Modelica Standard Library - Version 3.2.2 (MSL) が含まれています。
JModelica.org User Guide - Version 2.10 5.4.1 の手順に従ってシミュレーションを実行します。
必要なライブラリを import します。
%matplotlib notebook
import matplotlib.pyplot as plt
from pymodelica import compile_fmu
from pyfmi import load_fmu
モデルをコンパイルして FMU を作成し、ロードします。 MSL に含まれるクラスについては、compile_fmu の引数としてモデル名のみをフルネームで指定すればよく、ファイル名を指定する必要はありません。また、環境変数 MODELICAPATH の設定も不要です。
# Compile model
fmu_name = compile_fmu("Modelica.Mechanics.Rotational.Examples.First")
# Load model
model = load_fmu(fmu_name)
シミュレーションを実行します。
# Load result file
res = model.simulate(final_time=3.)
シミュレーション結果をプロットします。
w1 = res['inertia1.w']
w2 = res['inertia2.w']
w3 = res['inertia3.w']
tau = res['torque.tau']
t = res['time']
plt.figure(1)
plt.subplot(2,1,1)
plt.plot(t,w1,t,w2,t,w3)
plt.grid(True)
plt.legend(['inertia1.w','inertia2.w','inertia3.w'])
plt.subplot(2,1,2)
plt.plot(t,tau)
plt.grid(True)
plt.legend(['tau'])
plt.xlabel('time [s]')
plt.show()