OpenModelicaの使い方 User’s Guide解読_17

OpenModelica

引き続きUser’s Guide(Release v1.22.1)を読んでいきます。
87ページからの内容となります。
前回の記事はこちら

チャプター5はOpenModelicaのコンパイラについて紹介です。
詳細は参考資料を見てね、ということで簡単に説明されています。

backenddaeinfoオプションを使うと解く微分方程式について下記のような情報が得られます。

  • 式、変数の数
  • 状態の数
  • 初期化やシミュレーションについての情報

例は下記のようになります。

>> loadFile(getInstallationDirectoryPath() + "/share/doc/omc/testmodels/BouncingBall.mo")
true

>> setCommandLineOptions("-d=backenddaeinfo,stateselection,discreteinfo")
true

>> translateModel(BouncingBall)
true
"Notification: Model statistics after passing the front-end and creating the data structures used by the back-end:
 * Number of equations: 6
 * Number of variables: 6
Notification: Model statistics after passing the back-end for initialization:
 * Number of independent subsystems: 3
 * Number of states: 0 ()
 * Number of discrete variables: 9 (v_new,$PRE.v_new,flying,$PRE.flying,foo,impact,$whenCondition1,$whenCondition2,$whenCondition3)
 * Number of discrete states: 0 ()
 * Number of clocked states: 0 ()
 * Top-level inputs: 0
Notification: Strong component statistics for initialization (13):
 * Single equations (assignments): 13
 * Array equations: 0
 * Algorithm blocks: 0
 * Record equations: 0
 * When equations: 0
 * If-equations: 0
 * Equation systems (not torn): 0
 * Torn equation systems: 0
 * Mixed (continuous/discrete) equation systems: 0
Notification: Model statistics after passing the back-end for simulation:
 * Number of independent subsystems: 1
 * Number of states: 2 (h,v)
 * Number of discrete variables: 7 ($whenCondition3,$whenCondition2,$whenCondition1,flying,impact,v_new,foo)
 * Number of discrete states: 2 (impact,v)
 * Number of clocked states: 0 ()
 * Top-level inputs: 0
Notification: Strong component statistics for simulation (9):
 * Single equations (assignments): 7
 * Array equations: 0
 * Algorithm blocks: 0
 * Record equations: 0
 * When equations: 2
 * If-equations: 0
 * Equation systems (not torn): 0
 * Torn equation systems: 0
 * Mixed (continuous/discrete) equation systems: 0
"

コードはデフォルトではCで生成されるようですが、一部のケースではC++でコード生成することで高速化できるようです。
言語は–simCodeTargetで変更でき、コンパイラがコード生成し、1つの実行体を作ります。

チャプター5はこれくらいですね。。。

コメント

タイトルとURLをコピーしました