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_Marker(CGマーカーと呼ばれます)の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軸についての剛体の慣性モーメントおよび慣性乗積を定義します。これらの値の詳細については、コメント4~9をご参照ください。
属性inertia_xx、inertia_yy、inertia_zz、inertia_xy、inertia_yz、inertia_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を指定します。この属性は、MotionSolveとAcuSolveの間で連成シミュレーションを実行する場合にのみ使用されます。 18
例
<Body_Rigid
id = "1"
cg_id = "0"
isground = "TRUE"
/>
<Body_Rigid
id = "2"
cg_id = "21"
isground = "FALSE"
/>
<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"
/>
<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"
/>
コメント
- Body_Rigidは、デフォルトでは3D空間内で作用しますが、Reference_2DClusterオブジェクト内で平面となるように後で再定義できます。
- 全体座標系は、isground = "TRUE"という属性を持つ特別な移動不可のBody_Rigid上に固定されています。このボディは“グラウンドボディ”と呼ばれます。これは、絶対空間内に固定され、全体座標系の原点と向きを定義します。
- Body_Rigidには、Post_Graphicオブジェクトを結合できます。グラフィックオブジェクトは、剛体の形状とサイズを可視化するのに役立ちます。これらのオブジェクトは、剛体間の一般的な3D接触の定義にも使用できます。
- Body_Rigidが完全に拘束されている場合は、この要素の質量と慣性にゼロの値を指定できます。例えば、この6つの自由度すべてが代数的な関係によって何らかの方法で定義されている場合です。このようなボディは“ダミーボディ”と呼ばれます。これらの唯一の目的は、他のモデリングエンティティを相互に結合することです。
- ボディにゼロでない質量が付与されている場合は、そのボディにCGマーカーが割り当てられる必要があります。
- MotionSolveでは、大回転を表現するためにオイラー角は使用されません。そのため、3D回転を定義する角度が一意ではないという“オイラー角の特異点”の問題が発生しません。
- 項Ixx,Iyy, Izz ,
Ixy, Iyz, Izxは次のように定義されます:
(1) - 慣性マトリクスは、Ixx,Iyy, Izz ,
Ixy, Iyz, Izxについて次のように定義されます:
(2) - 慣性マトリクスは正定値である必要があります。正定値にすることにより、慣性マトリクスは以下の特性を満たします:
- Iの固有値はすべて正の実数です。これらはボディの主慣性モーメントです。
- Iの固有値は実数で、固有ベクトルは直交します。これらはボディの主軸です。
- 3x3のマトリクスFがボディの固有ベクトルを表している場合は、次のようになります:
(3) Ix, Iy, Iz は、主慣性モーメントです。
- 主慣性モーメントは、“三角不等式”を満たしている必要があります。
(4) - 主慣性モーメントと質量mは、次の関係で関連付けられています:
(5) Rx, Ry, Rz は、それぞれx、y、z方向の断面回転半径です。
断面回転半径には、剛体内の質量分布に関する情報が含まれています。これらは、剛体の物理的寸法に関連しています。
- ダミーボディを定義する際は、物理的に意味のある質量および慣性プロパティを使用してください。鋼鉄製のダミーボディを定義する場合、物理的に現実的なダミーボディのプロパティは以下のとおりです:
- 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
- 初期角速度を選択的に適用することはできません。すべて適用されるか、いずれも適用されないかのどちらかです。
- isgroundが"TRUE"の場合、質量 / 慣性および初速度のすべての属性は無視されます(指定されている場合)。
- システム全体に対して指定された初期条件の総数が、自由度の数を超えることはできません。初期条件の数が自由度の数を上回ると、MotionSolveは、拘束条件と一致するように、初期条件の一部またはすべてを変更する場合があります。
初速度は、Jointlnitialvel_Trans、Jointlnitialvel_Trans、Jointlnitialvel_Cylの各カードを使用して指定することもできます。
下記の単振り子について考えてみましょう。振り子ボディ(赤で表示)は、回転ジョイントによって全体座標系の原点で回転され、全体座標系の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つ以上を変更します。
- 次の表に、一般的に生じるソリッド形状の慣性モーメントを示します。
- 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属性とこれらの値を無視します。