スパース モデルの基礎
モデル オブジェクト
sparss
オブジェクトと mechss
オブジェクトを使用して、スパースな 1 次システムと 2 次システムをそれぞれ表します。このようなスパース モデルは有限要素解析 (FEA) から発生し、構造解析、流体の流れ、熱伝達、電磁などの分野で役立ちます。FEA には有限要素法 (FEM) を使用した問題の解析が含まれます。この方法では、大規模なシステムが多数の小さいコンポーネントまたは有限要素 (FE) に分割され、その後、個別に解析されます。これらの多数のコンポーネントを組み合わせると大規模なスパース モデルになり、ss
などの従来の密なモデル オブジェクトで表現するには計算量が多く、非効率的です。
スパース行列は大部分がゼロの double または logical データの効率的なストレージを提供します。非スパース行列 (密行列) は、値に関係なく個々の要素をメモリに保存しますが、スパース行列は 0 以外の要素とその行インデックスだけを保存します。このため、スパース行列を使用すると、データ ストレージに必要なメモリ量を大幅に削減できます。詳細については、スパース行列の計算上の利点を参照してください。
次の表は、表現できるスパース モデルのタイプを示しています。
モデル タイプ | 数学的表現 | モデル オブジェクト |
---|---|---|
連続時間スパース 1 次モデル | | sparss |
離散時間スパース 1 次モデル | | sparss |
連続時間スパース 2 次モデル | | mechss |
離散時間スパース 2 次モデル | | mechss |
sparssdata
および mechssdata
を使用してスパース形式のモデル行列にアクセスできます。spy
コマンドを使用して 1 次および 2 次両方のモデル行列のスパース性を可視化することもできます。
また、任意の非 FRD モデルを sparss
または mechss
オブジェクトにそれぞれ変換することもできます。逆に、full
コマンドを使用すると、スパース モデルを密度の高いストレージ ss
に変換できます。大規模なスパース モデルでは、密度の高いストレージに変換するとメモリ使用量が大きくなりパフォーマンスが低下するため推奨されません。
スパース モデルの組み合わせ
信号ベースの接続
モデルの相互接続にリストされている標準の信号ベースの接続はすべて、スパース モデル オブジェクトでサポートされています。信号を使用する相互接続モデルでは、制御システム用のモデルを作成できます。制御システムは、フィードバック構成で接続されているプラントやコントローラーなど、複数の相互接続されたコンポーネントを含んでいるブロック線図として概念化できます。モデル演算または相互接続コマンドを使用して、これらの各コンポーネントのモデルを 1 つのモデルに統合し、ブロック線図で全体を表現します。
sparss
モデルの接続の直列接続とフィードバック接続では、内部信号を取り除くと、A
行列に望ましくない非スパース要素が発生します。これを回避するために、A
のスパース性に影響しない信号のみが取り除かれ、残りの信号は状態ベクトルに追加されます。通常、これにより、A
行列に次の図に示すブロック矢印構造がある相互接続の微分代数方程式 (DAE) モデルが生成されます。
ここでは、各対角ブロックはスパース モデルのサブコンポーネントです。最後の行と列は Interface
グループと Signal
グループを組み合わせてコンポーネント間のすべての結合と接続を取得します。
2 次 mechss
モデル オブジェクトに対しても同様の規則が適用されます。showStateInfo
を使用して、コンポーネント、インターフェイス、および信号に対する状態ベクトルの分割の概要を出力できます。
xsort
コマンドを使用して、状態の分割に基づいて状態を並べ替えます。並べ替えられたモデルでは、すべてのコンポーネントが最初に表示され、インターフェイスが続き、その後にすべての内部信号の単一グループが続きます。
物理結合
interface
コマンドを使用して mechss
モデルのコンポーネント間の物理的結合を指定できます。interface
は "デュアル アセンブリ" 形式を使用し、自由度 (DoF) のグローバル セットが保持され、インターフェイスにおける結合制約を記述することで、アセンブリが作成されます。サブ構造体 S1 の DOF N1 とサブ構造体 S2 の DOF N2 間の剛結合の場合は、次が含まれます。
変位の一致: q(N1) = q(N2)
作用/反作用の原理: g(N1) + g(N2) = 0。ここで、g(N1) は S1 に S2 が及ぼす力、および g(N2) は S2 に S1 が及ぼす力です。
これらの制約は、次の方程式に集約できます。
ここで、g はインターフェイスの力のベクトル、H は適切な DOF 選択行列です。
interface
コマンドを使用して DOF 間の非剛結合を指定することもできます。
詳細については、interface
およびモデル コンポーネントの剛体アセンブリを参照してください。
タイプが異なるモデルの組み合わせ
次の優先順位ルールは、タイプが異なるモデルを組み合わせるときに適用されます。
例については、mechss
のリファレンス ページを参照してください。
時間領域解析
時間領域および周波数領域解析にリストされている標準の時間領域解析関数はすべて、sparss
モデル オブジェクトと mechss
モデル オブジェクトでサポートされています。
スパース モデルに対する時間領域応答関数を使用する場合は、最終時間または時間ベクトルを指定する必要があります。以下に例を示します。
tf = 10; step(sys,tf) t = 0:0.001:1; initial(sys,x0,t)
時間応答関数は、特に大規模なスパース モデル用に開発されたカスタムの固定ステップ DAE ソルバーに依存します。DAE ソルバー タイプを構成し、sparss
モデル オブジェクトと mechss
モデル オブジェクトの SolverOptions
プロパティを使用することで並列計算を有効化できます。各入力チャネルの応答は並列でシミュレーションされるため、並列計算は多入力モデルに対する step
または impulse
応答シミュレーションを加速するために使用できます。並列計算の有効化には Parallel Computing Toolbox™ ライセンスが必要です。
使用可能なソルバー オプションを、次の表に示します。
DAE ソルバー | 説明 | 使用方法 |
---|---|---|
'trbdf2' [2] | 精度が o(h^2) の固定ステップ ソルバー。ここで、h はステップ サイズです。'trbdf2' は 'hht' より 50% 計算量が多くなります。これは sparss モデルと mechss モデル両方に対する既定の DAE ソルバー オプションです。 | sparss モデルと mechss モデルの両方で使用できます。 |
'trbdf3' | 精度が o(h^3) の固定ステップ ソルバー。'trbdf3' は 'trbdf2' より 50% 計算量が多くなります。 | sparss モデルと mechss モデルの両方で使用できます。 |
'hht' [1] | 精度が o(h^2) の固定ステップ ソルバー。ここで、h はステップサイズです。'hht' は最速ですが、システムのインパルス応答など、初期の加速度が高いと問題が発生する場合があります。 | mechss モデルでのみ使用可能です。 |
並列計算とソルバーの選択を有効にするには、次の構文を使用します。
sys.SolverOptions.UseParallel = true; sys.SolverOptions.DAESolver = 'trbdf3';
例については、片持ちビームの線形解析を参照してください。
周波数領域解析
時間領域および周波数領域解析にリストされている標準の周波数領域解析関数はすべて、sparss
モデル オブジェクトと mechss
モデル オブジェクトでサポートされています。周波数応答計算の場合、並列計算を有効にすると、使用可能な複数のワーカー間で一連の周波数が分散され、応答計算が高速化されます。並列計算の有効化には Parallel Computing Toolbox ライセンスが必要です。
スパース モデルに対する周波数応答関数を使用する場合は、周波数ベクトルを指定する必要があります。以下に例を示します。
w = logspace(0,8,1000); bode(sys,w) sigma(sys,w)
例については、片持ちビームの線形解析を参照してください。
連続と離散の変換
c2d
、d2c
および d2d
を使用して連続時間と離散時間の間の変換を行い、sparss
モデルをリサンプリングできます。次の表に、sparss
モデルに使用可能な方法を示します。
メソッド | 説明 | 使用方法 |
---|---|---|
'tustin' | 双一次 (Tustin) 近似 | 関数 c2d 、d2c および d2d で使用できます。 |
'damped' | TRBDF2[2]式に基づいて減衰された (Tustin) 近似。'tustin' メソッドとは対照的に、このメソッドでは減衰が無限大に提供されます。つまり、高周波数のダイナミクスはフィルターで除外され、離散モデルで z = -1 に近いモードの累積に寄与しません (数値的不安定性の原因)。 | c2d でのみ使用できます。 |
'tustin'
メソッドで c2d
、d2c
、および d2d
を使用して連続時間と離散時間の間の変換を行い、mechss
モデルをリサンプリングできます。'tustin'
メソッドは Tustin 離散化の 2 次形式を計算します。これは、mechss
モデルと同等の 1 次 sparss
に Tustin を適用することと等価です。対称性が維持されるため、モーダル近似にはこの形式の方が適しています。 (R2024a 以降)
スパース線形化
Simulink モデルの線形化
Descriptor State-Space (Simulink) または Sparse Second Order ブロックがある場合、Simulink® モデルからスパース線形化モデルを取得できます。
Sparse Second Order ブロックは常に
mechss
モデルに線形化されるように構成されます。その結果、線形化されたモデル全体は、このブロックが存在する場合に 2 次スパース モデルになります。Descriptor State-Space (Simulink) ブロックで [スパース モデルに線形化する] オプションをオンにして
sparss
モデルを線形化します。これは、Descriptor State-Space (Simulink) でLinearizerToSparse
パラメーターを'on'
に設定して実行することもできます。既定では、[スパース モデルに線形化する] ボックスはオフになっていて、LinearizerToSparse
は'off'
です。ブロックレベルのLinearizeToSparse
設定は、SCDBlockLinearizationSpecification
ブロック パラメーターまたはlinearize
(Simulink Control Design) に対するblocksub
入力のいずれかを使用してブロックの置換を指定すると無視されます。
線形化ワークフローには、SimulinkControl Design™ ソフトウェアが必要です。
例については、スパース 2 次モデル オブジェクトへの Simulink モデルの線形化を参照してください。
構造モデルまたは熱 PDE モデルの線形化
関数 linearize
(Partial Differential Equation Toolbox) を使用して、構造モデルまたは熱 PDE モデルからスパース線形化モデルを取得できます。
構造解析モデルの場合、
linearize
はmechss
モデルを抽出。熱解析モデルの場合、
linearize
はsparss
モデルを抽出。
linearizeInput
(Partial Differential Equation Toolbox) を使用して、PDE モデル内の境界条件、負荷、または内部熱源について線形化モデルの入力を指定します。linearizeOutput
(Partial Differential Equation Toolbox) を使用して、セル (3 次元ジオメトリの場合のみ)、面、エッジ、頂点などのジオメトリの領域について線形化モデルの出力を指定します。
線形化ワークフローには、Partial Differential Equation Toolbox™ ソフトウェアが必要です。
例については、片持ちビームの線形解析と音叉の線形解析を参照してください。
モデル次数の低次元化
R2023b 以降
スパース状態空間モデルの低次の近似を計算するには、関数 reducespec
を使用します。reducespec
は Control System Toolbox™ ソフトウェアにおけるモデル次数の低次元化ワークフローのエントリ ポイントです。完全なワークフローについては、Task-Based Model Order Reduction Workflowを参照してください。
このソフトウェアでは、以下の手法を使用したスパース モデルの次数の低次元化がサポートされています。
平衡化打ち切り — 寄与度の低い状態を破棄して低次の近似を得る。
モーダル打ち切り — 望ましくないモードを破棄して低次の近似を得る。
例については、SparseBalancedTruncation
、SparseModalTruncation
、およびSparse Modal Truncation of Linearized Structural Beam Modelを参照してください。
その他のサポートされる機能
また、以下の機能が現在、スパース モデルでサポートされています。
制限
以下の操作は現在、スパース モデルでサポートされていません。
極/零点および安定余裕の計算
補償器の設計および調整
full
コマンドを使用して小規模なスパース モデルを密度の高いストレージ ss
に変換し、前述の操作を実行します。大規模なスパース モデルで密度の高いストレージに変換すると利用可能なメモリが飽和し、パフォーマンスが大幅に低下する場合があるため、推奨されません。
スパース線形化には次の制限があります。
linearize
(Simulink Control Design) オプションBlockReduction
を'off'
に設定すると、モデルは常に密度の高いss
モデルに線形化されます。これは、この場合、ブロックの置換が無効になるためです。スパース線形化は、調整可能なモデルまたは不確かさをもつモデルに関連するブロックの置換と互換性がありません。
genss
モデルまたはuss
(Robust Control Toolbox) モデルに線形化する場合、[スパース モデルに線形化します] オプションをオフにしなければなりません。Descriptor State-Space (Simulink) または Sparse Second Order ブロックが存在する場合、スナップショットの線形化は動作しない可能性があります。スナップショットの線形化にはシミュレーションが必要なため、シミュレーション機能は現在 Descriptor State-Space (Simulink) ブロックと Sparse Second Order ブロックに制限されています。
参照
[1] H. Hilber, T. Hughes & R. Taylor. " Improved numerical dissipation for time integration algorithms in structural dynamics." Earthquake Engineering and Structural Dynamics, vol. 5, no. 3, pp. 283-292, 1977.
[2] M. Hosea and L. Shampine. "Analysis and implementation of TR-BDF2." Applied Numerical Mathematics, vol. 20, no. 1-2, pp. 21-37, 1996.
参考
sparss
| mechss
| showStateInfo
| getx0
| full
| sparssdata
| mechssdata
| xsort
| interface
| spy
| Descriptor State-Space (Simulink) | Sparse Second Order