Utility/Data Access
Subroutineボディ接触結果を抽出します。
使用
このサブルーチンは、MotionSolve内のCONTACTPOSTサブルーチンから剛体および弾性体の接触結果を抽出するために使用できます。
フォーマット
- Fortranの呼出し構文
- CALL GET_CONTACT_POST(ID, I_GRA_ID, J_GRA_ID, TYPE, RM, INDEX,
RESULT, NRESULTS, ERRFLG)
- C/C++の呼出し構文
- c_get_contact_post(id, i_gra_id, j_gra_id, type, rm, index, result,
nresults, errflg)
- Pythonの呼出し構文
- [result, errflg] = py_get_contact_post (id, i_gra_id, j_gra_id, type,
rm, index):
属性
- ID
- [整数]
- 結果が必要な接触力モデリング要素(XML内のForce_Contact)のID。
- I_GRA_ID
- [整数]
- Iボディのグラフィック表現のID。ボディが弾性体の場合、この属性は無視され、整数の値が与えられます。
- J_GRA_ID
- [整数]
- Jボディのグラフィック表現のID。ボディが弾性体の場合、この属性は無視され、整数の値が与えられます。
- TYPE
- [文字列]
- 要求された接触結果のタイプ。以下のいずれかを選択します:
- タイプ
- 説明
- "PD"
- 貫入深さ(スカラー)。
- "PD_VEL"
- 貫入率、つまり、貫入深さの最初の1次時間導関数(スカラー)。
- "SLIP_VEL"
- 滑り速度(スカラー)。
- "POS"
- 接触ポイントの位置(ベクトル)。
- "VEL"
- 接触ポイントの速度(ベクトル)。
- "NORMAL_FORCE"
- 垂直接触力(ベクトル)。
- "TANGENTIAL_FORCE"
- 接線接触力(ベクトル)。
- "TOTAL_FORCE"
- 総接触力(ベクトル)。
- "HAS_TRIA_ID"
- 接触内の形状を細分化するかどうかを決定するフラグ(スカラー)。
- "TRIA_ID_I"
- Iボディに接触している三角形または要素のID(接触している三角形/要素の数に基づいて、スカラーまたはリスト)。
- このタイプは、HAS_TRIA_IDがtrueの場合にのみ意味があります。
- "TRIA_ID_J"
- Jボディに接触している三角形または要素のID(接触している三角形/要素の数に基づいて、スカラーまたはリスト)。
- "INTERSECTION_ID"
- 同じ接触パッチに属しているすべての接触ポイントに共通のID。これは、シミュレーションの現在時刻における接触パッチの数を特定するのに便利です。接触パッチの定義については、コメント2をご参照ください。
- 該当する場合は、上記すべての数量がモデル単位で表されます。
-
RM
- [整数]
- 選択した参照フレームに関する接触状態を要求することが可能な参照マーカーのID。この参照フレームは、次のタイプにのみ適用できます:
- タイプ = "POS"
- タイプ = "VEL"
- タイプ = "NORMAL_FORCE"
- タイプ = "TANGENTIAL_FORCE"
- タイプ = "TOTAL_FORCE"
- INDEX
- [整数]
- シミュレーション内の特定の時刻に、IボディとJボディ間の複数箇所で接触が発生する場合があります。INDEX入力は、どの接触についての状態が要求されているのかをMotionSolveに伝えます。INDEXは、1から始まるインデックスで、ユーティリティ関数GET_NCONTACTSによって返される最大値を持つことができます。すなわち、
1 <= INDEX <= GET_NCONTACTS()。
出力
- RESULT
- [倍精度]
- GET_CONTACT_POSTによって返されるスカラー、ベクトル、または値のリスト。
-
NRESULTS
- [整数]
- RESULTのサイズ。これは、Pythonユーティリティ関数を使用している場合は必要ありません。
- ERRFLG
- [論理]
- GET_CONTACT_POSTの呼び出し中にエラーが発生するとtrueになる値。
コメント
- GET_CONTACT_POSTユーティリティ関数は、メッシュベースと半解析(球体-メッシュなど)ベースの両方の接触モデリングに適用できます。ただし、このユーティリティ関数は、古い(OPCODE)衝突エンジンを利用するレガシーモデルではサポートされていません。
- 接触パッチは、ボディIとボディJ間の接触ポイントの集合として定義されます。これらの接触ポイントが相互に結合していない場合は、別々の接触パッチとして見なされます。
図1は、相互に接触している2つの平歯車を示しています。2つの別々の接触パッチが描かれています。

図 1. 接触パッチの図
type = "INTERSECTION_ID"を使用して、シミュレーション内の特定の時間における複数の接触パッチを追跡できます。
注: 交差IDは時間ステップ間で変化する可能性があります。