MotionSolveのサブルーチンインターフェース

概要

MotionSolveは、さまざまな現象の物理特性を表現できるようにソルバーを拡張できる広範なサブルーチンインターフェースを備えています。MotionSolve内の多くのモデリング要素をユーザー作成サブルーチンを使用して拡張することができます。シミュレーション中に、MotionSolveは必要に応じてこれらのサブルーチンを呼び出し、ユーザーがモデル化した現象を評価します。

ユーザー作成サブルーチン

ユーザーサブルーチンは、コンパイルされた言語またはスクリプト言語で記述できます。この2つの主な違いは、サブルーチンをコンパイルされた言語で記述した場合は、コンパイラを使用してコンパイルする必要があることです。これにより、ソースコードがバイナリフォーマットに変換されます。その後、ダイナミックリンクライブラリ(DLL)または共有オブジェクト(SO)を作成するため、これらのバイナリファイルをリンクする必要があります。ソースコードをコンパイルすると、MotionSolveはDLL/SO内の関数の呼び出し方を認識し、それらを使用します。スクリプト言語で記述されたサブルーチンをコンパイルまたはリンクする必要はありません。下の表は、MotionSolveでサポートされているさまざまな言語を示しています。これらの言語のいずれかでユーザーサブルーチンを記述できます。

言語 コメント
Fortran これは、ユーザー作成サブルーチンを記述する従来の方法です。Fortranで記述されたサブルーチンは、コンパイルされるため、極めて効率的です。ただし、Fortranで記述されたユーザーサブルーチンを使用するには、Fortranコンパイラを所有している必要があります。
C / C++ ユーザー作成およびアクセスサブルーチンはC/C++インターフェースもサポートしています。C/C++で記述されたサブルーチンは、コンパイルされるため、極めて効率的です。ただし、C/C++で記述されたユーザーサブルーチンを使用するには、C/C++コンパイラを所有している必要があります。
Python ユーザー作成サブルーチンは、Pythonスクリプト言語で記述することもできます。Pythonは、広く使用されているオブジェクト指向の簡潔な言語です。オープンソースでもあります。Pythonでユーザーサブルーチンを記述するのは非常に簡単です。経験豊富なプログラマでなくても、Pythonでユーザーサブルーチンを記述できるはずです。Pythonで記述されたサブルーチンは、Fortran/C/C++で記述されたサブルーチンより多少低速な場合があります。ただし、Pythonはさまざまなライブラリをサポートしています。その中で最も注目すべきものがNumPyパッケージとSciPyパッケージです。これらは、Pythonで自由に利用できる、科学計算や工学計算用の組み込み関数の、非常に包括的かつ効率的なライブラリです。これらの詳細については、http://numpy.scipy.org/およびhttp://www.scipy.org/をご参照ください。すべてのHyperWorks製品にPythonインタープリタがインストールされています。
Compose Altair Composeは、オープンソースのコンピュータープログラミング言語であるOpenMatrix言語(OML)用の統合開発環境およびインタープリタです。Pythonと同様、Compose(より具体的にはOML)でユーザーサブルーチンを記述するのは非常に簡単です。この言語は、特に、マトリクスベースの計算に威力を発揮します。Composeで記述されたサブルーチンは、Python/Fortran/C/C++で記述されたサブルーチンより多少低速な場合があります。別途、Composeをインストールする必要があります。
MATLAB MATLABスクリプト言語は、依然としてMotionSolveユーザー作成サブルーチンを記述するためのもう1つのオプションです。MATLABは、MathWorks, Inc.が開発した独自の言語です。OMLと同様に、マトリックスの操作にぴったりの非常に簡潔な言語です。MATLABで記述されたサブルーチンは、Python/Fortran/C/C++で記述されたサブルーチンより多少低速な場合があります。

サポートされているこれらの言語を組み合わせてユーザーサブルーチンを記述できます。ユーザーサブルーチンはMotionSolveの高度な機能です。これによってモデルが複雑になり、記述が間違っていた場合はデバッグが必要になるため、どうしても必要な場合にのみ使用するようにしてください。

MotionSolve内のサブルーチンファシリティは、Adamsで定義された文書化された標準と互換性があります。そのため、文書化された標準に準拠していれば、AdamsユーザーサブルーチンDLL/SOは、ソースを再コンパイルしたり、DLL/SOを作り直したりしなくても、MotionSolveで直接機能するはずです。