演習1:ユーザーサブルーチンの基礎

本演習ではユーザーサブルーチンについて学び、単気筒エンジンのモデルを実行します。

演習を始める前に、モデルファイルengine_baseline.mdlおよびすべてのH3Dファイルをmbd_modeling\motionsolve\python_usersubフォルダーから自身の<作業ディレクトリ>にコピーしてください。
ユーザーサブルーチンは、シミュレーションや解析のカスタマイズに有益なツールです。これらのユーザーサブルーチンは、C、Ruby、TCL、Pythonなど様々なプログラミング言語を使って作成することができます。C、C++、FORTRANなどのプログラミング言語で作成されたサブルーチンは、MS UserSub Build Tool(MotionViewのToolsメニュー内にある)を使ってコンパイルされ、*.dllファイルを生成します。これらのdllは、ソルバーによって使用されます。古いバージョンのMotionViewでは、コンパイルされたユーザーサブルーチン(*.dll)のみがサポートされていましたが、MotionViewのバージョン11.0からは、ユーザーサブルーチンはPythonおよびMatlabスクリプトを使用できるようになりました。本チュートリアルでは、Pythonを使ってユーザーサブルーチンを作成します。ユーザーサブルーチンは、外部Pythonスクリプトを活用して、MotionView GUIでは作成することができない複雑なシミュレーションを定義することができます。Pythonプログラミング言語の基本的な知識があれば、ユーザーは、複雑なメカニズムをシミュレーションするための入り組んだ新手法を簡単に作成できます。本チュートリアルでは、5つのMotionViewエンティティを対応するユーザーサブルーチンに置き換える方法について説明します。


図 1. 単気筒エンジンモデル
演習に使われるモデルは単気筒エンジンで、カーブ、出力、フォース、およびモーションエンティティを使用します。システムは、デフォルトの減衰も使用します。
  • カーブはCSVファイルから読み込まれ、コネクティングロッドの角変位に基づいたフォース値を与えます。
  • 出力は、ピストンの変位の大きさを返します。
  • フォースエンティティは、コネクティングロッドの角とカーブを用い、ピストンの可変圧力フォースを課します。
  • モーションエンティティは、Crank_Grnd回転ジョイントに角運動を課します。
  • システムのデフォルトの減衰は1ですが、これはBodiesパネルで変更することが可能です。
表 1に、本チュートリアルで使用するエンティティ、ユーザーサブルーチン、およびその使用の簡単な説明を示します:
表 1.
  エンティティ ユーザーサブルーチン 説明
Curve SPLINE_READ カーブデータファイルを読み込み
Request REQSUB リクエストされた値を出力
Force GFOSUB システムにフォースを適用
Motion MOTSUB システムにモーションを適用
Damping DMPSUB 弾性体の減衰を定義

モデルの実行

このステップでは、モデルを実行し、ユーザーサブルーチン結果と比較するための結果ファイルを得ます。

  1. (Run)ボタンをクリックします。
  2. Runパネルから(Open File)をクリックし、<作業ディレクトリ>に進みます。MotionSolve XMLファイルの名称をengine_baseline.xmlと指定します。
  3. をクリックし、モデルのエラーを確認します。
  4. Run ボタンをクリックします。