Altair Twin ActivateはC++、OML(Altair Compose / Matlab)、Modelica言語のほか、バージョン2019からはSpice言語のブロックを提供しています。
今回は、C++、OML、Modelica言語の3つの使い方を紹介します。
題材は1Dモデリング&システムシミュレーション入門で作成したDCモータとします。
先の例題では、DCモータをシグナルブロック、Modelicaブロック、Modelicaブロック+MotionSolveの3通りでモデル化しましたが、
今回は、さらにカスタムブロックの言語3通りでモデル化したいと思います。
OML
まずは、Altair ComposeやMatlabで採用されているOMLでモデル化します。
高次の微分はすべて一階微分に変換し、微分項をすべて左辺に整理します。
微分項の数=状態変数の数となり、この状態変数を数値積分することで、解を得ます。
C++
つづいて、C++になります。
OMLとほとんど同じなので、作業は割愛しています。
Modelica
最後に、Modelica言語を用いたカスタムブロックの作成方法を紹介します。
Modelica言語の特徴は、A=Bが代入式ではなく、等式として扱われる点です。
したがって、A=Bと書いても、B=Aと書いても、同じ結果が得られます。
OMLやC++のように微分項を左辺に整理する必要はありません。
みなさまが立てた微分方程式をそのまま記述するだけで、解が得られます。状態変数も気にする必要はありません。
ただし、高次微分の演算式はありませんので、一階微分にだけは変換してください。
資料、モデルのダウンロードはこちら。
使用ソフト:
複合領域のモデルベース開発ソフトウェア | Altair Twin Activate