ADAMSとのインターフェース
MotionViewアプリケーションとADAMSソルバーとのインターフェースの概要。
ADAMSにMDLモデルをエクスポートするためのガイドライン
ADAMSの.admファイルにMotionViewのMDLモデルをエクスポートできます。
ほとんどすべてのMDLエンティティに、それに相当するADAMSエンティティが1つ以上あります。
重力、単位、およびソルバーのパラメータ
- 重力
- 重力は暗黙的なデータセットです。つまり、重力の定義はMotionViewで自動的に作成されます。モデルのMiscシステムを使用している場合、Formsパネルから重力の値を利用できます。重力のデフォルト値はstd_incファイルで設定されます。このファイルは、MotionViewのインストールの際にインストールされています。std_incには、Templexテンプレートも用意されています。このテンプレートを使用すると、ADAMS入力ファイルに重力を書き込むことができます。
- 単位
- MotionViewは“単位がない”インターフェースですが、一般的にはユーザー側で扱っている単位をソルバーの入力デックに通知する必要があります。したがって、質量、長さ、時間、力の定義はMotionViewで自動的に生成されます。これらの定義を利用するには、Formsパネルに移動し、MiscシステムでUnitsを選択します。ADAMSに単位をエクスポートするために使用するデフォルト値とTemplexテンプレートはstd_incファイルで生成されます。
- ソルバーパラメータ
- ADAMSのソルバーパラメータは、MotionViewにデフォルトで用意されているデータセットに格納されます。これらのデータセットを使用してソルバーパラメータを設定できます。このようなパラメータとして、積分機能パラメータ、静的平衡パラメータ、デバッグパラメータ、結果パラメータなどがあります。用意されているパラメータとその簡単な説明、等価なADAMSステートメントを以下に挙げています。注: MotionViewに付属する車両動解析とサスペンションの各種MDLライブラリでは、事前定義された解析ごとのソルバーパラメータシステムがライブラリに収められているほか、これらのソルバーパラメータをADAMSのソルバーデックに書き込むテンプレートが用意されています。
MotionViewのデータセット 説明 ADAMSステートメント Equilibrium Parameters 静的平衡のパラメータ EQUILIBRIUM GSTIFF Parameters GSTIFF積分器の積分機能パラメータ INTEGRATOR/GSTIFF Initial conditions 初期条件解析のパラメータ IC Debug options デバッグオプションを設定するデータセット DEBUG Output options REQファイルとGRAファイルの保存などの出力オプションを指定します。 OUTPUT Result options RESファイルのオプションを設定します。 RESULTS Solution options 解析の種類、解析ステップの終了時間と数などのシミュレーションオプションを設定します。 SIMULATE
MDLステートメントのマッピング
MDLステートメント | ADAMSエンティティ |
---|---|
*ActionOnlyForce() | VFORCE、VTORQUE、またはGFORCE |
*ActionReactionForce() | VFORCE、VTORQUE、またはGFORCE |
*AtPointJoint() | ATPOINTタイプのJPRIM |
*BallJoint() | SPHERICALタイプのJOINT |
*Beam() | BEAM |
*Body() | PART |
*Bush() | BUSHINGまたはGFORCE |
*CoilSpring() | SPRINGDAMPERまたはSFORCE |
*ControlSISO() | TFSISOおよび暗黙的にARRAYとVARIABLE |
*Coupler() | COUPLER |
*Curve() | SPLINE |
*CVJoint() | CONVELタイプのJOINT |
*CylJoint() | CYLタイプのJOINT |
*FixedJoint() | FIXEDタイプのJOINT |
*Graphic() | GRAPHIC |
*InlineJoint() | INLINEタイプのJPRIM |
*InplaneJoint() | INPLANEタイプのJPRIM |
*Markert() | MARKER |
*Motion() | MOTION |
*OrientJoint() | ORIENTタイプのJPRIM |
*Output() | 1つ以上のREQUEST |
*ParallelAxisJoint() | PARALLELタイプのJPRIM |
*PerpAxisJoint() | PERPタイプのJPRIM |
*PlanarJoint() | PLANARタイプのJPRIM |
*Polybeam() | BEAM(多数) |
*RevJoint() | REVOLUTEタイプのJOINT |
*SolverArray() | ARRAY |
*SolverDiffEquation() | DIFF |
*SolverString() | STRING |
*SolverVariables() | VARIABLE |
*TorsionSpring() | SPRINGDAMPERまたはSFORCE |
*TransJoint() | TRANSLATIONALタイプのJOINT |
*UniversalJoint() | UNIVERSALタイプのJOINT |
MDL CommandSetのマッピング
CommandSetのステートメント | マッピング先の.acfコマンド |
---|---|
*SetForce() | VFORCE、VTORQUE、GFORCE、またはSFORCE |
*SetMotion() | MOTION |
*SetSolverVariable() | VARIABLE |
*SetState() | エンティティ /ACTIVATEまたはDEACTIVATE |
*Simulate() | SIMULATE |
*Write() | ソルバー入力ファイルにテンプレートテキストを送信 |
- Templexテンプレートとソルバーモード
- 必要に応じ、Templexテンプレートを使用して、パラメトリックな代入などのシンタックスをソルバーの入力デックに直接エクスポートできます。ADAMSソルバーの場合、デックのシンタックスに位置や順序の要件がないので、Templexテンプレートで位置や順序を指定するキーワードを使用する必要がありません。
- solvermode
- 1つのMDLモデルを複数のソルバーへのエクスポートに使用できます。この場合、solvermodeの予約キーワードを使用して、Templexテンプレートの内容またはTemplexテンプレートのインスタンスをラップすることをお勧めします。この処理は次の2つの方法で実現できます:
- Templexテンプレートの存在がsolvermodeに依存するようにTemplexテンプレートのインスタンス全体をラップします。例えば、次のように記述したMDLモデルがあるとします。
これによって、SolversメニューでADAMSを選択すると、Template 1が使用されます。別のソルバーを選択すると、Template 2が使用されます。何らかのテンプレートを使用すると、それがTemplatesパネルに表示され、ソルバーの入力デックを保存するときに機能します。if( solvermode == "ADAMS" ) *Template(.....1...) else *Template(.....2...) endif
- Templexテンプレートの一部のみが特定のソルバーに適用されるようにTemplexテンプレートのテキストをラップします。例えば、次のように記述したMDLモデルがあるとします。
モデルをエクスポートするときに、ソルバーとしてADAMSを選択すると、“text for adams”と“text for all”が入力デックにエクスポートされ、ADAMS以外のソルバーを選択すると、“text for other”と“text for all”がエクスポートされます。テンプレートのうち、ユーザーインターフェースに表示される部分についても同様の処理が適用されます。*DefineTemplate(........) {if (solvermode == "ADAMS" ) } text for adams {else} text for other {endif} text for all *EndDefine()
- Templexテンプレートの存在がsolvermodeに依存するようにTemplexテンプレートのインスタンス全体をラップします。例えば、次のように記述したMDLモデルがあるとします。
- テンプレートのタイプ
- Templexテンプレートには、独自のデフォルト動作と並んで、いくつかの出力先を設定できます。
- USERテンプレートはどのようなソルバーファイルにもエクスポートできませんが、パラメータ記述によるテキストを他のファイルに配置する場合や(TemplexのOpenコマンドとCloseコマンドを使用します)、インターフェース専用としたテキストを扱う場合などに有用です。
- SOLVER_INPUTテンプレートでは、そのテンプレートのテキストがADAMSの.admファイルにエクスポートされます。
- SOLVER_PARAMテンプレートはADAMSソルバーには適用されません。
- GRAPHICSテンプレートでは、そのテンプレートのテキストがADAMSの.admファイルにエクスポートされます。
- ADAMSテンプレートでは、そのテンプレートのテキストがADAMSの.admファイルにエクスポートされます。より新しいSOLVER_INPUTでは、ソルバーに対する中立的なアプローチをサポートしていますが、後方互換性を確保するために、元のテンプレートタイプであるADAMSをサポートしています。
- ACFテンプレートでは、そのテンプレートのテキストがADAMSの.acfファイルにエクスポートされます。ACFテンプレートを1つでも使用していれば、自動的に.acfファイルの1行目にはソルバーの入力デックの名前が記述され、2行目は空白のままとなります。この動作は、以下で説明するような、CommandSetで*Write()コマンドを使用してテンプレートを使用する場合の動作と異なります。
CommandSets
*DefineTemplate(tpldef_event_begin)
{AbsToRelative(Solver_File_basename.path, Solver_File_basename.value + ".adm")}
*EndDefine()
関数式
ADAMSでは、その多くのエンティティで関数式をサポートしています。これらの関数は、時間と状態変数の関数とすることができます。MotionViewでは、得られたソルバーエンティティに直接エクスポートできる関数式を作成できます。
ソルバーでは、MotionViewでエクスポートされるシンタックスを扱う必要があるので、その中立性にはある程度の制限があります。この点はADAMSでは問題になりません。MotionViewとADAMSとの間には関数式の言語に全面的な互換性があるからです。
ユーザーサブルーチン
ADAMSなどの多くのソルバーでは、ソルバーとリンクするユーザーサブルーチンを作成することで、独自に修正したエンティティを作成できます。MotionViewには、ユーザーサブルーチンを使用できる場面がいくつかあります。その場合は、ユーザーサブルーチンを呼び出すために必要なシンタックスに所要情報を記述するだけですみます。
- *SetBush()
- *SetCoilSpring()
- *SetForce()
- *Output()
MotionViewからのソルバーの起動
MotionViewでは、ソルバーの入力デックをエクスポートした後、プロセスを自動的に起動できます。ADAMSについては、インストール環境のaltair/utilities/mbd/launch_scriptsにデフォルトの起動スクリプトが用意されています。preferences.mvwファイルを使用して、これらの起動スクリプトを1つ以上登録しておくと、以降は*RegisterSolverScript() mvwステートメントを使用して、そのスクリプトをRunパネルで選択できます。
ポストプロセッシング
- アニメーション - 剛体のみを使用した過渡解析
- 次の2つのオプションが用意されています:
- Modelの下でfile.graを読み込み、Resultsの下でfile.graを読み込みます。これはこれまでの使用方法であり、元の.admファイルに保存されているプリミティブなグラフィックスが、力のグラフィックスを含め、すべてアニメーション化されます。しかし、この方法では、MotionViewのプリ処理段階で追加したグラフィックス(.g、.h3d、.shl)が自動的には取得されません。この対策として、Add Objectsパネルを使用して、アニメーションのウィンドウでオブジェクトを手動で追加します。
- Modelの下でfile.mafを読み込み、Resultsの下でfile.graを読み込みます。file.mafは、SolverModeをADAMSに設定してソルバーデック.admをエクスポートするときに生成できます( )。また、ADAMSソルバースクリプトを実行している場合はRunパネルで生成することもできます。これによって、プリ処理段階で追加したグラフィックスが、力のグラフィックスを除き、すべて自動的に取得されます。ここで重要な点として、.graファイルは、使用しているMDLモデルから得られた.admファイルの関数であること、およびパートのIDの数に関しては.admファイルが編集されていないことが挙げられます。また、追加のパートを記述したTemplexテンプレートをMDLモデルで使用している場合は、アニメーションを正常に実行するために必要な内部マッピングが無効になることがあります。
- アニメーション - 1つ以上の弾性体を使用した過渡解析
- MotionViewでは、ソルバーの入力ファイルを保存すると、filename.flxファイルが自動的に作成されます。この様子を視覚化するには、Modelでfile.flxを読み込み、Resultsでfile.flxを読み込みます。.flxファイルでは、ADAMSでのアニメーションで次の各コマンドをサポートしています。
- *ModelSource(path)
- *ResultsSource(path)
- *FlexSource(path, ID, scale)
- *StartTime(real)
- *EndTime(real)
- *StartMode(integer)
- *EndMode(integer)
- アニメーション - 剛体のみを使用したモーダル解析
- ADAMS/ 線形シミュレーションで得られた結果を視覚化するには、ADAMSの.resファイルのASCIIバージョンを生成する必要があります。Model欄でfile.gra、Results欄でfile.resをそれぞれ指定することにより、アニメーションを取得できます。
- アニメーション - 1つ以上の弾性体を使用したモーダル解析
- MotionViewでは、弾性体を1つ以上格納したソルバー入力ファイルを保存すると、filename.flxファイルが自動的に作成されます。ADAMS/ 線形実行の結果を視覚化するには、Model欄でfile.flx、Results欄でfile.flxをそれぞれ読み込みます。
- プロッティング
- いくつかのファイルとアニメーションタイプではプロットが可能です。