MotionSolveとのインターフェース
MotionViewアプリケーションとMotionSolveソルバーとインターフェースの概要。
MotionSolveにMDLモデルをエクスポートするためのガイドライン
Altairのマルチボディ動解析ソルバーMotionSolveに、MotionViewのMDLモデルをエクスポートできます。MotionViewからエクスポートしてMotionSolveにインポートできるフォーマットはXMLです。
重力、単位、およびソルバーのパラメータ
- 重力
- 重力は暗黙的なデータセットです。つまり、重力の定義はMotionViewで自動的に作成されます。モデルのMiscシステムを使用している場合、Formsパネルから重力の値を利用できます。重力のデフォルト値はstd_inc.mdlファイルで設定されます。このファイルは、MotionViewのインストールの際にインストールされています。
- 単位
- MotionViewは“単位がない”インターフェースですが、一般的にはユーザー側で扱っている単位をソルバーの入力デックに通知する必要があります。同様に、各単位に一貫性があるようにすることも必要です。したがって、質量、長さ、時間、力の定義はMotionViewで自動的に生成されます。これらの定義を利用するには、Formsパネルに移動し、MiscシステムでUnitsを選択します。単位のデフォルト値は、MotionViewで使用するstd_inc.mdlファイルで設定されます。
- ソルバーパラメータ
- MotionSolveでは、サポートしている解析タイプごとにソルバーパラメータが必要です。これらのパラメータは、solvermodeをMotionSolveに設定していれば、MotionViewのRunパネルから利用できます。リクエストしたタイプのシミュレーションに適用できるすべてのパラメータが、Param_(name)ステートメントを使用して、MotionSolveのxml入力ファイルにエクスポートされます。
MDLステートメントのマッピング
| MDLステートメント | MotionSolveエンティティ |
|---|---|
| *ActionOnlyForce() | Force_Vector_OneBody |
| *ActionReactionForce() | Force_Vector_TwoBody |
| *AtPointJoint() | Constraint_Joint [Spherical] |
| *BallJoint() | Constraint_Joint [Spherical] |
| *Beam() | Force_Beam |
| *Body() | Body_Rigid、Body_Flexible、Reference_FlexData |
| *Bush() | Force_Bushing |
| *CoilSpring() | Force_SpringDamper |
| *Contact() | Force_Contact |
| *ControlSISO() | Control_SISO |
| *Coupler() | Constraint_Coupler |
| *Curve() | Reference_XYCurve、Reference_ParamCurve |
| *CurveToCurveJoint() | Constraint_CVCV |
| *CurveToSurfaceJoint() | Constraint_CVSF |
| *CVJoint() | Constraint_Joint [Constant_Velocity] |
| *CylJoint() | Constraint_Joint [Cylindrical] |
| *Field() | Force_Field |
| *FixedJoint() | Constraint_Joint [Fixed] |
| *Gear() | Constraint_Gear |
| *Graphic() | Post_Graphic |
| *HookeJoint() | Constraint_Joint [Universal] |
| *InlineJoint() | Constraint_Joint [Inline] |
| *InplaneJoint() | Constraint_Joint [Inplane] |
| *Marker() | Reference_Marker |
| *Motion() | Motion_Joint、Motion_Marker |
| *OrientJoint() | Constraint_Joint [Orientation] |
| *Output() | Post_Request |
| *ParallelAxisJoint() | Constraint_Joint [Parallel_Axes] |
| *PerpAxisJoint() | Constraint_Joint [Perpendicular] |
| *PlanarJoint() | Constraint_Joint [Planar] |
| *PointmassBody() | Body_Point |
| *PointToCurveJoint() | Constraint_PTCV |
| *PointToSurfaceJoint() | Constraint_PTSF |
| *Polybeam() | Force_Beam |
| *RevJoint() | Constraint_Joint [Revolute] |
| *SetFlexbodyComplaince() | Body_Flexible |
| *Sensor() | SensorEvaluate、SensorEvent |
| *SolverArray() | Reference_Array、Control_PlantInput、Control_PlantOutput |
| *SolverDiffEquation() | Control_Diff |
| *SolverString() | Reference_String |
| *SolverVariable() | Reference_Variable |
| *SurfaceToSurfaceJoint() | Constraint_SFSF |
| *TorsionSpring() | Force_SpringDamper |
| *TransJoint() | Constraint_Joint [Translational] |
| *UniversalJoint() | Constraint_Joint [Universal] |
| *UserConstraint() | Constraint_UserConstr |
MDL CommandSetのマッピング
CommandSetステートメントはソルバーコマンドファイルにマッピングされます。MotionSolveの場合、ソルバーコマンドファイルはソルバー入力ファイルの一部になっています。MDLステートメントと異なり、MDLのCommandSetの動作はステートメントの記述順序に依存します。つまり、MotionSolveファイルに対して得られたマッピングにコマンドが記述される順序は、そのコマンドに対応するステートメントがCommandSetに記述されている順序と同じになります。
- *SetForce()
- *SetMotion()
- Motion_Joint、Motion_Marker
- *SetSolverVariable()
- Reference_Variable
- *SetState()
- Activate、Deactivate
- *Simulate()
- シミュレート
- *Write()
Templexテンプレートとソルバーモード
Templexテンプレートは、必要であればパラメトリック置換を含め、構文をソルバー入力デックに直接エクスポートするために使用することができます。
- 例えば、次のように記述したMDLモデルがあるとします。
これによって、SolversメニューでMotionSolveを選択すると、Template 1の全体が使用されます。別のソルバーを選択すると、Template 2が使用されます。何らかのテンプレートを使用すると、それがTemplatesパネルのインターフェースに表示され、ソルバーの入力デックを保存するときに認識されます。if( solvermode == "MotionSolve" ) *Template(.....1...) else *Template(.....2...) endif - 2番目の方法は、Templexテンプレートにif条件を記述する方法です。これにより、そのif条件に合致する適用可能な内容のみが認識されます。
*DefineTemplate( tp_1, "Template 1", …) if( solvermode == "MotionSolve" ) <Force_Vector_OneBody id = "30101" type = "ForceOnly" marker_id = "30101011" body_id = "30101" ref_marker_id = "30101010" ref_body_id = "30101" fx = "30." fy = "0." fz = "0." /> else VFORCE/30101 !Force 0 , I= 30101011, JFLOAT= 30101013, RM= 30101010 , FX= 30 \ , FY= 0 \ , FZ= 0 endif *EndDefine
- テンプレートのタイプ
- Templexテンプレートには、独自のデフォルト動作と並んで、いくつかの出力先を設定できます。
- USERテンプレートはどのようなソルバーファイルにもエクスポートできませんが、パラメータ記述によるテキストを他のファイルに配置する場合や(TemplexのOpenコマンドとCloseコマンドを使用します)、GUI専用としたテキストを扱う場合などに有用です。
- SOLVER_INPUTテンプレートでは、そのテンプレートのテキストが、現在のソルバーモードのソルバー入力デックにエクスポートされます。この場合のエクスポート先は、MotionSolveのxmlファイルのモデルステートメントセクションです。
- SOLVER_COMMANDテンプレートでは、そのテンプレートのテキストが、現在のソルバーモードのソルバー入力デックにエクスポートされます。この場合のエクスポート先は、MotionSolveのxmlファイルのコマンドセクションです。
- 次の各テンプレートはMotionSolveには適用されません。
- SOLVER_PARAM
- GRAPHICS
- ADAMS
- ACF
CommandSets
CommandSetは、ソルバーのコマンドファイルにマッピングされるMDLエンティティです。MotionSolveの場合、モデルのステートメントを記述している.xmlファイルのコマンドセクションに、CommandSetがマッピングされます。
MDLのCommandSetで*Write()ステートメントを使用すると、MotionSolve入力ファイルのコマンドセクションにTemplexテンプレートがエクスポートされます。
関数式
MotionViewでは、その多くのエンティティで関数式をサポートしています。これらの関数は、時間と状態変数の関数とすることができます。関数式に対応するソルバーエンティティの一部として直接エクスポートされる関数式を作成できます。MotionSolveでは、MDLで扱われているすべての式がサポートされています。
弾性体
- プリ処理
- MotionViewでは、MDLのボディを弾性体として表現できます。MDLモデルに弾性体を実装するには、OptiStructまたはNastranを使用してh3d弾性体ファイルを作成しておく必要があります。これにより、MotionSolveで使用するボディでは、弾性体のグラフィックスと機能表現で、このh3d弾性体ファイルを参照できます。
- ポスト処理
- MotionSolveでは、h3dタイプのアニメーションファイルが作成されます。このファイルはアニメーションウィンドウに直接読み込むことができます。H3DOutputコマンドを使用すると、このファイルに記述する内容を選択できます。
ユーザーサブルーチン
MotionSolveなどの多くのソルバーでは、ソルバーとリンクするユーザーサブルーチンを作成することで、独自に修正したエンティティを作成できます。MotionViewには、ユーザーサブルーチンを使用できる場面がいくつかあります。その場合は、ユーザーサブルーチンを呼び出すために必要なシンタックスに所要情報を記述するだけですみます。エンティティレベルのDLLを使用できるMDLエンティティも数多くあります。
MotionViewでは、ユーザーサブルーチンを呼び出すために使用する文字列をパラメトリックにすることができ、その文字列はExpression Builderを使用して構築できます。
MotionViewからのソルバーの起動
MotionViewでは、ソルバーの起動に必要なスクリプトが自動的に登録されます。Run SolverパネルでRunをクリックすると、MotionSolveのスクリプトによってMotionSolveが起動します。