インターフェースの一般的な様相

MotionViewとソルバーとのインターフェース、MotionViewのSolverMode、ソルバーの実行方法について説明します。

ソルバーとのインターフェース

MotionViewのMDLモデルは数多くのソルバーにエクスポートできます。MotionSolve、ADAMS、Abaqusのように、ソルバー入力デックの中で、MDLのモデルステートメントをそれぞれの対応するエンティティに直接マッピングするようにプログラミングされているソルバーもあります。このほか、Templexテンプレートを使用して、MDLに記録されない情報をエクスポートできます。また、TemplexテンプレートをMotionViewで使用すると、ASCII入力デックを必要とするあらゆるソルバーを前処理できます。

ソルバーとインターフェース接続する場合は、考慮するべき点がいくつかあります。これらの点の概要を以下で説明します。また、その詳しい説明が、関連項目に挙げたヘルプのトピックにあります。
重力、単位、およびソルバーのパラメータ
他のエンティティに比べると、これらのパラメータには独特の性質があります。パラメータそれぞれの説明は、各ソルバーのセクションにあります。
MDLステートメントのマッピング
MotionViewのMDLエンティティとソルバー側で相当するエンティティとのマッピングについて詳しく説明します。機構システムを記述するMDLステートメントのサブセットと特定のソルバーに適用するステートメントについて説明しています。
MDL CommandSetのマッピング
MDL CommandSetは、ソルバーのコマンドファイルに適用されます。これらのステートメントの動作は、その記述順序に依存します。これらのステートメントのマッピングについては、各ソルバーの説明で取り上げています。
Templexテンプレート
MotionViewでTemplexテンプレートを使用すると、あらゆるシンタックスをソルバー入力デックに直接エクスポートできます。また、テンプレートにあるデータをパラメトリックにして、他のMDLデータ値に依存して変化する値にすることもできます。ただし、Templexテンプレートには一般的にソルバーに対する中立性がないので、テンプレートに取り込んだ機能はすべて、モデルで使用しているソルバーごとに取り込み直す必要があります。
関数式
MotionViewでは、ブッシュの剛性、モーション、スプリングのダンパ値などのプロパティを記述する関数式をサポートしています。これらの式は、エンティティのプロパティを表現する関数としてソルバーの入力デックに渡されます。関数式では、Templexステートメントのsolvercrとdtorを使用できます。これらのステートメントについては、各ソルバーのセクションに説明があります。
ユーザーサブルーチン
エンティティに関連する値を、事前定義のエンティティ値からではなく、ユーザーサブルーチンから取得するエンティティが数多くあります。一般的に、ユーザーサブルーチンはDLLの形態をとるか、ソルバーにリンクして、ユーザーが実行できるソルバーを作成します。ユーザーサブルーチンをマッピングできるソルバーはわずか数点にすぎません。
MotionViewからのソルバーの起動
*BeginModelDefaultsブロックでプリファレンスステートメント*RegisterSolverScriptを使用することで、ソルバーの起動スクリプトを登録できます。これら一群のステートメントをプリファレンスファイル(*.mvw)に保存し、それをFileメニューを使用して読み込むことができます。プリファレンスファイルを読み込むと、ソルバーのスクリプトがRun Solverパネルに表示されます。
ポスト処理
MotionViewのMDLファイルに関連する範囲でポスト処理の方法について説明しています。
その他の項目
ソルバーの中には、重複する制約を自動的に削除するものがあります。モデリングに使用した技法によっては、この機能がソルバーで問題になることがあります。各ソルバーのセクションで、この点について詳しく説明しています。

MotionViewのSolverMode

MotionViewは、SolverModeと呼ばれるデフォルトの変数を含んでいます。MDLでは、SolverModeはトポロジーを定義するための"if"構文(Templexテンプレートを含む)内で使用されます。MotionViewは、ユーザーがソルバータイプを切り替えた際に、関連したテキストがユーザーインターフェース内でアクティブになるよう、両方のケースについて"if"結果を保持します。

以下の例は、モデルライブラリを使用してブレークイベントのテンプレートが構築されている様子を示しています。
*elseif(SolverMode == "MotionSolve")
         *Template(tpl_brake_ms, "Brake event", SOLVER_COMMAND, tpldef_brake_ms, mot_steer…
 *elseif( SolverMode == "ADAMS" )
         *Template(tpl_brake, "Brake event", ACF, tpldef_brake, mot_steer, .. .
 *endif() 
以前のテキストを記述したMDLモデルをMotionViewに読み込んだ場合(std_incを使用した場合も同様です)、MotionViewでソルバーモードとしてADAMSを選択すると以下のテンプレートが表示されます。
PREFERENCES/SIMFAIL=STOPCF                        !Stop if simulation fails

DEACTIVATE/JOINT, ID={j_rackfix_att.idstring}

!Initial static analysis

SIM/STAT

DEACT/MOT, ID={mot_frnt_wheel.l.idstring},{mot_frnt_wheel.r.idstring},{mot_rear_wheel.l.idstring},{mot_rear_wheel.r.idstring}
DEACT/JPRIM, ID = {j_clamp_1_body.idstring}, {j_clamp_2_body.idstring}
{if ds.str_type.value == "Locked"}
MOT/{mot_steer.idstring}, FUN = 0
{elseif ds.str_type.value == "Free"}
DEACT/MOT, ID={mot_steer.idstring}
{endif}

SIM/DYN, END = 4, STEPS = 400

STOP
MotionViewでソルバーモードとしてMotionSolveを選択すると、以下のテンプレートが表示されます。
<!--Initial static analysis -->
<Simulate
  analysis_type = "Static"
  end_time      = "0.0"
/>
<Deactivate
  element_type = "MOTION"
  element_id = "{mot_frnt_wheel.l.idstring}"
/>
<Deactivate
  element_type = "MOTION"
  element_id = "{mot_frnt_wheel.r.idstring}"
/>
<Deactivate
  element_type = "MOTION"
  element_id = "{mot_rear_wheel.l.idstring}"
/>
<Deactivate
  element_type = "MOTION"
  element_id = "{mot_rear_wheel.r.idstring}"
/>
<Deactivate
  element_type = "JPRIM"
  element_id = "{j_clamp_1_body.idstring}"
/>
<Deactivate
  element_type = "JPRIM"
  element_id = "{j_clamp_2_body.idstring}"
/>    
<Simulate
      analysis_type       = "Transient"
      end_time            = "4"
      print_interval      = "0.01"
  />
  <Stop/>

SolverModeは、MDLトポロジに“if”ロジックを配置するためにも使用できます。

ソルバー実行

MotionViewでは、ワンステップでソルバー入力デックの保存とソルバーの起動が行えます。そのためには、スクリプト(またはPC上の.batファイル)をpreferences.mvwファイルに登録しておく必要があります。これにより、Run SolverパネルでRunを選択すると、このスクリプトを使用できます。MotionSolveの場合、ソルバーのスクリプトがデフォルトで登録されます。したがって、ソルバーをインストール済みであれば、Run SolverパネルでRunをクリックすると、MotionViewと同じインストール環境でそのソルバーが起動します。ソルバースクリプトを登録するには、*RegisterSolverScript()プリファレンスステートメントを使用します。登録したスクリプトは、Run Solverパネルで選択できます。ADAMSの場合、MotionViewのインストール環境にいくつかのスクリプトが用意されていて、それぞれ1回編集するだけで使用できるようになります。これらは、<ALTAIR_HOME>\utility\mbd\launch_scripts\ディレクトリにあります。