分割ソルバーの仕組みについて
このトピックでは、分割ソルバーをもつ非線形電気機械回路の例を使用して、分割ソルバーの機能を詳細に見ていきます。異なったタイプの分割とその方程式について調べ、分割ソルバーがそれらを解決してシミュレーションを高速化する方法を説明します。
分割ソルバーをもつ非線形電気機械回路のモデル例を開くために、MATLAB® コマンド ウィンドウに「
ssc_nonlinear_electromechanical_circuit
」と入力します。モデル統計を表示するために、モデル ウィンドウの [デバッグ] タブで、[Simscape]、[統計ビューアー] をクリックします。必要に応じて、ビューアー ウィンドウのツール バーにある [更新] ボタンをクリックして、ビューアーにデータを取り込みます。
[分割数] ノードを展開します。
ソルバーによってシステムが 3 つに分割されていることがわかります。最初の分割は前進オイラー法を使用して解決され、他の 2 つの分割は後退オイラー法を使用して解決されます。
各分割ノードの下で [変数の数] を選択すると、その分割に属する変数の名前が表示されます。
Partition 1 は変数
Inertia.w
を所有しており、これは Inertia ブロックの回転速度を表します。Partition 2 は
Diode.v
とSensing.Ideal Rotational Motion Sensor.phi
を所有し、Partition 3 はInertia.t
を所有しています。各分割には、その所有する状態変数の値を更新する役割があります。統計ビューアーには、各分割の方程式へのリンクも含まれています。
たとえば、Partition 1 で [方程式の数] を選択し、[ソース] で
ssc_nonlinear_electromechanical_circuit/Inertia
リンクをクリックすると、Inertia ブロックのソース コードが MATLAB エディターで開き、次の方程式をポイントします。t == inertia * w.der;
同様に、他の分割の方程式も表示できます。
分割ソルバーはこれらの方程式をすべて組み合わせて、モデルのシミュレートに必要な方程式系を生成します。
ここで、Sensor.phi は変数 Sensing.Ideal Rotational Motion Sensor.phi
の略です (方程式系の表示を簡略にするために使用)。m0
は Diode ブロックの方程式に由来する boolean で、そこでは Diode.v
が [順電圧] と比較されます。
if v > Vf i == (v - Vf*(1-Ron*Goff))/Ron; else i == v*Goff; end
この方程式系を統計ビューアーのデータと比較すると、この系の最初の行が Partition 3 にあることがわかります。これは、Partition 3 が Inertia.t
状態変数を所有しているためです。同様に、2 番目と 3 番目の行は Partition 2 にあり、4 番目の行は Partition 1 にあります。
分割の方程式のタイプは、所有されている状態が関わる項によってのみ決まり、接続関数の影響は受けません。たとえば、Partition 3 では、接続関数の項に非線形性があるにもかかわらず [方程式のタイプ] に [線形時不変] と表示されます。これは、所有されている状態については線形時不変であるためです。
シミュレーション中に、分割ソルバーは統計ビューアーでのリストと同じ順序 (方程式系で下から上へ) で、指定された方法 (前進オイラーまたは後退オイラー) を使用して分割を解決します。ソルバーは、各分割の解決後に取得された、更新された状態の値を使用して上流の分割の状態更新を実行します。