Body: Rigid

Model ElementBody_Rigidは、MotionSolve内の剛体オブジェクトを定義します。このエンティティには、質量プロパティと慣性プロパティがあります。

フォーマット


< Body_Rigid
     id            = "integer"
 [   label         = "string"             ] 
     cg_id         = "integer"
 [   im_id         = "integer"            ] 
     lprf_id       = "integer"
 [   isground      = { "TRUE"|"FALSE" }   ]     

     mass          = "real"
 [   
     inertia_xx    = "real"
     inertia_yy    = "real"
     inertia_zz    = "real"
     inertia_xy    = "real"
     inertia_yz    = "real"
     inertia_xz    = "real"
 ]
 [   v_ic_x        = "real"
     v_ic_y        = "real"
     v_ic_z        = "real"
     w_ic_x        = "real"
     w_ic_y        = "real"
     w_ic_z        = "real"
     v_ic_x_flag   = {"TRUE"|"FALSE"}     
     v_ic_y_flag   = {"TRUE"|"FALSE"}     
     v_ic_z_flag   = {"TRUE"|"FALSE"}     
     w_ic_x_flag   = {"TRUE"|"FALSE"}     
     w_ic_y_flag   = {"TRUE"|"FALSE"}     
     w_ic_z_flag   = {"TRUE"|"FALSE"}     
     vm_id         = "integer"
     wm_id         = "integer"
 ]
 [
     is_wet_body   = {"TRUE"|"FALSE"}
     cp_inp_id     = "integer" ]
/>

属性

id
要素識別番号(整数 > 0)。これは、すべてのBody_Rigid要素の中で一意の番号です。
label
Body_Rigid要素の名前。
cg_id
Body_Rigidの質量中心に配置されたReference_MarkerCGマーカーと呼ばれます)のIDを指定します。
im_id
慣性マトリクスが指定される座標系と原点を指定するReference_Markerを定義します。このマーカーは、IMマーカーと呼ばれます。im_idは省略可能です。指定しない場合は、デフォルトでcg_idになります。
lprf_id
局所パート参照マーカーを指定するための省略可能な属性。このマーカーは、すべての位置と向きに適用される座標系として使用されます。
isground
定義される剛体がグラウンドボディかどうかを指定します。

"TRUE"の場合、定義される剛体はグラウンドボディです。"FALSE"の場合、定義される剛体はグラウンドボディではありません。

属性isgroundは省略可能です。指定しない場合は、デフォルトで"FALSE"になります。

mass
Body_Rigidオブジェクトの質量を指定します。指定する場合、massは正の数にする必要があります。属性massは省略可能です。剛体が完全に拘束されており、拘束力に注目する必要がない場合、massを指定する必要はありません。省略した場合、質量はゼロと見なされます。
inertia_xx, inertia_yy, inertia_zz, inertia_xy, inertia_yz, inertia_xz
それぞれ、im_idの原点およびx、y、z軸についての剛体の慣性モーメントおよび慣性乗積を定義します。これらの値の詳細については、コメント49をご参照ください。

属性inertia_xxinertia_yyinertia_zzinertia_xyinertia_yzinertia_xzは省略可能です。剛体が完全に拘束されており、拘束力に注目する必要がない場合、これらを指定する必要はありません。指定する場合は、以下のとおりです:

inertia_xx > 0

inertia_yy > 0

inertia_zz > 0

v_ic_x
全体座標系のx軸に沿ったBody_Rigid CGマーカーの初期並進速度を指定します。
v_ic_y
全体座標系のy軸に沿ったBody_Rigid CGマーカーの初期並進速度を指定します。
v_ic_z
全体座標系のz軸に沿ったBody_Rigid CGマーカーの初期並進速度を指定します。
w_ic_x
Body_Rigid CGマーカーのX軸周りの初期回転速度を指定します。
w_ic_y
Body_Rigid CGマーカーのY軸周りの初期回転速度を指定します。
w_ic_z
Body_Rigid CGマーカーのZ軸周りの初期回転速度を指定します。
v_ic_x_flag
x方向の速度が正確にわかっているのか単なる初期推測値なのかを示すブールフラグ。

"TRUE"の場合、この初期条件は、モーション入力と競合しない限り正確に適用されます。

"FALSE"の場合、この初期条件は初期推測値として適用されます。すべての拘束条件が確実に満たされるようにするため、この初期条件はMotionSolveによって変更される場合があります。

v_ic_y_flag
y方向の速度が正確にわかっているのか単なる初期推測値なのかを示すブールフラグ。

"TRUE"の場合、この初期条件は、モーション入力と競合しない限り正確に適用されます。

"FALSE"の場合、この初期条件は初期推測値として適用されます。すべての拘束条件が確実に満たされるようにするため、この初期条件はMotionSolveによって変更される場合があります。

v_ic_z_flag

z方向の速度が正確にわかっているのか単なる初期推測値なのかを示すブールフラグ。

"TRUE"の場合、この初期条件は、モーション入力と競合しない限り正確に適用されます。

"FALSE"の場合、この初期条件は初期推測値として適用されます。すべての拘束条件が確実に満たされるようにするため、この初期条件はMotionSolveによって変更される場合があります。

w_ic_x_flag
x軸周りの角速度が正確にわかっているのか、単なる初期推測値なのかを示すブールフラグ。
w_ic_y_flag
y軸周りの角速度が正確にわかっているのか、単なる初期推測値なのかを示すブールフラグ。
w_ic_z_flag
z軸周りの角速度が正確にわかっているのか、単なる初期推測値なのかを示すブールフラグ。
vm_id
初期並進速度の参照マーカー。
wm_id
初期角速度の参照マーカー。
is_wet_body
AcuSolveとの連成シミュレーション時に、このボディが、対応する流体モデルから流体荷重を受けるかどうかを指定するブールフラグ。

"TRUE"の場合、AcuSolveのシミュレーションで計算された力とトルクはこのボディの重心に適用されます。

"FALSE"の場合、AcuSolveのシミュレーションで計算された力とトルクはこのボディに適用されません。 18

cp_inp_id
この剛体に適用されるAcuSolveのシミュレーションで計算される力とトルクを含むControl_PlantInput要素のIDを指定します。この属性は、MotionSolveAcuSolveの間で連成シミュレーションを実行する場合にのみ使用されます。 18

次の1つ目の例では、グラウンドボディの指定を示しています。
<Body_Rigid
     id                  = "1"
     cg_id               = "0"
     isground            = "TRUE"
 />
次の2つ目の例では、質量と慣性のプロパティがゼロである“ダミーボディ”の指定を示しています。
<Body_Rigid
      id                 = "2"
      cg_id              = "21"
      isground           = "FALSE"
 />
3つ目の例では、質量はあるが慣性がないボディの指定を示しています。これらはデフォルトではゼロになります。慣性が指定されていないため、このモデリングでは、このボディを角度方向に拘束することが必要になります。
<Body_Rigid
     id                  = "2"
     cg_id               = "21"
     im_id               = "21"
     isground            = "FALSE"
     mass                = "1.0"
     v_ic_x              = "0."
     v_ic_y              = "0."
     v_ic_z              = "0."
     v_ic_x_flag         = "FALSE"
     v_ic_y_flag         = "FALSE"
     v_ic_z_flag         = "FALSE"
/>
4つ目の例では、質量と慣性の両方のプロパティと共に初期並進速度と初期回転速度を有している剛体の完全な指定を示しています。
<Body_Rigid
    id                   = "2"
    lprf_id              = "1"
    cg_id                = "21"
    im_id                = "21"
    isground             = "FALSE"
    mass                 = "1.0"
    inertia_xx           = "0.0004892316"
    inertia_yy           = "0.0004892316"
    inertia_zz           = "0.0004892316"
    inertia_xy           = "0."
    inertia_yz           = "0."
    inertia_yz           = "0."
    v_ic_x               = "1.0"
    v_ic_y               = "0."   
    v_ic_z               = "0."  
    w_ic_x               = "2.0"
    w_ic_y               = "0."  
    w_ic_z               = "0."  
    v_ic_x_flag          = "FALSE"  
    v_ic_y_flag          = "FALSE"
    v_ic_z_flag          = "FALSE"
    w_ic_flag            = "FALSE"  
/>         

コメント

  1. Body_Rigidは、デフォルトでは3D空間内で作用しますが、Reference_2DClusterオブジェクト内で平面となるように後で再定義できます。
  2. 全体座標系は、isground = "TRUE"という属性を持つ特別な移動不可のBody_Rigid上に固定されています。このボディは“グラウンドボディ”と呼ばれます。これは、絶対空間内に固定され、全体座標系の原点と向きを定義します。
  3. Body_Rigidには、Post_Graphicオブジェクトを結合できます。グラフィックオブジェクトは、剛体の形状とサイズを可視化するのに役立ちます。これらのオブジェクトは、剛体間の一般的な3D接触の定義にも使用できます。
  4. Body_Rigidが完全に拘束されている場合は、この要素の質量と慣性にゼロの値を指定できます。例えば、この6つの自由度すべてが代数的な関係によって何らかの方法で定義されている場合です。このようなボディは“ダミーボディ”と呼ばれます。これらの唯一の目的は、他のモデリングエンティティを相互に結合することです。
  5. ボディにゼロでない質量が付与されている場合は、そのボディにCGマーカーが割り当てられる必要があります。
  6. MotionSolveでは、大回転を表現するためにオイラー角は使用されません。そのため、3D回転を定義する角度が一意ではないという“オイラー角の特異点”の問題が発生しません。
  7. Ixx,Iyy, Izz , Ixy, Iyz, Izxは次のように定義されます:(1)
  8. 慣性マトリクスは、Ixx,Iyy, Izz , Ixy, Iyz, Izxについて次のように定義されます:(2)
    I = ( I x x I x y I x z I x y I y y I y z I z x I y z I z z )
  9. 慣性マトリクスは正定値である必要があります。正定値にすることにより、慣性マトリクスは以下の特性を満たします:
    • Iの固有値はすべて正の実数です。これらはボディの主慣性モーメントです。
    • Iの固有値は実数で、固有ベクトルは直交します。これらはボディの主軸です。
  10. 3x3のマトリクスFがボディの固有ベクトルを表している場合は、次のようになります:(3)
    Φ T I Φ = ( I x 0 0 0 I y 0 0 0 I z )

    Ix, Iy, Iz は、主慣性モーメントです。

  11. 主慣性モーメントは、“三角不等式”を満たしている必要があります。(4)
    I x + I y > I z I z + I x > I y I y + I z > I x
  12. 主慣性モーメントと質量mは、次の関係で関連付けられています:(5)
    I x = m R x 2 I y = m R y 2 I z = m R z 2

    Rx, Ry, Rz は、それぞれx、y、z方向の断面回転半径です。

    断面回転半径には、剛体内の質量分布に関する情報が含まれています。これらは、剛体の物理的寸法に関連しています。

  13. ダミーボディを定義する際は、物理的に意味のある質量および慣性プロパティを使用してください。鋼鉄製のダミーボディを定義する場合、物理的に現実的なダミーボディのプロパティは以下のとおりです:
    • Kg-m単位:mass = 1、 Ix=1E-3, Iy=1E-3, Iz=1E-3
    • Kg-mm単位:mass = 1、 Ix=1E+3, Iy=1E+3, Iz=1E+3
    • lb-in単位:mass = 1、 Ix=1.55, Iy=1.55, Iz=1.55
  14. 初期角速度を選択的に適用することはできません。すべて適用されるか、いずれも適用されないかのどちらかです。
  15. isground"TRUE"の場合、質量 / 慣性および初速度のすべての属性は無視されます(指定されている場合)。
  16. システム全体に対して指定された初期条件の総数が、自由度の数を超えることはできません。初期条件の数が自由度の数を上回ると、MotionSolveは、拘束条件と一致するように、初期条件の一部またはすべてを変更する場合があります。

    初速度は、Jointlnitialvel_TransJointlnitialvel_TransJointlnitialvel_Cylの各カードを使用して指定することもできます。

    下記の単振り子について考えてみましょう。
    図 1.

    振り子ボディ(赤で表示)は、回転ジョイントによって全体座標系の原点で回転され、全体座標系のz軸を中心にした回転が可能になるものとします。振り子の質量中心B*は、ピボットPから距離Lの位置にあります。

    振り子は、その軸が全体座標系のx軸に対して60度の角度を成すように初期定義されており、全体座標系のz軸を中心にして反時計回りに20度 / 秒の速さで回転します。

    このコンフィギュレーションでは、全体座標系におけるB*の初期並進速度は次のように計算できます: (6)

    Vx = -L * ωz * Sin(60d) = -0.8667 * L * ωz

    (7)

    Vy = L * ωz * Cos(60d) = 0.5000 * L * ωz

    このシステムの自由度は1です。したがって、1つの初速度のみを指定できます。Vx、Vy、またはωzを指定できます。距離(PB*) = Lという拘束を課す回転ジョイントは、方程式式 6および式 7を使用して他の速度を自動的に適用します。

    次に、Vx, Vy and ωzの初期値を指定する状況を考えてみましょう。指定した初期値によって条件(1)と(2)が満たされない場合、MotionSolveは、式 6式 7が満たされるように、Vx、Vy、ωzのうち1つ以上を変更します。

  17. 次の表に、一般的に生じるソリッド形状の慣性モーメントを示します。

  18. AcuSolveとの連成シミュレーションでは、流体領域と相互作用する剛体を特定する必要があります。そのためには、is_wet_body属性を"TRUE"に設定することで、“湿った”ボディを特定する必要があります。また、X、Y、Z方向の3つの力と3つのトルクの値を含む有効なControl_PlantInputのIDとして、cp_inp_idを指定する必要があります。これらの力とトルクは、流体荷重として剛体に適用されます。
    注: is_wet_body"TRUE"に指定され、シミュレーションがAcuSolveと連成されていない場合、MotionSolveは、is_wet_bodyおよびcp_inp_id属性とこれらの値を無視します。