引き続きUser’s Guide(Release v1.22.1)を読んでいきます。
94ページからの内容となります。
前回の記事はこちら。
ModelicaモデルのODEを解くために初期値を与える必要があります。
通常初期値は収束性に影響はないが、非線形性が強い場合は初期値が重要となります。
モデルの初期化について表示するには「-d=initialization」オプションを使います。
下記のようなモデル(piston.mo)が例となります。
-d=initializationオプションを設定すると下記のようになりました。
>> loadFile("piston.mo")
true
"Notification: Automatically loaded package Modelica 4.0.0 due to uses annotation from piston.
Notification: Automatically loaded package Complex 4.0.0 due to uses annotation from Modelica.
Notification: Automatically loaded package ModelicaServices 4.0.0 due to uses annotation from Modelica.
"
>> loadModel(Modelica);
>> setCommandLineOptions("-d=initialization");
>> buildModel(piston);
"[C:/Users/[ユーザ名]/AppData/Roaming/.openmodelica/libraries/Modelica 4.0.0+maint.om/Mechanics/MultiBody/Parts/Body.mo:14:3-15:65:writable] Warning: Parameter body1.r_CM[3] has no value, and is fixed during initialization (fixed=true), using available start value (start=0.0) as default value.
[C:/Users/[ユーザ名]/AppData/Roaming/.openmodelica/libraries/Modelica 4.0.0+maint.om/Mechanics/MultiBody/Parts/Body.mo:14:3-15:65:writable] Warning: Parameter body1.r_CM[2] has no value, and is fixed during initialization (fixed=true), using available start value (start=0.0) as default value.
[C:/Users/[ユーザ名]/AppData/Roaming/.openmodelica/libraries/Modelica 4.0.0+maint.om/Mechanics/MultiBody/Parts/Body.mo:14:3-15:65:writable] Warning: Parameter body1.r_CM[1] has no value, and is fixed during initialization (fixed=true), using available start value (start=0.0) as default value.
[C:/Users/[ユーザ名]/AppData/Roaming/.openmodelica/libraries/Modelica 4.0.0+maint.om/Mechanics/MultiBody/Parts/Body.mo:14:3-15:65:writable] Warning: Parameter body.r_CM[3] has no value, and is fixed during initialization (fixed=true), using available start value (start=0.0) as default value.
[C:/Users/[ユーザ名]/AppData/Roaming/.openmodelica/libraries/Modelica 4.0.0+maint.om/Mechanics/MultiBody/Parts/Body.mo:14:3-15:65:writable] Warning: Parameter body.r_CM[2] has no value, and is fixed during initialization (fixed=true), using available start value (start=0.0) as default value.
[C:/Users/[ユーザ名]/AppData/Roaming/.openmodelica/libraries/Modelica 4.0.0+maint.om/Mechanics/MultiBody/Parts/Body.mo:14:3-15:65:writable] Warning: Parameter body.r_CM[1] has no value, and is fixed during initialization (fixed=true), using available start value (start=0.0) as default value.
Warning: Assuming fixed start value for the following 2 variables:
$STATESET2.x:VARIABLE(start = /*Real*/($STATESET2.A[1]) * $START.revolute1.phi + /*Real*/($STATESET2.A[2]) * $START.revolute11.phi fixed = true ) type: Real
$STATESET1.x:VARIABLE(start = /*Real*/($STATESET1.A[1]) * $START.revolute1.w + /*Real*/($STATESET1.A[2]) * $START.revolute11.w fixed = true ) type: Real
"
piston.moでは4つのジョイントがあるのに対し、1自由度のため回転軸(revolute11)の初期位置と速度を指定する必要があります。
上記の例ではrevolute11の初期位置と速度は他のモデルの初期値によって適切な値にされています。
初期値は別のシミュレーションの結果(.mat)を読み込むことができます。
大きく2つのオプションがあり、1つは初期値を決めるために以前の結果を読み込むという使い方。
初期化がうまくいかなかったり、時間がかかるときに有効ということなのでしょう。
OMEditではシミュレーションのセットアップ>シミュレーションフラグからファイル名とどの時刻を使うかを選択するか、-iif=result.mat, -iit=initialTimeValueを設定します。
2つ目は.matファイルから読み込んだ値を初期値として計算するという使い方。
この場合はシミュレーションのセットアップ>シミュレーションフラグの初期化方法を「none」に設定するか、-iim=noneに設定します。
今回はここまでにします。
チャプター6はこれで終了。
コメント