MotionSolveとのインターフェース

MotionViewアプリケーションとMotionSolveソルバーとインターフェースの概要。

MotionSolveにMDLモデルをエクスポートするためのガイドライン

Altairのマルチボディ動解析ソルバーMotionSolveに、MotionViewのMDLモデルをエクスポートできます。MotionViewからエクスポートしてMotionSolveにインポートできるフォーマットはXMLです。

重力、単位、およびソルバーのパラメータ

MotionViewで、重力、単位、およびソルバーに関するMotionSolveのパラメータを使用できます。
重力
重力は暗黙的なデータセットです。つまり、重力の定義はMotionViewで自動的に作成されます。モデルのMiscシステムを使用している場合、Formsパネルから重力の値を利用できます。重力のデフォルト値はstd_inc.mdlファイルで設定されます。このファイルは、MotionViewのインストールの際にインストールされています。
単位
MotionViewは“単位がない”インターフェースですが、一般的にはユーザー側で扱っている単位をソルバーの入力デックに通知する必要があります。同様に、各単位に一貫性があるようにすることも必要です。したがって、質量、長さ、時間、力の定義はMotionViewで自動的に生成されます。これらの定義を利用するには、Formsパネルに移動し、MiscシステムでUnitsを選択します。単位のデフォルト値は、MotionViewで使用するstd_inc.mdlファイルで設定されます。
ソルバーパラメータ
MotionSolveでは、サポートしている解析タイプごとにソルバーパラメータが必要です。これらのパラメータは、solvermodeMotionSolveに設定していれば、MotionViewのRunパネルから利用できます。リクエストしたタイプのシミュレーションに適用できるすべてのパラメータが、Param_(name)ステートメントを使用して、MotionSolveのxml入力ファイルにエクスポートされます。

MDLステートメントのマッピング

MDLエンティティとそれに相当するMotionSolveエンティティとのマッピングについて説明します。
注: これらのエンティティのプロパティデータはすべて、各エンティティに対応する*Set()ステートメントで設定されます。
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に記述されている順序と同じになります。

MotionViewでサポートされているコマンドは以下のとおりです:
*SetForce()
*SetMotion()
Motion_Joint、Motion_Marker
*SetSolverVariable()
Reference_Variable
*SetState()
Activate、Deactivate
*Simulate()
シミュレート
*Write()

Templexテンプレートとソルバーモード

Templexテンプレートは、必要であればパラメトリック置換を含め、構文をソルバー入力デックに直接エクスポートするために使用することができます。

1つのMDLモデルを複数のソルバーへのエクスポートに使用できます。この場合、solvermodeで予約されているキーワードを使用してTemplexテンプレートのインスタンスを作成します。この処理は2つの方法で実現できます。
  • 例えば、次のように記述したMDLモデルがあるとします。
    if( solvermode == "MotionSolve" )
    
     *Template(.....1...)
    
    else
    
     *Template(.....2...)
    
    endif
    これによって、SolversメニューでMotionSolveを選択すると、Template 1の全体が使用されます。別のソルバーを選択すると、Template 2が使用されます。何らかのテンプレートを使用すると、それがTemplatesパネルのインターフェースに表示され、ソルバーの入力デックを保存するときに認識されます。
  • 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では、マルチボディ結果ファイル(.mrf)、Altairバイナリフォーマットファイル(.abf)、プロットに使用できるAltairプロットファイル(.plt)も作成されます。MotionViewのLoad Exportユーティリティで.pltファイルを使用すると、OptiStructまたはNastranの荷重カードを作成できます。
線形解析を1つ以上設定したシミュレーションでは、モデルとして指定したMDLアニメーションファイル(MotionViewで作成した.mafファイル)および結果として指定した.mrfファイルとの組み合わせによって、モーダル結果をアニメーション化できます。MotionSolveでは、固有周波数ごとに.mrfファイルが1つ作成されます。
これらのファイルはすべて、ResOutputで指定できます。

ユーザーサブルーチン

MotionSolveなどの多くのソルバーでは、ソルバーとリンクするユーザーサブルーチンを作成することで、独自に修正したエンティティを作成できます。MotionViewには、ユーザーサブルーチンを使用できる場面がいくつかあります。その場合は、ユーザーサブルーチンを呼び出すために必要なシンタックスに所要情報を記述するだけですみます。エンティティレベルのDLLを使用できるMDLエンティティも数多くあります。

MotionViewでは、ユーザーサブルーチンを呼び出すために使用する文字列をパラメトリックにすることができ、その文字列はExpression Builderを使用して構築できます。

MotionViewからのソルバーの起動

MotionViewでは、ソルバーの起動に必要なスクリプトが自動的に登録されます。Run SolverパネルでRunをクリックすると、MotionSolveのスクリプトによってMotionSolveが起動します。