Jump to content
Sign in to follow this  
Kosuke IKEDA

カスタムブロックでモデル化を行う(C++、OML、Modelica)

Recommended Posts

Altair ActivateはC++、OML(Altair Compose / Matlab)、Modelica言語のほか、バージョン2019からはSpice言語のブロックを提供しています。

今回は、C++、OML、Modelica言語の3つの使い方を紹介します。

題材は1Dモデリング&システムシミュレーション入門で作成したDCモータとします。

先の例題では、DCモータをシグナルブロック、Modelicaブロック、Modelicaブロック+MotionSolveの3通りでモデル化しましたが、

今回は、さらにカスタムブロックの言語3通りでモデル化したいと思います。

 

まずは、Altair ComposeやMatlabで採用されているOMLでモデル化します。

高次の微分はすべて一階微分に変換し、微分項をすべて左辺に整理します。

微分項の数=状態変数の数となり、この状態変数を数値積分することで、解を得ます。

1DシミュレーションツールAltair Activate : http://solidthinking.jp/product/activate/

 

 

customblock.zip

Share this post


Link to post
Share on other sites

最後に、Modelica言語を用いたカスタムブロックの作成方法を紹介します。

Modelica言語の特徴は、A=Bが代入式ではなく、等式として扱われる点です。

したがって、A=Bと書いても、B=Aと書いても、同じ結果が得られます。

OMLやC++のように微分項を左辺に整理する必要はありません。

みなさまが立てた微分方程式をそのまま記述するだけで、解が得られます。状態変数も気にする必要はありません。

ただし、高次微分の演算式はありませんので、一階微分にだけは変換してください。

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×