Body: Flexible

Model ElementBody_Flexibleは、MotionSolve内の弾性体オブジェクトを定義します。

説明

MotionSolveは、次の2種類の弾性体をサポートしています:
  • 線形弾性体:これは、区分モード合成(CMS)解析を実行することで得られる弾性コンポーネントの表現です。このエンティティには、剛体と同様に質量プロパティと慣性プロパティがあります。また、荷重によって変形可能にする弾性プロパティもあります。この変形は、一連の空間モード形状と時間依存のモード座標を使用して定義されます。このようなボディは線形弾性であるため、非線形変形や“大”変形には対応していません。
  • 非線形有限要素(NLFE)ボディ:これは、弾性コンポーネントの完全に非線形な有限要素表現であり、事前解析なしで作成できます。このエンティティには、CMS弾性体と同様に、質量プロパティと慣性プロパティがあります。このボディの定式化は完全に非線形であるため、このボディは“微小”変形と“大”変形に対応しています。

Body_Flexibleは、拘束、モーション、または適用荷重を任意に組み合わせて使用することで、システムの他の部分に結合できます。これは接触をネイティブにサポートしていません。

線形弾性体

CMS弾性体は3D空間内で作用し、ここで全体的な大きなモーションと微小変形を同時に受けることができます。CMS手法として、Craig-BamptonとCraig-Changの2つのタイプがサポートされています。

すべてのCMSデータは、Reference_FlexData要素内にカプセル化されます。すべてのBody_Flexible要素は、以下を含むReference_FlexData要素を参照します:
  • 選択されたモードの数、剛体プロパティ、取り付け節点の数などの一般情報。
  • 各モードの周波数、固有値、減衰を含むモードデータブロック。
  • 以下を含む節点データブロック:
    • 選択された取り付け節点の座標。
    • 選択された各取り付け節点に対応するモード形状。
    • 弾性体の定義に必要な慣性の不変量を含む慣性データブロック。

すべてのBody_Flexible要素は、局所パート参照フレーム(LPRF)も参照します。これは有限要素モデルで使用される全体座標系であり、Reference_FlexData要素内の情報の座標系としても機能します。

Reference_FlexDataには、弾性体に関するデフォルトの減衰プロパティが含まれています。これらは、弾性体定義内で次の2つの方法でオーバーライドされます:
  • 関数式としてのモード減衰
  • DMPSUBユーザー定義サブルーチン

Body_Flexibleを定義する際に、有限要素メッシュとオプションのスケールファクターを指定できます。この情報を使用して、H3Dアニメーションファイルが生成されます。メッシュデータとアニメーションスケールを含むH3Dファイルは、直接シミュレーションで使用されません。

NLFEボディ

NLFEボディも、CMS弾性体と同様に3D空間内で作用し、ここで全体的な大きなモーションと大変形を同時に受けることができます。NLFEボディの作成と変更は、MotionView内ですべて行うことができます。NLFEボディは、MotionSolveデックでBody_Flexibleとして表現されます。このボディは有限要素コンポーネントと似ているため、MotionViewでコンポーネントの形状および材料プロパティを指定することで、弾性データが決定されます。この情報は、ソルバーのエクスポート時にXMLファイルに書き込まれます。このXMLファイルは、モデルの解析時と結果のポスト処理時にMotionSolveによって使用されます。このXMLファイルの内容は、一般に、次のようなステートメントです:
  • 節点の位置とそれらの勾配を定義する
  • 要素とそのタイプを定義する
  • 弾性コンポーネントのプロパティを定義する
  • 他のすべてのコネクター要素を定義する

NLFEボディの定式化は、座標が常に全体フレームを基準にして定義される、“絶対節点座標法”に基づいています。したがってこのボディは、CMS弾性体とは異なり、局所パート参照フレーム(LPRF)を参照しません。

弾性コンポーネントに対してレイリー減衰を指定できます。この減衰は数値的な性質があるため、このパラメータを使用する際は注意が必要です。値が大きすぎると、解析が不安定になる可能性があります。

MotionViewでNLFEボディに対して定義された結合と形状のプロパティによって、ポストプロセッサでNLFEボディを可視化するためのメッシュが決定されます。アニメーションH3Dを使用して、CMS弾性体と同じように応力、ひずみ、変位を可視化できます。

CMS弾性体のフォーマット

<Body_Flexible
      id                          = "integer"
      label                       = "string"
      lprf_id                     = "integer"
      mass                        = "real"
      inertia_xx                  = "real"
      inertia_yy                  = "real"
      inertia_zz                  = "real"
      inertia_xy                  = "real"
      inertia_yz                  = "real"
      inertia_xz                  = "real"
      cm_x                        = "real"
      cm_y                        = "real"
      cm_z                        = "real"
      h3d_file                    = "string"
      flexdata_id                 = "integer"
      animation_scale             = "real"
      is_user_damp                = "{ TRUE | FALSE }"
   {  cdamp_expr                  = "string"
     |usrsub_dll_name             = "string"
      usrsub_param_string         = "USER([par_1, ..., par_n])"
      usrsub_fnc_name             = "string"
     |script_name                 = "string"
      interpreter                 = "PYTHON"
      usrsub_param_string         = "USER([par_1, ..., par_n])"
      usrsub_fnc_name             = "string"
   }
[[    
      rigidified                  = "{ TRUE | FALSE}"
      geostiff                    = "{ TRUE | FALSE}"
      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"
]]
/>

NLFEボディのフォーマット

<Body_Flexible
      id                          = "integer"
      label                       = "string"
      ref_marker_id               = "integer"
      ancf_file                   = "string"
      rayleigh_damping            = "real"
      num_i_marker                = "integer"
[[
      v_ic_x                      = "real"
      v_ic_y                      = "real"
      v_ic_z                      = "real"
      v_ic_x_flag                 = "real"
      v_ic_y_flag                 = "real"
      v_ic_z_flag                 = "real"
      w_ic_x                      = "real"
      w_ic_y                      = "real"
      w_ic_z                      = "real"
      w_ic_x_flag                 = "real"
      w_ic_y_flag                 = "real"
      w_ic_z_flag                 = "real"
]]
>
< ! -- The area below lists IDs of markers attached to the NLFE body-- >
ID1     ID2     ...     IDn
</Body_Flexible>   

属性

id
要素識別番号(整数 > 0)。

これは、すべてのBody_Flexible要素の中で一意の番号です。

label
Body_Flexible要素の名前。
lprf_id
(CMSのみ)MBSモデル内の有限要素全体座標系を定義するReference_MarkerのIDを指定します。
ref_marker_id

(NLFEのみ)Reference_MarkerのIDを指定します。相対変位、相対速度、および相対力の成分は、ref_marker_idで指定された座標系で表されます。

これは地面参照フレームに設定されています。

mass
(CMSのみ)Body_Flexibleオブジェクトの質量を指定します。CMS弾性体の場合は、弾性コンポーネントを表すCMS H3Dファイルに含まれている情報を使用して、質量が計算されます。
inertia_xx, inertia_yy, inertia_zz, inertia_xy, inertia_yz, inertia_xz
(CMSのみ)それぞれ、lprf_idマーカーの原点およびx、y、z軸についてのCMS弾性体の慣性モーメントおよび慣性乗積を定義します。

inertia_xxinertia_yyinertia_zzinertia_xyinertia_yzinertia_xzの各属性は一般に、CMS弾性体の表現に含まれている情報を使用して計算されます。

指定する場合、inertia_xxinertia_yyinertia_zzは厳密に正の値である必要があります。

cm_x, cm_y, cm_z
(CMSのみ)中心マーカーx、y、z。
h3d_file
(CMSのみ)有限要素メッシュ内のすべての節点を含むファイルの名前を指定します。このファイルは、アニメーションファイルの作成にのみ必要です。ソルバーは解析のためにこのファイルを使用しません。
ancf_file
(NLFEのみ)NLFEボディの形状および材料のプロパティデータを含むXMLファイルの絶対パスまたは相対パスと名前を指定します。
flexdata_id
(CMSのみ)弾性体のCMS表現を含むReference_FlexDataオブジェクトのIDを指定します。
animation_scale
(CMSのみ)モード形状をアニメーション表示するためのスケールファクターを指定します。この情報は、アニメーションファイルの作成にのみ使用されます。ソルバーは解析のためにこのファイルを必要としません。
is_user_damp
(CMSのみ)各モードの減衰係数の指定方法を指定するブール値。"TRUE"を指定した場合は、式またはユーザー定義のサブルーチンを使用して減衰が指定されます。

"FALSE"を指定した場合は、Body_Flexible要素で提供される減衰の式またはユーザー定義サブルーチンのデータがMotionSolveで無視され、Reference_FlexData要素で指定される減衰値が代わりに使用されます。

cdamp_expr
(CMSのみ)各モードの減衰係数を定義する状態依存の式。任意の有効な実行時MotionSolve式を入力として指定できます。このパラメータは、is_user_damp = "TRUE"である場合にのみ使用します。
usrsub_dll_name
(CMSのみ)ユーザーサブルーチンを含むDLLまたは共有ライブラリのパスと名前を指定します。MotionSolveはこの情報を使用して、ユーザーライブラリ内のusrsub_fnc_nameで指定されたサブルーチンを実行時に読み込みます。このキーワードは、is_user_damp = "TRUE"の場合にのみ使用します。
usrsub_param_string
(CMSのみ)データファイルからユーザー定義のサブルーチンに渡されるパラメータのリスト。このキーワードは、type = USERSUBが選択されている場合にのみ使用します。この属性は、すべてのタイプのユーザーサブルーチン / スクリプトに共通です。
usrsub_fnc_name
(CMSのみ)ユーザーサブルーチンDMPSUBの代替名を指定します。
script_name
(CMSのみ)usrsub_fnc_nameで指定されたルーチンを含むユーザー作成スクリプトのパスと名前を指定します。
interpreter
(CMSのみ)ユーザースクリプトが記述されたインタープリタ型言語を指定します。有効な選択肢は、MATLABまたはPYTHONです。
rayleigh_damping
(NLFEのみ)このNLFEボディのレイリー減衰係数の値を指定します。 1
num_i_marker
(NLFEのみ)このNLFEボディに結合されるマーカーの数を指定します。これらのマーカーは、NLFEボディがマルチボディシステムの他の部分と結合できるインターフェースマーカーと考えることができます。

num_i_marker > 0 1

rigidified
(CMSのみ)弾性体から剛体への変換を許可するブールフラグ。このフラグは省略可能です。このフラグのデフォルト値はrigidified = "FALSE"です。 4
geostiff
(CMSのみ)CMS弾性体内の幾何剛性効果のモデル化を許可するブールフラグ。geostiffのデフォルトは"FALSE"です。
注: MotionSolveで幾何剛性データを使用するためには、このデータがH3Dに含まれている必要があります。詳細については、コメント5をご参照ください。
v_ic_x, v_ic_y, v_ic_z
これらの属性は、それぞれX、Y、Z軸に沿った弾性体の初期並進速度を指定します。

CMS弾性体の場合は、任意の座標系を基準にして局所パート参照フレーム(LPRF)速度を定義できます。この座標系を表すマーカーは、vm_idによって定義されます。

NLFEボディの場合は、速度はそれぞれ全体座標系のX、Y、Zの方向に沿って適用されます。

v_ic_xv_ic_zは省略可能です。指定されていない場合、これらはゼロと見なされます。初速度がシステム拘束条件を確実に満たすように、MotionSolveによってこれらの値が変更される場合があります。

w_ic_x, w_ic_y, w_ic_z
これらの属性は、それぞれX、Y、Z軸周りの弾性体の初期角速度を指定します。

CMS弾性体の場合は、任意の座標系を基準にして局所パート参照フレーム(LPRF)速度を定義できます。この座標系を表すマーカーは、wm_idによって定義されます。

NLFEボディの場合は、速度はそれぞれ全体座標系のX、Y、Z軸周りに適用されます。

w_ic_xw_ic_yw_ic_zは省略可能です。指定されていない場合、これらはゼロと見なされます。初速度がシステム拘束条件を確実に満たすように、MotionSolveによってこれらの値が変更される場合があります。

v_ic_x_flag, v_ic_y_flag, v_ic_z_flag
X、Y、またはZ方向の速度が正確にわかっているのか、単なる初期推測値なのかを示すブールフラグ。

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

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

w_ic_x_flag, w_ic_y_flag, w_ic_z_flag
X、Y、またはZ軸周りの角速度が正確にわかっているのか、単なる初期推測値なのかを示すブールフラグ。

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

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

vm_id
(CMSのみ)適用する初期並進速度の基準となるマーカーのIDを指定します。指定しない場合、これらの速度は全体フレームを基準にして適用されます。
wm_id
(CMSのみ)適用する初期回転速度の基準となるマーカーのIDを指定します。指定しない場合、これらの速度は全体フレームを基準にして適用されます。
ID1ID2… IDn
(NLFEのみ)NLFEボディをマルチボディシステムの他の部分に結合するために使用されるマーカーのIDのリスト。

例1

下の図は、バックホーローダーのブームを示しています。



図 1. CMS弾性体を使用したバックホーローダーのブームのモデル化

アームには大きな油圧力がかかっているため、アームの弾性は、システムの全体的な挙動とピボットポイントにおける力を決定する上で重要な役割を果たします。

弾性ブームの定義を以下に示します。is_user_damping"FALSE"に設定されているため、減衰はReference_FlexData要素で定義されています。

この弾性体はReference_FlexData 11を参照します。これにより、この弾性体のCMS表現が定義されます。

  • 弾性体には、5つの取り付けポイントまたは取り付け節点があります。
  • 31のモードを使用して、変形形状が表現されます。
  • 元の有限要素メッシュには36,382個の節点があります。
  • このボディの質量は343.79447Kgです。
  • 変形がゼロの状態における慣性は次のとおりです:
  • Ixx = 71.424kgm2、Iyy = 204.970kgm2、Izz = 270.996kgm2
  • Ixy = -108.571kgm2、Iyz = -0.0007927kgm2、Izx = -0.0013968kgm2
  • 1000ラジアン / 秒を上回るすべてのモードは臨界減衰されます(モード番号25から37)。

Reference_FlexDataカードを以下に示します。

<Reference_Flexdata
     id                  = "11"
     num_nodes           = "36382"
     num_sel_modes       = "31"
     num_sel_nodes       = "5" >
<ModeData>
<!--    ID       Frequency      Eigenvalue          Damping  -->
         7   1.6383385E+02   1.0596634E+06    1.0000000E-01
         8   2.1524734E+02   1.8290949E+06    1.0000000E-01
         9   2.3918134E+02   2.2584748E+06    1.0000000E-01
        ...
        34   2.6830053E+03   2.8418668E+08    1.0000000E+00
        35   2.7798731E+03   3.0507780E+08    1.0000000E+00
        36   3.5534390E+03   4.9849222E+08    1.0000000E+00
        37   4.4473195E+03   7.8083150E+08    1.0000000E+00
     </ModeData>
     <NodeData>
<!--    ID               X               Y               Z   -->
     320900  -4.1635098E+00  -3.7339999E-01  -1.3000000E-01
     320905  -3.7123201E+00   1.6183400E-01   1.0700000E-10
     320906  -4.2820601E+00   1.4321400E-01  -2.5000000E-02
     320917  -5.7897798E+00  -1.0092300E+00  -1.6000000E-01
     320919  -6.1077402E+00  -1.1671100E+00  -1.3000000E-01
<!-- Mode Shape -->
  -2.7620662E-03  -1.5999271E-02  -1.3520377E-02  -1.2305416E-01   2.1246834E-02  -1.8486151E-06
   2.3995511E-07  -2.7162932E-06  -8.7264590E-02  -3.7223276E-02   1.3226432E-01  -1.4547608E-05
  -2.7368159E-03  -3.5339149E-03  -1.4723917E-03  -1.4127485E-01   1.0950999E-01   1.5551852E-05
   ...
   1.5056358E-02   9.0596480E-03   6.5006730E-05  -2.5446518E-04   1.5557368E-03   1.5840490E-01
  -4.4426341E-02   1.0682830E-01   5.2728883E-05   2.6002291E-03  -1.4042209E-03  -4.8935637E+00
   1.8613113E-02  -4.1820321E-02   6.9122898E-06  -7.9896546E-04  -5.2661070E-04  -5.9843439E-01
     </NodeData>
     <InertiaData>
   8.7288856E-01  -4.8791962E-01  -4.4323963E-06   4.8791962E-01   8.7288856E-01  -4.7179542E-06
   6.1709705E-06   1.9555952E-06   1.0000000E+00  -4.8517495E+00  -5.0135241E-01  -2.1201009E-06
   2.6295942E+02   8.0369704E+00   2.6993996E+00   1.5783882E+02  -9.4482949E+02  -4.9331539E-03
  -9.4482949E+02   8.2977114E+03  -1.1581632E-03  -4.9331539E-03  -1.1581632E-03   8.4501514E+03
     </InertiaData>
  </Reference_Flexdata>

例2

次の例では、MotionSolveの式を使用して減衰が指定されています。is_user_damp"TRUE"に設定されていることに注目してください。

<Body_Flexible
    id                = "30102"
    lprf_id           = "63330102"
    h3d_file          = "../../flex_h3d/beam.h3d"
    is_user_damp      = "TRUE"
    cdamp_expr        = "IF (FXFREQ-100:0.01,0.1,IF (FXFREQ-1000:0.1,1.,1))"
    flexdata_id       = "30102"
    animation_scale   = "1."
/>

例3

次の例では、ユーザー定義のサブルーチン(DMPSUB)を使用して減衰が指定されています。is_user_damp"TRUE"に設定されていることに注目してください。

<Body_Flexible
    id                   = "30102"
    lprf_id              = "633301012"
    h3d_file             = "../../flex_h3d/beam.h3d"
    is_user_damp         = "TRUE"
    usrsub_param_string  = "USER (0.01,100,0.1,1000,1)"
    usrsub_dll_name      = "NULL"
    usrsub_fnc_name      = "DMPSUB"
    flexdata_id          = "30102"
    animation_scale      = "1."
/>

例4

以下の行は、弾性体(0-3秒)を剛体(3-6秒)に変換してから、弾性体(6-10秒)に戻す例を示しています。

<Simulate
    analysis_type      = "Transient"
    end_time           = "3.0"
    print_interval     = "0.01"
/>
<Body_Flexible
    id                 = "30102"
    rigidified         = "TRUE"
/>
<Simulate
    analysis_type      = "Transient"
    end_time           = "6.0"
    print_interval     = "0.01"
/>
<Body_Flexible
    id                 = "30102"
    rigidified         = "FALSE"
/>
<Simulate
    analysis_type      = "Transient"
    end_time           = "10.0"
    print_interval     = "0.01"
/>

例5

次の例では、NLFEボディを使用して、自動車のフロントサスペンションで使用されるスタビライザーバーをモデル化する方法を示しています。



図 2. スタビライザーバーの弾性パートを作成するために使用されるNLFEボディ

このNLFEボディは、MotionSolve内で次のBody_Flexibleステートメントによって表されます:

<Body_Flexible
      id                          =   "30601"
      label                       =   "Stabilizer Bar"
      ref_marker_id               =   "30101010"
      ancf_file                   =   "stabar_NLFE_30601.xml"
      rayleigh_damping            =   "0.5"
      num_i_marker                =   "4">
30601011    30601191    30601091    30601111
</Body_Flexible>   

マーカー30601011、30601191、30601091、30601111を使用して、NLFEシステムが車両の他の部分に結合されています。マーカー30101010は、原点に配置された地面参照マーカーです。

このNLFEボディは、stabar_NLFE_30601.xmlファイル内で次のように定義されます:

<ANCF Model>
    <UNIT force="NEWTON" mass="KILOGRAM" length="MILLIMETER" time="SECOND"/>
    <GRID id="306001" x="1120.000000" y="-544.000000" z="989.000000" rx="0.000000 1.000000 0.000000" ry="-1.000000 0.000000 0.000000" rz="0.000000 -0.000000 1.000000"/>
    <GRID id="306002" x="1120.000000" y="-515.000000" z="989.000000" rx="0.948371 -0.279089 -0.150668" ry="0.282312 0.959323 -0.000000" rz=0.144539 -0.042535 0.988584"/>
    ...
    <GRID id="306018" x="1120.000000" y="515.000000" z="989.000000" rx="-0.286957 0.956858 0.045589 ry="-0.957854 -0.287255 -0.000000 rz="0.013096 -0.043667 0.998960"/>
    <GRID id="306019" x="1120.000000" y="544.000000" z="989.000000" rx="0.000000 1.000000 0.000000" ry="-1.000000 0.000000 0.000000" rz="0.000000 -0.000000 1.000000"/>
    <BEAMC id="20000" pid="10000" g1="306001" g2="306002"/>
    ...
    <BEAMC id="20017" pid="10000" g1="306018" g2="306019"/>
    <PBEAMC id="10000" mid="3000000" ri1="0.000000" ro1="10.000000" ri2="0.000000" ro2="10.000000" nf-"1" nx="5" nr="4" nt="10" ngx="5" ngr="4" ngt="12"/>
    <MAT1 id="3000000" e="210000" nu="0.3" rho="7.86e-006"/>
</ANCFModel>

上記のファイルからわかるように、スタビライザーバーは円形断面のBEAM要素によって定義されています。このNLFEボディは、線形弾性材料を参照します。

コメント

  1. MotionSolveは、CMS弾性体とNLFE弾性体という2種類の弾性体をサポートしています。次の表に、この2つの主な比較を示します:
      CMS弾性体 NLFE弾性体
    弾性体の作成 コンポーネントを表現するためにユーザーによるメッシュが必要です。 MotionViewでのLDボディサブシステムの作成に、ユーザーによるメッシュは不要です。
    弾性コンポーネントのモード表現の生成に、追加のCMS解析が必要です。 LDボディの作成に解析は不要です。LDボディは、直接MotionViewで作成および変更できます。
    ライン、シェル、およびソリッド要素がサポートされています。 ライン要素のみがサポートされています。
    ジョイントや力などに結合するには、CMS解析で取り付け節点を定義します。 すべての節点を取り付け節点として使用でき、特別な処理は不要です。
    コンポーネント内の弾性のモデル化 線形変形範囲までに限って正確です(微小変形の場合)。

    物理変形を正確に表現するには十分なモード情報を取得する必要があります。

    完全に非線形な定式化により、縮退解析なしで微小変形と大変形について正確な解析が可能になります。
    弾性コンポーネント内の形状非線形性のモデル化 大変形には全般的に対応していません。 BEAMおよびCABLE要素では、弾性コンポーネントでの大変形をモデル化できます。
    弾性コンポーネント内の材料非線形性のモデル化 非線形材料モデルはサポートされていません。 超弾性材料と線形弾性材料を使用して弾性コンポーネントをモデル化できます。
    応力とひずみの回復 あり。 あり。MotionSolveは、ビーム要素とケーブル要素の3D表現を書き出して、HyperViewで応力、ひずみ、および変位を可視化します。
    CMS弾性体
    CMS弾性体を作成するには、AltairのFEソルバーであるOptiStructを使用して、FEモデルに対して区分モード合成を実行します。Craig-BamptonとCraig_Changの両方の手法がサポートされています。CMSデータはReference_FlexData要素に格納され、flexdata_id属性によって参照されます。OptiStructは、以下のソースからの有限要素データを受け入れることができます。
    • HyperMesh
    • Patran
    • Nastran
    • Abaqus
    CMSは、弾性体の変形特性を表します。ここに剛体モードを含めることはできません。これらは自動的にフィルタで除外されます。Reference_FlexData要素内にゼロに近い固有値を有するモードがある場合は、CMSデータの品質を疑ってください。
    CMS弾性体のモード減衰は、次の2つの方法で指定できます:
    • is_user_damp"FALSE"に設定して、Reference_FlexData要素で減衰を定義する。
    • is_user_damp"TRUE"に設定して、ユーザー定義のサブルーチンDMPSUBまたは式を使用して、Body_Flexible要素で減衰を定義する。
    減衰は、時間の関数(FXFREQおよびFXMODE)にすることのみ可能です。減衰は、システム状態の関数にはできません。したがって、アクセス関数SYSFNC()およびSYSARY()をDMPSUBから呼び出すことはできません。
    is_user_damp"FALSE"に設定されている場合、弾性体のデフォルトの減衰は次のようになります:
    • 100Hz未満のモードについては1%
    • 100から1000Hzのモードについては10%
    • 1000Hz超のモードについては臨界減衰
    応力、ひずみ、変位はアニメーションH3Dファイルに書き込まれ、HyperViewで可視化できます。MotionSolveは、h3d_file属性で指定されたH3Dファイルのメッシュ情報を使用して、この処理を実行します。h3d_fileはアニメーションのためだけに使用されます。ソルバーでは使用されません。この属性を空白のままにした場合や、flex H3Dファイルが指定された場所で見つからない場合、解析は影響を受けません。ただし、弾性体はアニメーションに表示されません。場合によっては、アニメーションH3Dファイルが大きすぎることがあります。そのような場合、応力と変形の結果に注目する必要がなければ、h3d_file属性を省略してもかまいません。
    NLFEボディ
    NLFEボディは、MotionView内で個別に、またはサブシステムを通じて作成されます。NLFEボディは、形状プロパティと材料プロパティによって定義されます。MotionSolveは現在、LINE要素(空間内の2つのポイントをつなげる要素)をサポートしています。CABLE要素とBEAM要素という2種類の要素がサポートされています。次の表に、これら2つの主な違いを示します:
    要素 説明
    CABLE CABLE要素は、せん断力やねじり力に抵抗しません。これは、この要素の断面が変化しないことを意味します。

    この要素を使用して、ケーブルやワイヤーなどをモデル化できます。

    BEAM BEAM要素は、あらゆる種類の変形に抵抗します。これは、断面も荷重を受けて変形する可能性があることを意味します。この様子は、この要素の使用時にHyperViewで可視化できます。
    BEAM要素では、複数タイプの断面がサポートされています:
    • 円形(ソリッドと中空)
    • 矩形またはボックス(ソリッドと中空)
    • 溝形
    • クロス
    • ハット
    • H、I、L、T、およびZ断面

    この要素を使用して、ビーム、スプリング、ベルト、ゴムコンポーネントなどをモデル化できます。

    XMLファイルは、モデルをMotionSolveにエクスポートすると、システム内の各NLFEボディに対して作成されます。このXMLは、ancf_file属性を使用してモデル内のBody_Flexible要素によって参照されます。このファイルには一般に、NLFEボディに関する以下の情報が含まれています:
    • 形状情報(節点位置など)、結合情報など
    • NLFEボディの材料情報
    • モデルの単位情報
    NLFEボディの定式化は完全に非線形であるため、このボディを使用して大変形をモデル化できます。また、BEAM要素で使用するための非線形材料モデルを選択することができるため、ゴムのような超弾性コンポーネントをモデル化できます。NLFEボディを使用することでメリットが得られる代表的な状況としては、以下が挙げられます:
    • BEAMまたはCABLE要素を使用してモデル化できる弾性パートで大変形が生じることが予想される
    • CMS弾性パートの使用時に異常に大きい変位が見られる
    • CMS弾性パートの応力が材料の降伏点に近付く
    • ゴムのような超弾性材料をシステム内でモデル化する必要がある
    • ポリビームを使用して作成されたコンポーネント内の応力を可視化する必要がある
    逆に、MotionSolveのNLFEボディは、FE構造解析の代替手段となるようには設計されていません。マルチボディシステム内のNLFE要素の数を増やすと、ソルバーのパフォーマンスが低下するため、FE解析の代わりに、NLFEボディを使用した同等のマルチボディ解析を実行することは一般に推奨されません。
    NLFEボディの減衰を適用するには、rayleigh_damping属性でゼロ以外の値を指定します。レイリー減衰では、物理的減衰を擬似的に生じさせることが試みられます。モデルによっては、このパラメータの値が大きいと解析が不安定になる可能性があります。小さい値から開始して、希望のシステム応答が得られるまで徐々に値を大きくすることをお勧めします。
    NLFEボディは、ほとんどの力要素と拘束要素を通じてマルチボディシステムの他の部分に結合できます。NLFEボディ上の各ポイントは、取り付け節点と考えることができます。
    注: NLFEボディには少なくとも1つのマーカーを結合する必要があります(num_i_marker > 0)。その理由は、MotionSolveにおけるNLFEボディの実装方法にあります。
    応力、ひずみ、変位はアニメーションH3Dファイルに書き込まれ、HyperViewで可視化できます。MotionSolveは、NLFEボディの形状情報からメッシュ情報を生成します。場合によっては、アニメーションH3Dファイルが大きすぎることがあります。そのような場合は、MotionViewのNLFEボディパネルでポスト処理対象のセグメント数を減らしてみてください。
  2. MotionSolveでは、大きな可逆的弾性変形が生じ得るエラストマー(ゴムなど)やその他の材料をシミュレートするための非線形超弾性材料モデルが用意されています。荷重が除去されると、これらの材料は元の形状に戻ります。このような材料は一般に以下の特性を持っています:
    • 大変形が可能なため、大きなひずみが生じる可能性があります。
    • 応力とひずみの関係は非常に非線形的であり、多くの場合、複数の変曲点を伴います。

      次の図は、BEAM要素と複数の超弾性材料モデルを使用してモデル化されたロッドの単軸試験における応力とひずみの関係を示しています。

    図 3. 超弾性材料モデルの公称応力と公称ひずみの関係
    次の3つの非線形超弾性材料モデルを使用できます:
    • Neo-Hookean圧縮性:これは、最もシンプルな形の超弾性材料モデルであり、ひずみエネルギー密度関数に基づいています。材料のせん断弾性係数、ポアソン比、および要素密度は、このモデルの入力として指定されます。
    • Mooney-Rivlin:MR材料モデルはNeo-Hookeanモデルを発展させたものであり、MotionSolveで2パラメータ形式で使用できます。このようなモデルは、材料の応力-ひずみ曲線に凹凸の変化がない(変曲点がない)場合に有用です。このモデルでは、2つの材料定数に加えて、この材料のポアソン比と密度が入力として指定されます。これら2つの材料定数は一般に、単軸または二軸の圧縮試験または引張試験から得られる試験データの曲線フィッティングを通じて得られます。
    • Yeoh:MotionSolve内のYeohモデルは、3パラメータモデルとして使用できます。このモデルは、単軸引張試験から得られるデータに基づいて、さまざまな変形モードを適切にモデル化できることが実証されています。 6
  3. MotionSolveでは、大回転を表現するためにオイラー角は使用されません。そのため、3D回転を定義する角度が一意ではないという“オイラー角の特異点”の問題が発生しません。
  4. ブール属性rigidifiedを使用して、弾性体を弾性体としてモデル化するのか剛体としてモデル化するのかを指定します。この指定は、<Body_Flexible>コマンド要素を使用して行うことも(下記の例4を参照)、MotionSolve固有のユーティリティサブルーチンであるc_modsetを使用して行うこともできます。
    注: 剛化された弾性体の計算効率は、純粋な弾性体より優れていますが、純粋な剛体よりは劣ります。これは実装の違いによるものです。そのため、ソルバーが静的平衡に達するために多くの反復計算を必要とする一部のケースでは、以下を実行することをお勧めします:
    1. すべての弾性体を剛化された弾性体に変換します。
    2. 静的シミュレーションを実行します。
    3. 剛化されたすべての弾性体を元の純粋な弾性体に変換します。
    4. 静的シミュレーションを再び実行します。

    上記の手順を実行すると、静的平衡に達するために必要なソルバーステップの総数が減少する可能性があります。ただし、静的収束はモデルに依存するため、上記の手順が効果を発揮しない場合もあります。

  5. 形状または応力の剛化は、引張荷重がかけられた薄肉の細長い構造物(弾性コントロールアーム、ローターブレード、タービンブレードなど)で主に見られる非線形の形状効果です。このような場合、張力の増大に伴って基本モード周波数が高まります。この効果は、大きな剛体回転を受けている弾性ビーム(ローターブレードなど)でも見られます。回転速度の上昇により、ブレードにかかる引張(遠心)力が増大し、その結果として、ビームの基本モード周波数が高まることで、ビームの曲げ剛性が増大します。

    この連成効果をCMS弾性体に対して組み込むには、CMS弾性体の生成時に、追加の剛化データ(MotionSolve内の<GeoStiff>で表現)を生成する必要があります。

  6. Mac Donald Brian J.著 『Practical Stress Analysis with Finite Elements』Dublin: Glasnevin Publishing、2007年出版。