Constraint: SFSF

Model ElementConstraint_SFSFは、高次対偶拘束を定義します。この拘束の内容は、一方のボディ上のサーフェスが、もう一方のボディ上のサーフェス上をスライドするというものです。サーフェスは、一意の接触ポイントを有している必要があります。

フォーマット

<Constraint_SFSF
     id            = "integer"     
     label         = "Name of Constraint_SFSF element"
     i_marker_id   = "integer"     
     i_surface_id  = "integer"     
     i_disp_x0     = "real"     
     i_disp_y0     = "real"     
     i_disp_z0     = "real"     
     j_marker_id   = "integer"     
     j_surface_id  = "integer"     
     j_disp_x0     = "real"     
     j_disp_y0     = "real"     
     j_disp_z0     = "real" 
</Constraint_SFSF>

属性

id
要素識別番号(整数 > 0)。この番号は、すべてのConstraint_SFSF要素の中で一意です。
label
Constraint_SFSF要素の名前。
i_marker_id
i_surfaceのポイントが定義される座標系を定義するマーカーを指定します。これにより、このサーフェスが“エッチング”されるボディも暗黙的に定義されます。このサーフェスはこのボディと共に動きます。i_marker_idは、どのタイプのボディ(弾性体、剛体、またはポイントボディ)にも属することができます。このパラメータは必須です。
i_surface_id
サーフェス定義を含むReference_ParamSurfaceのIDを指定します。
i_disp_x0, i_disp_y0, i_disp_z0
この3つのパラメータによって、入力コンフィギュレーションにおけるi_surface上の接触ポイントの位置が、i_marker_id座標系で指定されます。これら3つのパラメータはセットで扱われます。3つすべてを指定するか、いずれも指定しないかのどちらかです。これらのパラメータは省略可能です。 8
j_marker_id
j_surfaceのポイントが定義される座標系を定義するReference_Markerを指定します。これにより、このサーフェスが“エッチング”されるボディも暗黙的に定義されます。このサーフェスはこのボディと共に動きます。j_marker_idは、どのタイプのボディ(弾性体、剛体、またはポイントボディ)にも属することができます。このパラメータは必須です。
j_surface_id
サーフェス定義を含むReference_ParamSurfaceのIDを指定します。
j_disp_x0, j_disp_y0, j_disp_z0
この3つのパラメータによって、入力コンフィギュレーションにおけるj_surface上の接触ポイントの位置が、j_marker_id座標系で指定されます。これら3つのパラメータはセットで扱われます。3つすべてを指定するか、いずれも指定しないかのどちらかです。これらのパラメータは省略可能です。 8

図 1 は、連続的に接触している2つのサーフェスIとJを示しています。
図 1. サーフェス間の接触

サーフェスIは、Reference_Marker 1023を基準にして定義されており、サーフェスJは、Reference_Marker 2046を基準にして定義されています。Reference_ParamSurface 123はサーフェスIを定義し、Reference_ParamSurface 246はサーフェスJを定義します。接触ポイントを含むパッチも図1に示しています。

両方のサーフェス上の接触ポイントの初期推測位置が定義されます。サーフェスJ上の初期接触ポイント位置は、2046の座標系で[1.466, 5.66, 0.1]とします。サーフェスI上の接触ポイント位置は、1023の座標系で[-0.522, -0.852, -0.453]とします。

Constraint_SFSFオブジェクトは、次のように定義できます:

<Constraint_SFSF
     id            = "1"
     i_marker_id   = "1023"
     i_surface_id  = "123"
     i_disp_x0     = "1.466"
     i_disp_y0     = "5.66"
     i_disp_z0     = "0.1"
     j_marker_id   = "2046"
     j_surface_id  = "246"
     j_disp_x0     = "-0.522"
     j_disp_y0     = "-0.852"
     j_disp_z0     = "-0.452" >
</Constraint_SFSF>

コメント

  1. Constraint_SFSF要素によって、2つのサーフェスが次のように拘束されます:
    • これらのサーフェスはちょうど1つの接触ポイントを持ちます。
    • 各サーフェスの接触ポイント上の法線は反平行です。
      これを概略的に図2に示します。PiとPjは、それぞれ2つのサーフェスIとJ上の接触ポイントを表しています。NiとNjは、それぞれサーフェスIとサーフェスJの接触ポイント上の法線です。左下のボックスには、接触条件が数式で示されています。
      図 2. 2つのサーフェス間の接触条件
  2. サーフェス間の拘束ではリフトオフは許可されません。拘束がなかった場合にリフトオフが発生すべきであったかどうかは、拘束力を調べることで確認できます。正の値の場合は、力は反発する方向に働きます。負の値の場合は、引き合う力となります。拘束がなければ、これらのサーフェスは離れていたと推測されます。結果で、断続的な接触の正確なシミュレーションが必要となった場合は、Force_ContactまたはForce_TwoBodyオブジェクトを使用して、接触力を直接モデル化する必要があります。
  3. Constraint_SFSFでは、開いたサーフェスと閉じたサーフェスの両方がサポートされています。
  4. 開いたサーフェスには、明確に定義された空間範囲があります。このサーフェスは、αmin <= α <= αmaxかつβmin <= β <= βmaxという範囲でのみ定義されます(αとβはサーフェスパラメータ)。サーフェス間の拘束を適用しているときは、MotionSolveはこの範囲外の解を見つけることができます。接触ポイントがαとβの適正範囲内に常に収まるように、このサーフェスの端部で適切な力を定義する必要があります。
  5. Constraint_SFSF内のサーフェスは、単一の接触ポイントを有している必要があります。凸曲面は、必ず単一の接触ポイントを有します。凸曲面とは、直線と2箇所のみで交差するサーフェスです。凸形状と非凸形状の例を以下の図 3に示します。
  6. 左側の楕円形の閉じたサーフェスは、凸型形状の例です。どのような直線も、このサーフェスとは2箇所で交差します。対照的に、右側の開いたサーフェスは非凸形状です。この形状と3箇所以上で交差する直線を描くことができます。
    図 3. 凸曲面と非凸曲面
  7. Constraint_SFSFに属している拘束の1つが余剰であると宣言されている場合は、モデルが正しいかどうか疑ってください。このような拘束は、想定外の挙動をもたらし、モデルが正しく構築されていないことを示しています。
  8. MotionSolveでは、接触ポイントの位置を正確に特定するための初期検索が実行されます。i_disp_x0i_disp_y0i_disp_z0j_disp_x0j_disp_y0j_disp_z0の各属性は必須ではありませんが、これらがわかっている場合は指定することをお勧めします。