ここからは例題を通して、実際に入力ファイルを作成したり、計算を実行したりしながら、MBDynの使い方を習得して行きましょう。本チュートリアルの解説は、入力ファイルの形式や文法を網羅するものではありませんので、入力ファイルの形式や文法の詳細については、MBDynホームページで入手できる公式の“Input manual”を随時参照してください。また、同ホームページには公式の“Tutorials”もありますので、そちらも合わせて参照してください。まず最初の例題は、公式のTutorialsでも扱われている例題です。
質量1.0kgの剛体が、重力下で水平方向に初速3.0m/sで投げ出されたときの運動をMBDynで計算(シミュレーション)してみましょう。重力加速度の大きさは9.81m/s2とします。
MBDynで物体の運動を計算する際には、まず絶対静止座標系である「グローバル座標系」を定める必要があります。シミュレーションモデルはこのグローバル座標系を基準として構築し、計算結果としての運動はグローバル座標系で記述されます。グローバル座標系の取り方は任意ですので、問題に合わせて便利な取り方を工夫しましょう。例題1においては、剛体重心の初期位置を原点とし、Z軸を鉛直上向きに、Y軸を初速度の向きに取ることにします。(図1参照)
本チュートリアルでは、MBDynを利用して対象物の運動を計算(シミュレーション)する一連のプロセスを、「MBDyn解析」または単に「解析」と呼ぶことにします。図2にMBDyn解析の一般的な流れを示します。
まず、任意のテキストエディタで入力ファイルを作成します。入力ファイルには、入力データを決められた形式および文法に従って記述します。入力ファイルの拡張子は任意ですが、本チュートリアルでは「.mbd」とします。次に、入力ファイルを指定してMBDynを実行します。するとMBDynは入力ファイルに書かれた入力データを読み込み、運動方程式を生成し、運動を計算します。全てうまく行けば、計算終了後いくつかの出力ファイルに計算結果が書き出され、MBDynは自動的に終了します。計算中に何か問題が発生した場合には、計算が中止され、エラーメッセージが表示されます。この場合には、入力ファイルを修正してエラーの原因を取り除く必要があります。
出力ファイルには、剛体の位置、速度、姿勢角、角速度、ジョイントの反力など、計算によって求められた対象物の運動データが書き出されます。これらのデータをMATLAB等の汎用数値解析ソフトウェアに取り込んでグラフやアニメーションを作成すれば、運動を可視的に把握することができます。このような出力データの処理をポスト処理と呼びます。
それでは、例題1について、MBDyn解析の流れを具体的に追ってみましょう。
例題1の剛体の運動をMBDynで解析するための入力ファイルの記述例をコード1に示します。コードの内容については次項と次々項で解説します。現段階では、説明なしでコード全体をじっくり眺めてみて、どのようなことが書いてありそうか少し予想してみてください。
# free_falling_body.mbd begin: data; problem: initial value; end: data; begin: initial value; initial time: 0.; final time: 1.; time step: 1.e-3; max iterations: 10; tolerance: 1.e-6; end: initial value; begin: control data; structural nodes: 1; rigid bodies: 1; gravity; end: control data; begin: nodes; structural: 1, dynamic, null, eye, 0., 3., 0., null; end: nodes; begin: elements; body: 1, 1, 1., null, eye; gravity: 0., 0., -1., const, 9.81; end: elements;
上記の入力ファイルを用いてMBDynを実行してみましょう。コード1が書かれたファイルを「free_falling_body.mbd」という名前で保存し、シェルで次のコマンドを入力してください。
mbdyn -f free_falling_body.mbd
するとMBDynのプログラムが実行され、以下のようなメッセージがシェル画面に表示されます。
MBDyn - MultiBody Dynamics 1.X-Devel compiled on Nov 1 2009 at 16:57:21 Copyright 1996-2009 (C) Paolo Mantegazza and Pierangelo Masarati, Dipartimento di Ingegneria Aerospaziale <http://www.aero.polimi.it/> Politecnico di Milano <http://www.polimi.it/> MBDyn is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Use 'mbdyn --license' to see the conditions. There is absolutely no warranty for MBDyn. Use "mbdyn --warranty" for details. reading from file "free_falling_body.mbd" Creating scalar solver with Naive linear solver Reading Structural(1) Reading Body(1) Reading Gravity No initial assembly is required since no joints are defined End of simulation at time 1 after 1000 steps; output in file "free_falling_body.mbd" total iterations: 298 total Jacobian matrices: 298 total error: 0.000328629 MBDyn terminated normally
上記のメッセージは、MBDynのプログラムの処理が問題なく完了したことを伝えています。この時、カレントディレクトリには、「free_falling_body.<拡張子>」という名前のついた出力ファイルが複数作成されるはずです。今の場合、拡張子が「out」、「log」、「mov」、「ine」の出力ファイルが作成されます。拡張子が「out」と「log」のファイルには、実行されたシミュレーションに関する一般的な情報が書き出され、拡張子が「mov」と「ine」のファイルには、位置や速度など、剛体の運動の時系列データが書き出されます。各出力ファイルを実際に開いて確認してみてください。
出力ファイルに書き出されたデータは、言うまでもなく数字の羅列です。シミュレーションの結果を確認するためには、多くの場合、これらの数値データを可視化する必要があります。図3と動画1に、例題1のシミュレーション結果を可視化した例を示します。
図3は剛体の軌跡を表すグラフ、動画1は剛体の運動のアニメーションです。どちらもmovファイルに書き出されたデータを用いて作成されています。これらのグラフやアニメーションから、剛体が放物線を描いて落下する様子を視覚的に確認できます。このように、出力データを処理してグラフやアニメーションを作成する方法についても、後の項で随時説明して行きます。