分割ソルバーの仕組みについて
分割ソルバーの仕組みについて、分割ソルバーをもつ非線形電気機械回路の例で説明します。ソルバーはモデルの分割を作成し、それぞれの分割に最適なソルバーを選択します。統計ビューアー ツールを使用して、モデルが分割ソルバーでどのように分割されるかを解析できます。このツールにより、ソルバーのタイプや方程式のタイプなど、各分割の詳細が提供されます。
モデル例を開きます。
openExample('simscape/NonlinearElectromechanicalCircuitWithPartitioningSolverExample')
モデル統計を表示するために、モデル ウィンドウの [デバッグ] タブで、[Simscape]、[統計ビューアー] をクリックします。[モデルの更新] ボタンをクリックしてビューアーにデータを取り込みます。
[1 次元物理システム] にある [分割] を選択します。ソルバーによってシステムが 3 つに分割されています。1 つの分割では前進オイラー法を使用し、他の 2 つでは後退オイラー法を使用しています。
分割に関する追加の詳細を確認するには、その分割の行を選択します。[変数] タブには、分割内の各変数の変数パスとラベルが表示されます。[方程式] タブには、分割のブロックとコンポーネントが表示されます。
分割内のブロックに移動するには、そのブロックの行を [変数] タブまたは [方程式] タブで選択し、[ブロックを強調表示] ボタンをクリックします。使用可能な場合は、特定の方程式を生成するソース コードに移動することもできます。
[変数] タブで
Inertia.w
を選択し、[ソース コード] をクリックします。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 では、接続関数の項に非線形性があるにもかかわらず [方程式のタイプ] に [線形時不変] と表示されます。これは、所有されている状態については線形時不変であるためです。
シミュレーション中に、分割ソルバーは統計ビューアー ツールのリストと同じ順序で分割を解決します。ソルバーは、各分割の解決後に取得された、更新された状態の値を使用して上流の分割の状態更新を実行します。