Main Content

分割ソルバーの仕組みについて

このトピックでは、分割ソルバーをもつ非線形電気機械回路の例を使用して、分割ソルバーの機能を詳細に見ていきます。異なったタイプの分割とその方程式について調べ、分割ソルバーがそれらを解決してシミュレーションを高速化する方法を説明します。

  1. 分割ソルバーをもつ非線形電気機械回路のモデル例を開くために、MATLAB® コマンド ウィンドウに「ssc_nonlinear_electromechanical_circuit」と入力します。

    Block diagram of the model

  2. モデル統計を表示するために、モデル ウィンドウの [デバッグ] タブで、[Simscape][統計ビューアー] をクリックします。必要に応じて、ビューアー ウィンドウのツール バーにある [更新] ボタンをクリックして、ビューアーにデータを取り込みます。

  3. [分割数] ノードを展開します。

    Statistics Viewer showing the Partitioning details

    ソルバーによってシステムが 3 つに分割されていることがわかります。最初の分割は前進オイラー法を使用して解決され、他の 2 つの分割は後退オイラー法を使用して解決されます。

  4. 各分割ノードの下で [変数の数] を選択すると、その分割に属する変数の名前が表示されます。

    Statistics Viewer showing the variable name for the first partition

    Partition 1 は変数 Inertia.w を所有しており、これは Inertia ブロックの回転速度を表します。

    Partition 2 は Diode.vSensing.Ideal Rotational Motion Sensor.phi を所有し、Partition 3 は Inertia.t を所有しています。各分割には、その所有する状態変数の値を更新する役割があります。

  5. 統計ビューアーには、各分割の方程式へのリンクも含まれています。

    Statistics Viewer showing the equation link for the first partition

    たとえば、Partition 1 で [方程式の数] を選択し、[ソース]ssc_nonlinear_electromechanical_circuit/Inertia リンクをクリックすると、Inertia ブロックのソース コードが MATLAB エディターで開き、次の方程式をポイントします。

    t == inertia * w.der;
    

    同様に、他の分割の方程式も表示できます。

分割ソルバーはこれらの方程式をすべて組み合わせて、モデルのシミュレートに必要な方程式系を生成します。

System of equations

ここで、Sensor.phi は変数 Sensing.Ideal Rotational Motion Sensor.phi の略です (方程式系の表示を簡略にするために使用)。m0Diode ブロックの方程式に由来する 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 では、接続関数の項に非線形性があるにもかかわらず [方程式のタイプ][線形時不変] と表示されます。これは、所有されている状態については線形時不変であるためです。

シミュレーション中に、分割ソルバーは統計ビューアーでのリストと同じ順序 (方程式系で下から上へ) で、指定された方法 (前進オイラーまたは後退オイラー) を使用して分割を解決します。ソルバーは、各分割の解決後に取得された、更新された状態の値を使用して上流の分割の状態更新を実行します。

関連するトピック