ADAMSとのインターフェース

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

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

ADAMSの.admファイルにMotionViewのMDLモデルをエクスポートできます。

ほとんどすべてのMDLエンティティに、それに相当するADAMSエンティティが1つ以上あります。

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

MotionViewで、重力、単位、およびソルバーに関するADAMSのパラメータを使用できます。
Gravity
重力は暗黙的なデータセットです。つまり、重力の定義はMotionViewで自動的に作成されます。モデルのMiscシステムを使用しているときであれば、Formsパネルから重力の値を利用できます。重力のデフォルト値はstd_incファイルで設定されます。このファイルは、MotionViewのインストールの際にインストールされています。std_incには、Templexテンプレートも用意されています。このテンプレートを使用すると、ADAMS入力ファイルに重力を書き込むことができます。
単位
MotionViewは“単位がない”インターフェースですが、一般的にはユーザー側で扱っている単位をソルバーの入力デックに通知する必要があります。したがって、質量、長さ、時間、力の定義はMotionViewで自動的に生成されます。この定義を利用するには、Formsパネルに移動し、MiscシステムでUnitsを選択します。ADAMSに単位をエクスポートするために使用するデフォルト値とTemplexテンプレートはstd_incファイルで生成されます。
ソルバーパラメータ
ADAMSのソルバーパラメータは、MotionViewにデフォルトで用意されているデータセットに格納されます。これらのデータセットを使用してソルバーパラメータを設定できます。このようなパラメータとして、積分機能パラメータ、静的平衡パラメータ、デバッグパラメータ、結果パラメータなどがあります。用意されているパラメータとその簡単な説明、等価なADAMSステートメントを以下に挙げています。
Note: 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エンティティとのマッピングについて説明します。
Note: すべてのエンティティでは、必要なマーカーが暗黙的に作成されます。
これらのエンティティのプロパティデータはすべて、各エンティティに対応する*Set()ステートメントで設定されます。
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ステートメントはソルバーコマンドファイルにマッピングされます。ADAMSのソルバーコマンドファイルは.acfファイルです。MDLステートメントと異なり、MDLのCommandSetの動作はステートメントの記述順序に依存します。つまり、.acfファイルにコマンドが記述される順序は、そのコマンドに対応するステートメントがCommandSetに記述されている順序と同じになります。
Table 1. サポートされているコマンド
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モデルがあるとします。
    if( solvermode == "ADAMS" )
    
     *Template(.....1...)
    
    else
    
     *Template(.....2...)
    
    endif
    これによって、SolversメニューでADAMSを選択すると、Template 1が使用されます。別のソルバーを選択すると、Template 2が使用されます。何らかのテンプレートを使用すると、それがTemplatesパネルに表示され、ソルバーの入力デックを保存するときに機能します。
  • Templexテンプレートの一部のみが特定のソルバーに適用されるようにTemplexテンプレートのテキストをラップします。例えば、次のように記述したMDLモデルがあるとします。
    *DefineTemplate(........)
    
     {if (solvermode == "ADAMS" ) }
    
         text for adams
    
     {else}
    
         text for other
    
     {endif}
    
    text for all
    
    *EndDefine()
    モデルをエクスポートするときに、ソルバーとしてADAMSを選択すると、“text for adams”と“text for all”が入力デックにエクスポートされ、ADAMS以外のソルバーを選択すると、“text for other”と“text for all”がエクスポートされます。テンプレートのうち、ユーザーインターフェースに表示される部分についても同様の処理が適用されます。
テンプレートのタイプ
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

MDLのCommandSet*Write()ステートメントを使用すると、ADAMSの.acfにTemplexテンプレートがエクスポートされます。ACFテンプレートを使用する場合と異なり、*Write()ステートメントを使用して得られる.acfファイルでは、その1行目にソルバーの入力デックの名前が自動的には反映されません。これは、ソルバーに対する中立的なアプローチをサポートするために必要な措置です。したがって、ADAMSで*Write()コマンドを使用する場合は、最初に使用するテンプレートの1行目に次のコマンドを記述し、2行目を空白のままとする必要があります。これは、ACFテンプレートタイプで自動的に実行される処理を模倣する処理です。
*DefineTemplate(tpldef_event_begin)

{AbsToRelative(Solver_File_basename.path, Solver_File_basename.value + ".adm")}

*EndDefine()

関数式

ADAMSでは、その多くのエンティティで関数式をサポートしています。これらの関数は、時間と状態変数の関数とすることができます。MotionViewでは、得られたソルバーエンティティに直接エクスポートできる関数式を作成できます。

ソルバーでは、MotionViewでエクスポートされるシンタックスを扱う必要があるので、その中立性にはある程度の制限があります。この点はADAMSでは問題になりません。MotionViewとADAMSとの間には関数式の言語に全面的な互換性があるからです。

ユーザーサブルーチン

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

MotionViewのエンティティとして以下が用意されています:
  • *SetBush()
  • *SetCoilSpring()
  • *SetForce()
  • *Output()
MotionViewでは、ユーザーサブルーチンを呼び出すために使用する文字列をパラメトリックにすることができ、その文字列はExpression Builderを使用して構築できます。

MotionViewからのソルバーの起動

MotionViewでは、ソルバーの入力デックをエクスポートした後、プロセスを自動的に起動できます。ADAMSについては、インストール環境のaltair/utilities/mbd/launch_scriptsにデフォルトの起動スクリプトが用意されています。preferences.mvwファイルを使用して、これらの起動スクリプトを1つ以上登録しておくと、以降は*RegisterSolverScript() mvwステートメントを使用して、そのスクリプトをRunパネルで選択できます。

ポスト処理

ADAMS解析に応じて、ポスト処理の対象とすることができる場面が数多くあります。アニメーションのウィンドウでは、Modelが1番目の読み込み欄を参照し、Resultsが2番目の読み込み欄を参照します。
アニメーション - 剛体のみを使用した過渡解析
次の2つのオプションが用意されています:
  • Modelfile.graを読み込み、Resultsfile.graを読み込みます。これはこれまでの使用方法であり、元の.admファイルに保存されているプリミティブなグラフィックスが、力のグラフィックスを含め、すべてアニメーション化されます。しかし、この方法では、MotionViewのプリ処理段階で追加したグラフィックス(.g.h3d.shl)が自動的には取得されません。この対策として、Add Objectsパネルを使用して、アニメーションのウィンドウでオブジェクトを手動で追加します。
  • Modelfile.mafを読み込み、Resultsfile.graを読み込みます。file.mafは、SolverModeADAMSに設定してソルバーデック.admをエクスポートするときに生成できます(File > Export > Solver Deck)。また、ADAMSソルバースクリプトを実行している場合はRunパネルで生成することもできます。これによって、プリ処理段階で追加したグラフィックスが、力のグラフィックスを除き、すべて自動的に取得されます。ここで重要な点として、.graファイルは、使用しているMDLモデルから得られた.admファイルの関数であること、およびパートのIDの数に関しては.admファイルが編集されていないことが挙げられます。また、追加のパートを記述したTemplexテンプレートをMDLモデルで使用している場合は、アニメーションを正常に実行するために必要な内部マッピングが無効になることがあります。
アニメーション - 1つ以上の弾性体を使用した過渡解析
MotionViewでは、ソルバーの入力ファイルを保存すると、filename.flxファイルが自動的に作成されます。この様子を視覚化するには、Modelfile.flxを読み込み、Resultsfile.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.graResults欄でfile.resをそれぞれ指定することにより、アニメーションを取得できます。
アニメーション - 1つ以上の弾性体を使用したモーダル解析
MotionViewでは、弾性体を1つ以上格納したソルバー入力ファイルを保存すると、filename.flxファイルが自動的に作成されます。ADAMS/ 線形実行の結果を視覚化するには、Model欄でfile.flxResults欄でfile.flxをそれぞれ読み込みます。
MotionViewでは、モーダル解析結果を読み込むときに、すべてのアニメーションフレームが計算されます。これにより、モードセットにあるすべてのモードで直ちにアニメーションを実行できます。弾性体が大型の場合、早い段階ですべてのモードを計算すると長時間を要することがあります。この場合は、.flxファイルに手動で*StartMode()ステートメントと*EndMode()ステートメントを追加します。
プロッティング
いくつかのファイルとアニメーションタイプではプロットが可能です。
.reqファイルの場合は、ディレクトリからファイルを選択すると、MotionView出力に対応するすべての信号がプロット用のインターフェースに表示されます。
.resファイル(ASCIIのみ)の場合は、ADAMS/ 線形実行の後、プロットできる固有値が表示されます。
弾性体を使用したモデルによる.resファイル(ASCIIのみ)の場合は、それらの弾性体によるモーダル寄与率をプロットできます。
Note: 弾性体に対するADAMSの実行で得られた応力を表示するには、.resファイルをリクエストする必要があります。