SET_GSE_NONZERO_ENTRY

Utility/SetupSET_GSE_NONZERO_ENTRYサブルーチンは、mat_typeによって指定されたヤコビアンマトリクスのゼロ以外のエントリを指定するためにGSESUBと組み合わせて使用します。

使用

GSEのユーティリティ / セットアップユーティリティサブルーチン。

フォーマット

Fortranの呼出し構文
SET_GSE_NONZERO_ENTRY (mat_type, row_idx, col_dix, errflag)
C/C++の呼出し構文
c_set_discrete_interface(mat_type, row_idx, col_dix, errflag)
Pythonの呼出し構文
py_set_gse_nonzero_entry(mat_type, row_idx, col_dix, errflag)

属性

mat_type
[文字列]
マトリクスのタイプ。有効なタイプは、"XX"、"XU"、"YX"、および"YU"です。
row_idx
[整数]
疎エントリの行インデックス。インデックスは1から始まります。
col_idx
[整数]
疎エントリの列インデックス。インデックスは1から始まります。

出力

errflag
[整数]
呼び出しステータスに関する情報。ゼロ以外の値は失敗を意味します。

コメント

  1. すべてのインデックスが1ベースです。(つまり、インデックスは0ではなく1から始まります)。
  2. SET_GSE_NONZERO_ENTRYを使用しない場合は、GSEに関連付けられたすべての導関数マトリクスがフルマトリクスとして扱われます。SET_GSE_NONZERO_ENTRYを使用すると、マトリクスの疎性が向上するため、GSEに大量の状態が含まれている場合のシミュレーション速度を高めることができます。これは、シミュレーション結果(精度)には影響しません。ただし、インデックスを間違ってまたは不完全に指定した場合は、堅牢性とシミュレーション速度が低下する可能性があります。詳細については、コメント4をご参照ください。
  3. GSEに1つの入力、2つの状態、1つの出力があり、状態方程式が以下のように表されるとします:

    stated(1) = input(1)

    stated(2) = states(1)

    output(1) = states(1)

    SET_GSE_NONZERO_ENTRYを使用して、MotionSolveに導関数マトリクス内のどのエントリがゼロ以外の値であるかを伝えることができます。上記ケースでは、該当するゼロ以外のエントリは次のとおりです:

    call SET_GSE_NONZERO_ENTRY ('XU', 1, 1, errflg)

    call SET_GSE_NONZERO_ENTRY ('XX', 2, 1, errflg)

    call SET_GSE_NONZERO_ENTRY ('YX', 1, 1, errflg)

    call SET_GSE_NONZERO_ENTRY ('YU', 0, 0, errflg)

    マトリクス全体がすべて0(つまり、上記ケースのYU)の場合は、行インデックスと列インデックスの両方に0を使用して、それがNULLマトリクスであることをMotionSolveに伝えます。‘XX’マトリクスの2つ目の呼び出しなどを省略すると、MotionSolveGSEXXマトリクスをフルマトリクスとして扱います。

  4. 注意:
    SET_GSE_NONZERO_ENTRYの使用でよく見られる間違いは、正しくない列インデックスまたは行インデックスや、ゼロでないすべてエントリの不完全な指定です。間違いが発生した場合は、GSE導関数マトリクスが正しくないか不完全で、シミュレーションが失敗したり、解析時間が長くなったりします。MotionSolveは、エラーが明らかな場合(インデックスが範囲外など)を除いて、意味のある警告を伴うこれらのエラーを検出できません。GSEに関与する状態が少ない(30未満など)場合や導関数マトリクスが密の場合、SET_GSE_NONZERO_ENTRYを使用するメリットは非常に限定的です。