バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
OpenModelicaを構成するのツール群の説明。
- OpenModelica Compiler (OMC)
- Cコード生成、コンパイル
- OpenModelica Connection Editor (OMEdit)
- グラフィックエディタ
などなど。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
OpenModelicaのツール群

前回書いたOpenModelicaツール群を再度列挙しておこう。
- OpenModelica Compiler (OMC)
- OpenModelica Connection Editor (OMEdit)
- OpenModelica Shell (OMShell)
- OpenModelica Notebook (OMNotebook)
- OpenModelica Python Interface (OMPython)
- OpenModelica Matlab Interface (OMMatlab)
- Modelica Development Tooling (MDT)

上から順番に説明していく感じかな?

うん。
その流れで行こう。
OpenModelica Compiler (OMC)

まずは「OpenModelica Compiler (OMC)」。
名前の通りコンパイラになる。

なのだが、
直接実行用のオブジェクトが生成されるわけではない。

え?そうなの?
JavaみたいなVMが居るとか?

単純にC言語に変換してくれるイメージ。
そのC言語をビルドしてシミュレーション実行用の実行オブジェクトが生成されるって流れだね。

なんかSimulinkのアクセラレータモードみたいな感じか。
あれも確か高速化のために内部でC言語を出力してたと思う。

その振舞は厳密にはクラシックアクセラレータモードだね。
最近のアクセラレータモードはC言語までは生成せずに高速に動作するインタプリタ用コードへの変換にしているみたいだ。
アクセラレータ モード:既定では、アクセラレータ モードは Just-in-Time (JIT) アクセラレーションを使用して、C コードや MEX ファイルを生成せずにメモリ内に実行エンジンを生成します。モデルをクラシック アクセラレータ モードに戻すこともできます。そうすると、Simulink がコードを作成してそれを C-MEX S-Function にリンクします。
MathWorksヘルプセンター(https://jp.mathworks.com/help/simulink/ug/how-the-acceleration-modes-work.html)

いつの間にか進化してた!!

まぁそういう意味ではOpenModelicaもデバッグ目的でインタプリタ用コードを生成するパターンもあるようだけど。

うーん。なかなか高度なことをやってるんだな。
OpenModelica Connection Editor (OMEdit)

次は「OpenModelica Connection Editor (OMEdit)」
これは各モデルをVisual的に接続するエディタだね。
Simulinkっぽいヤツって言えば伝わり易いかな。

あー、そういうのがあるとやり始めの抵抗感が少なくなるよねー。

そうだね。
言語だけでも動作はするんだけど、
なかなかイメージ湧かないからね。
こういったグラフィックエディタがあると教える方も楽できる。

余談としてはC++/Qtの環境で作られたもので、
Windows、Linux、Macの環境上で同一のユーザインターフェースで操作できる。

そういうのもありがたいよねー。
まとめ

まとめだよ。
- OpenModelica Compiler (OMC)はコンパイラ。
- C言語を生成する。
- インタプリタ用言語を生成してデバッグ動作を実現。
- OpenModelica Connection Editor (OMEdit)
- グラフィックエディタ。
- C++/Qtで作成されているためマルチプラットフォーム。
バックナンバーはこちら。
コメント