MV-2021:車のドア閉鎖のシミュレーション
本チュートリアルでは、弾性体モデルと剛体モデルを作成し、ドアの閉鎖のシミュレーションを行う方法について学習します。
- FEMファイルを用いた弾性体ファイルの作成
- ボディのデータを使った剛体モデルの作成
- ドアを弾性体とし、作成された弾性体ファイルをモデルで使用
- ドア閉鎖のシミュレーションのセットアップ
弾性体ドア用の有限要素モデルの確認
このステップでは、弾性体作成のスターティングポイントとなる有限要素(FE)モデルの内容を確認します。
- モデルmetro_door.femをHyperMeshにインポートします。
-
modeling windowの左側にあるModel Browserをクリックし、モデルツリーを展開して、モデルのすべてのコンポーネント、プロパティおよび材料を確認します。
FEMモデルは下記の属性を有しています:
- すべてのコンポーネントについて、質の高い適正なメッシュ
- すべてのコンポーネントに断面プロパティが割り当てられている
- すべてのコンポーネントは、適切な材料を参照している
- 弾性体の取り付け節点を確認します。節点9751、9750、10090をチェックしてください。
- FEMをmetro_door_flex.femとしてFlexbody Generationのためにエクスポートします。
Flex Prepによる弾性体の作成
このステップでは、Step 1で作成したFEMファイルを使い、Flex Prepで弾性体H3Dファイルを生成します。本チュートリアルのこのステップを実行するにあたっては、MV-2010:Flex PrepとOptiStructを使った弾性体の作成で説明されているFlex Prepの理解が前提とされます。
-
MotionViewでFlexToolsメニューからFlex Prepを選択します。
FlexBodyPrepダイアログが表示されます。
-
FlexBodyPrepダイアログで、ドア閉鎖モデル構築用の弾性体を作成するための以下の情報を入力します。
- 上の図を参考に、#2のSelect Bulk Data file (fem/nas/bdf/dat)を選択してStep 1で作成された入力ファイルmetro_door_flex.femを指定します。
- #3のSave the h3d file as:には、出力H3Dファイルをmetro_door_flex.h3dと指定します。
- #4のSpecify Interface Node Listには、取り付け節点番号を9751+9750+10090と指定します。
- #5のCutoff type and value:には、Highest Mode #を選択し、20と入力します。
- #6では、Perform stress recoveryとPerform strain recoveryの両方をアクティブにし、Perform element check in OptiStruct modelにNoを選択します。
- Mass unitsにMegagramを選択します。
-
OKをクリックし、弾性体の生成を開始します。
弾性体H3Dファイルは、metro_door_flex.h3dという名称で、選択されたフォルダに作成されます。
車のドアのMBDモデルを作成
このステップでは、車のドアのMBDモデルを作成します。これが終わると、ドア閉鎖のシミュレーションを行うことが可能になります。
このモデルには、長さにミリメーター、質量にメガグラム、力にニュートン、時間に秒の単位を使用します。
モデルユニット
ポイント
このモデルを作成するには、全部で6つのポイントを作成する必要があります。
Bodies
このモデルには2つのボディが含まれます。1つは車を、もう1つは弾性体ドアを表します。
- Project BrowserでModelを右クリックし、 を選択、またはツールバーからBodies を 右クリック)します。ボディを1つ追加し、Car Bodyというラベルを与え、OKをクリックします。
- CM Coordinatesタブで、ボディの重心をポイントCar Body CGに指定します。
-
Car BodyのPropertiesタブをクリックします:
- Get Properties from associated Graphic(s) チェックボックスをオフにします。
- 質量と慣性のプロパティの値を以下のように入力します。
- ボディをもう1つ追加し、Car Doorと命名します。
- PropertiesタブでFlex Bodyチェックボックスをクリックします。
- Door BodyのGraphic fileおよびH3D fileにmetro_door_flex.h3d fileをブラウズして指定します。上のStep 2で作成した弾性体ファイルを使用します。
Graphics
上のPoint 6の後、Door Bodyはグラフィック表示されていますが、Car Bodyはまだです。ファイルのグラフィックをCar Bodyに追加し、モデルの可視状態がより意味をもつようにします。
- ToolsメニューからImport CAD or FEを選択します。
-
Input FileドロップダウンメニューからHyperMeshを選択します。ファイルブラウザを使って、HyperMeshファイルcar_body_graphics.hmを選択します。
Output Graphic File欄は自動的に入力されます。
-
OKをクリックします。
HyperMeshファイルはH3Dに変換され、MotionViewウィンドウに読み込まれます。
- Graphicsパネルで、今しがた追加されたグラフィックをクリックします。
-
Connectivityタブで、Bodyをダブルクリックし、ボディとしてCar Bodyをピックします。
これで、選択されたグラフィックがCar Bodyに関連付けされます。
ジョイント
このボディには、4つの拘束 / ジョイントを追加する必要があります。これらのジョイントの1つは、XMLテンプレートを使って追加しなくてはなりません。
- Project BrowserでModelを右クリックし、 を選択、またはツールバーからJoint を 右クリック)します。
-
下の一覧に示すとおり、ジョイントを追加します。
ジョイントが指定されたら、モデル内に弾性体が存在するため、弾性体の取り付け節点を対応するジョイントマーカーに関連付ける必要があります。
- BodiesパネルでCar Doorを選択します。
- Propertiesタブで、Nodesをクリックします。
- Nodesダイアログで、Find Allをクリックして取り付け節点番号を探し、それぞれのマーカーに結合させます。
初期条件
本シミュレーションでは、ボディの初速度がモデルへの主運動の入力として機能します。
- Project Browserで、左側のフィルタからDoor Bodyを選択します。
- Initial Conditionsタブをクリックします。
-
WZをアクティブにし、値5.0を指定します。
これが、Door Bodyに掛けられる全体Z軸周りの初期角速度の大きさとなります。
- テストシミュレーションを実行し、この初期速度と拘束でモデルがどのような挙動を示すかをチェックします。
Markers
車のドアのロック機構を表すため、当初は非アクティブとなっているCar BodyとDoor Bodyの間のfixedジョイントをアクティブにするセンサーを使用します。固定ジョイントは、XMLテンプレートを使って作成する必要があります。これは、MotionViewインターフェースでは、ボディとポイントを使ってジョイントが作成できるためです。ここでは、初めは一致していない2つのマーカー間にジョイントを作成しなくてはなりません。
- Project BrowserでModelを右クリックし、 を選択、またはツールバーからBodies を 右クリック)します。
-
下の一覧に示すとおり、マーカーを追加します。
- マーカーを作成したら、上記Jointsの項の手順3.から5.までを繰り返し、Car Doorの節点とマーカーDoor Lock Markを結合させます。
Sensors
このモデルでは、ドアの閉鎖を検知するためにEvent Sensorを使用します。この事象が検知された瞬間、ドアとボディの間の固定ジョイントがアクティブとなり、実際のロック機構をシミュレートします。
- Project BrowserでModelを右クリックし、 を選択、またはツールバーからSensor を 右クリック)します。
- センサーを1つ追加し、Lock Recognizeと命名します。
- Signalタブをクリックし、信号のタイプをLinearからExpressionに変更します。
-
信号として、下に示す式を使用します:。
DY({MODEL.m_door.idstring},{MODEL.m_car.idstring},{MODEL.m_car.idstring})
DY関数は、3つのマーカーを引数として受け入れます。この関数は、3番目のマーカーの基準枠内の2番目のマーカーからの最初のマーカーのY距離を戻します。ここでは、最初のマーカーはDoor Lock Markとラベル付けされ、これはCar Door Bodyに属しています。2番目と3番目のマーカーはCar Body Lock Markで、Car Bodyに属しています。
- Compare Toタブで、Valueに0.0010、Errorに0.0001と指定します。
- Respond ifの下で、Signal is less than VALUE + ERRORを選択します。
- PropertiesタブでReturn to command fileチェックボックスをクリックします。
テンプレート
ドアロックをシミュレートするためには、ドアとボディの間に固定ジョイントが必要です。この固定ジョイントは、センサーで作動する必要があります。ジョイントの作動とセンサーの非アクティブ化は、1つのシーケンシャルシミュレーションの操作を使って行うことができます。
- Project BrowserでModelを右クリックし、 を選択、またはツールバーからTemplate を 右クリック)します。テンプレートをモデルに追加し、Lock Fix Jointとラベル付けします。
- テンプレートのPropertiesタブのType: の下で、Write text to solver input deckを選択します。
-
パネルのテンプレート領域で、XML形式の固定ジョイントの定義を次のように入力します:
<Constraint_Joint id = "1001" type = "FIXED" i_marker_id = "{the_model.m_door.idstring}" j_marker_id = "{the_model.m_car.idstring}" />
これは、2つのマーカーDoor Lock MarkおよびCar Body Lock Markの間の固定ジョイントを定義します。
- Project Browserで、Modelを右クリックし、 を選択して別のテンプレートを追加します。
- ラベルはSeq Sim Commandsと指定します。
- テンプレートのPropertiesタブで、Type:の下にWrite text to solver command fileを選択します。
-
以下は、シーケンシャルシミュレーションのXMLコマンドです。パネルのテンプレート領域で、下記のXMLコマンドのブロックを入力します:
<Deactivate element_type = "JOINT" element_id = "1001" /> <Simulate analysis_type = "Transient" end_time = "1.0" print_interval = "0.001" /> <Activate element_type = "JOINT" element_id = "1001" /> <Deactivate element_type = "SENSOR" element_id = "{the_model.sen_0.idstring}" /> <Simulate analysis_type = "Transient" end_time = "2.5" print_interval = "0.001" /> <Stop/>
これらのXMLブロックのセットは、以下の手順に指定されたシーケンシャルシミュレーションの操作を定義します:
- Fixed Jointを非アクティブ化(最初に)
- 1秒間シミュレーションを実行
- Fixed Jointを有効にします。
- Sensorを非アクティベートします。
- 1.5秒間シミュレーションを実行
- シミュレーションを停止
- Fileメニューから を選択することにより、モデルを一旦保存します。
- Runパネルで、Save and run current modelの横のファイルブラウザをクリックし、ソルバーXMLファイルの名称を指定します。
- Runをクリックし、MotionSolveでモデルを実行します。
- 実行が完了したらAnimateボタンをクリックし、シミュレーションの結果をアニメーション表示します。