Constraint: CVSF

Model ElementConstraint_CVSFは、高次対偶拘束を定義します。一方のボディ上の曲線が、もう一方のボディに固定されたサーフェス上をスライドします。この曲線は、このサーフェスからリフトオフすることはできません。

フォーマット

<Constraint_CVSF
     id             =     "integer"     
     label          =     "Name of Constraint_CVSF element"
     i_marker_id    =     "integer"  
[ 
     i_disp_xo      =     "real"     
     i_disp_yo      =     "real"     
     i_disp_zo      =     "real"  
]     
     curve_id       =     "integer"     
     j_marker_id    =     "integer"  
[ 
     j_disp_xo      =     "real"     
     j_disp_yo      =     "real"     
     j_disp_zo      =     "real"  
]     
     surface_id     =     "integer" >
/>

属性

id
要素識別番号(整数 > 0)。この番号は、すべてのConstraint_CVSF要素の中で一意です。
label
Constraint_CVSF要素の名前。
i_marker_id
曲線を定義するための座標系として機能するReference_Markerを指定します。このReference_Markerが含まれているボディのタイプは、弾性、剛性、またはポイントのいずれであってもかまいません。このパラメータは必須です。
i_disp_x0, i_disp_y0, i_disp_z0
曲線上の初期接触ポイントの推測位置を定義します。座標はi_marker_idを基準にして測定され、その座標系で定義されます。このパラメータは省略可能です。 2
curve_id
曲線のデータポイントを含むReference_ParamCurveオブジェクトのIDを定義します。このパラメータは必須です。
j_marker_id
サーフェスポイントが定義される座標系を定義するReference_Markerを指定します。サーフェスは、このReference_Markerが含まれているボディに固定され、このボディと共に動きます。曲線が含まれているボディは、弾性体、剛体、またはポイントボディのいずれであってもかまいません。このパラメータは必須です。
j_disp_x0, j_disp_y0, j_disp_z0
サーフェス上の初期接触ポイントの推測位置を定義します。座標はj_marker_idを基準にして測定され、その座標系で定義されます。このパラメータは省略可能です。 5
surface_id
サーフェスのデータポイントを含むReference_ParamCurveオブジェクトのIDを定義します。このパラメータは必須です。

次の図は、サーフェスS上を転がってスライドする薄肉のソリッドディスクBを示しています。
図 1. 曲線-サーフェス間拘束の例

ソリッドBの板厚はごくわずかです。実際には、このソリッドは曲線として表現できます。

  • ボディB上の曲線のIDは201とします。
  • 曲線ポイントは、Reference_Marker 2101を基準にして定義されています。
  • 曲線上の接触ポイントPの座標は、2101の原点を基準にして[0.2, -0.8, 0.1]とします。これらの座標は、2101の座標系で測定されたものです。
  • サーフェスSのIDは101とします。
  • Sのサーフェスポイントは、Reference_Marker 1101を基準にして定義されています。
  • サーフェスS上の接触ポイントPの座標は、1101の原点を基準にして[0.3, -3.0, 1.1]とします。これらの座標は、1101の座標系で測定されたものです。

上記の説明に対応するConstraint_CVSFオブジェクトは次のとおりです:

<Constraint_CVSF
     id            = "1"
     label         = "Name of Constraint_CVSF element"
     i_marker_id   = "2101"
     i_disp_x0     = "0.2"
     i_disp_y0     = "-0.8"
     i_disp_z0     = "0.1"
     curve_id      = "201"
     j_marker_id   = "1101"
     j_disp_x0     = "0.3"
     j_disp_y0     = "3.0"
     j_disp_z0     = "1.1"
     surface_id    = "101" >
/>

コメント

  1. Constraint_CVSFは、高次対偶拘束を定義します。あるボディ上で定義された曲線は、別のボディ上で定義されたサーフェス上を転がってスライドする必要があります。

    この曲線は、Reference_ParamCurveオブジェクトを使用してパラメータで表現されます。曲線ポイントは、Reference_Marker Iの原点を基準にして定義されます。これらのポイントの座標は、Reference_Marker Iに関連付けられた座標系で測定されます。この曲線は、Iを含むボディに対して固定されている必要があり、このボディと共に動きます。

    このサーフェスは、Reference_ParamCurveオブジェクトを使用してパラメータで表現されます。サーフェスポイントは、Reference_Marker Jの原点を基準にして定義されます。これらのポイントの座標は、Reference_Marker Jに関連付けられた座標系で測定されます。このサーフェスは、Jを含むボディに対して固定されている必要があり、このボディと共に動きます。

  2. 属性i_disp_x0i_disp_y0i_disp_z0によって、曲線上の初期接触ポイントが定義されます。このポイント(下図のP0)は、厳密に曲線上に位置している必要はありません。MotionSolveによって、P0に最も近い曲線上のポイントPが検出されます。曲線上の初期ポイントを使用して、曲線パラメータα0の初期値が計算されます。反復プロセスが使用されます。
    図 2. 曲線上の初期接触ポイントP(α0)の計算
  3. 開いた曲線と閉じた曲線の両方がサポートされています。閉じた曲線の場合、最初と最後のポイントは同じである必要があります。
  4. この曲線は、2次まで滑らかである必要があります。言い換えると、すべての箇所の曲線パラメータに関して、一意的に定義された1次導関数と2次導関数を有している必要があります。滑らかでない曲線は数値的な問題を生じさせます。
  5. 属性j_disp_x0j_disp_y0j_disp_z0によって、サーフェス上の初期接触ポイントが定義されます。このポイント(下図のP0)は、厳密にサーフェス上に位置している必要はありません。MotionSolveによって、P0に最も近い曲線上のポイントPが検出されます。サーフェス上の初期ポイントを使用して、サーフェスパラメータu0とv0の初期値が計算されます。反復プロセスが使用されます。
    図 3. サーフェス上の初期接触ポイントP(u0、v0)の計算
  6. このサーフェスは、2次まで滑らかである必要があります。言い換えると、すべての箇所のサーフェスパラメータに関して、一意的に定義された1次導関数と2次導関数を有している必要があります。滑らかでないサーフェスは数値的な問題を生じさせます。
  7. 開いたサーフェスと閉じたサーフェスの両方がサポートされています。サーフェスは、いずれかのパラメータで閉じていても、両方のパラメータで閉じていてもかまいません。
  8. Constraint_CVSFでは、曲線またはサーフェスに対して指定されたデータの範囲内に接触ポイントが常に収まることは保証されません。この要件を満たすためには、境界における追加の力を定義する必要があります。
  9. CVSF関数を使用して、接触ポイントにおける任意の方向の反力の成分を抽出できます。
  10. Constraint_CVSFでは、リフトオフは許可されません。反力を調べて、ポイントフォロワーが曲線からリフトオフする傾向があるかどうかを判断できます。接触ポイントにおけるサーフェスまたは曲線の法線に沿った反力の成分が正の値である場合、“接触”力は反発する方向に働きます。この値が負の場合、“接触”力は引き寄せる方向に働くため、この拘束が適用されていなければ、ボディは曲線から離れていたと推測されます。
  11. “引き寄せる”反力が確認された場合は、リフトオフが許可されるForce_Contactオブジェクトを使用してサブシステムをモデル化することを検討してください。