MapleSim[RunSimulation] - MapleSim モデルのシミュレーション
|
使い方
|
|
RunSimulation(MCodeStr, MName, duration, opts)
|
|
パラメータ
|
|
MCodeStr
|
-
|
string; シミュレートするモデルの Modelica ソースファイル名または Modelica コード
|
MName
|
-
|
string; シミュレートするモデルの名前
|
duration
|
-
|
(省略可) Or(realcons,realcons..realcons); シミュレーションの時間
|
opts
|
-
|
(省略可) option = value 形式の式; RunSimulation のオプションを指定
|
|
|
|
|
モデルの説明
|
|
•
|
RunSimulation コマンドは、MapleSim モデルをシミュレートします。指定されたモデルのシミュレーション結果 (dsolve/numeric の呼び出しによる算出にしたがう) を表示するプロットを返します。
|
•
|
MCodeStr パラメータは、シミュレーショングラフとして表示したい MapleSim モデルの Modelica ソースを指定します。これを行うには、既存の MapleSim モデルを Modelica ファイル (.mo) にエクスポートして Modelica ソースファイル名を指定するか、あるいは Modelica コードを含む文字列を作成します。
|
|
Modelica コードを含む文字列を作成する場合は、is_immediate 入力オプションを true に設定する必要もあります。一方、Modelica ソースファイル名を指定する場合は、is_immediate オプションを false に設定します。
|
•
|
MName パラメータは、シミュレートするモデルまたはサブシステムを指定します。最上位モデルでも、あるいはモデル内に定義されたサブシステムでもシミュレート可能です。
|
•
|
duration パラメータは、シミュレーション時間を秒単位で指定します。このパラメータが type/realcons のものである場合、開始時間は 0 で、duration の値は終了時間となります。デフォルト値は 0..10 秒です。
|
|
|
オプション
|
|
|
シミュレーションのオプション
|
|
|
適応型ソルバを使用してシミュレーションを実行する際の、正常な積分ステップを実施するための絶対許容誤差の限度。このオプションの値は、adaptiveStepSolver オプションが true に設定されている場合に指定可能です。
|
•
|
adaptiveStepSolver = truefalse
|
|
シミュレーションのサンプリング周期を求めるために dsolve/numeric で適応型ソルバを使用するか、あるいは固定ステップ型ソルバを使用するかを指定します。このオプションを false に設定すると、固定ステップ型ソルバが使用されます。シミュレーション中、サンプリング周期は一定のステップサイズです。ステップサイズを指定するには、stepsize オプションを使用します。また、maxfun オプションは無視されます。このオプションを true に設定すると、適応型ソルバが使用されます。シミュレーション中、ソルバによって算出されるサンプリング周期は変動します。デフォルト値は true です。
|
•
|
evenlyspaced = truefalse
|
|
シミュレーショングラフで時間サンプルを一定間隔にするかどうかを指定します。このオプションを false に設定すると、特定の設定に対応する各部分区間の開始時間および終了時間が、グラフに含められます。デフォルト値は false です。
|
|
積分器による関数呼び出しの最大数。詳しくは、dsolve[maxfun] を参照してください。値 0 は無制限に相当します。adaptiveStepSolver が true に設定されている場合、このオプションは無視されます。デフォルト値は 2*10^6 です。
|
•
|
mbaumgarte = list(nonnegative,nonnegative)
|
mbaumgarte キーワードパラメータは、システムのマルチボディ部分に適用される Baumgarte 拘束安定化パラメータ ([ , ]) を指定します。この値が 0 より大きい場合、位置レベルの拘束がマルチボディシステムから除かれて、Baumgarte 安定化加速拘束に置換されることにより、マルチボディ DAE から純粋な ODE へ効果的に変換されます。デフォルト値は [0,0] です。
•
|
method = ck45, ck45_dae, rkf45, rkf45_dae, rosenbrock, または rosenbrock_dae
|
dsolve/numeric で積分に使用するソルバを指定します。デフォルトは ck45_dae です。
|
シミュレーショングラフにプロットするサンプルの最小数。evenlyspaced が false の場合、この値はグラフに表示されるサンプルの厳密な数です。他方の場合、部分区間の境界にあるサンプルも含められます。デフォルト値は 200 です。
|
|
適応型ソルバを使用してシミュレーションを実行する際の、正常な積分ステップを実施するための相対許容誤差の限度。このオプションの値は、adaptiveStepSolver オプションが true に設定されている場合に指定可能です。
|
|
固定ステップ型ソルバを使用してシミュレーションを実行する際の、サンプリング周期の一定のステップサイズ。このオプションの値は、adaptiveStepSolver オプションが false に設定されている場合に指定可能です。
|
•
|
stiffsolver = truefalse
|
|
シミュレーション結果を計算するのに使用する DAE ソルバ。このオプションを true に設定すると、stiff DAE ソルバ (Rosenbrock 法) が使用されます。このオプションを false に設定すると、non-stiff DAE ソルバ (rkf45 法) が使用されます。デフォルト値は false です。
|
|
|
入力オプション
|
|
•
|
is_immediate = truefalse
|
|
このオプションを true に設定した場合、パラメータ MCodeStr は Modelica ソースコードを含む文字列です (すなわち、単に .mo ファイルの名前ではありません)。デフォルト値は false です。
|
•
|
use_library = truefalse
|
|
このオプションを true に設定した場合、Modelica ライブラリがロードされた後にソースコードが解析されます。指定の Modelica ソースでライブラリのコンポーネントを使用していないなら、このオプションを false に設定してシミュレーション結果の生成を高速化できます。
|
|
|
簡約化オプション
|
|
•
|
simplify = truefalse または tryhard
|
|
システムの方程式をどの程度処理してから返すかを指定します。
|
|
false - 簡約化を行わずに方程式を返します。
|
|
true - システム内の冗長な変数および方程式を取り除いて、システムモデルを簡約化します。
|
|
tryhard - 冗長な変数を削除し、システムの指数を減少させます。デフォルト値は tryhard です。
|
|
|
出力オプション
|
|
•
|
output = symbol または list
|
|
出力のタイプを指定します。この値は、以下の記号のいずれかでも、あるいはそれらの記号のリストでも構いません。リストを指定した場合、該当する記号がそれらの記号の値に置換されたリストが返されます。デフォルト値は plot です。
|
–
|
plot - プロット形式でシミュレーション結果を生成します。環境変数 _EnvMapleSimReturnPlots が true に設定されていない限り、plot の戻り値は NULL です。_EnvMapleSimReturnPlots が true に設定されている場合、対応する値は一連のプロット構造 (output = plot の場合) か、またはプロット構造のリスト (plot が output に割り当てられたリストの 1 要素である場合) となります。
|
–
|
datapoint - データ値の配列としてシミュレーション結果を生成します。システムモデルに指定された 1 プローブごとに、1 列のデータ値があります。returnTimeData オプションを true に設定すると (下記参照)、返されるデータ配列の 1 列目に、追加の時間データを生成することができます。
|
•
|
returnTimeData = truefalse
|
|
output=datapoint と併用すると、出力される配列の 1 列目として時間データが追加されます。デフォルト値は true です。
|
|
|
|
アプリケーションと例題
|
|
MapleSim 例題のディレクトリに配置された Modelica ファイル、BouncingBall.mo を実行します。シミュレートするモデルの名前は Main です。
>
|
mofile := StringTools:-Join([kernelopts('mapledir'), "toolbox", "MapleSim", "data", "examples", "BouncingBall.mo"], kernelopts('dirsep'));
|
>
|
RunSimulation(mofile, "Main", 0..10);
|
Modelica ソースファイルを文字列として作成し、is_immediate オプションを使用します。モデルの名前は test です。
>
|
modelica := "
model test
annotation(probes={x,y}); // specify the signals to plot
Real x,y;
equation
// Create a delayed ramp.
y = if time < 1 then 0 else time-1;
der(x) = y;
end test;":
|
>
|
RunSimulation(modelica, "test", 0..5, is_immediate);
|
|
|