Home > リソース > MBDynチュートリアル > 24.スカラー関数の定義と使用方法
MBDynチュートリアル

24.スカラー関数の定義と使用方法

入力ファイルの中でスカラー関数scalar function)を定義して使用することができます。ここで言うスカラー関数とは、 y = f (x) のように一つの実数入力(x)に対して一つの実数出力(y)が対応する関数のことです。スカラー関数を上手く使えば、モデル作成の幅が広がります。

スカラー関数の定義

スカラー関数は、“scalar function”カードを用いて定義します。scalar functionカードによるスカラー関数の定義は、その関数が使われる前であれば、入力ファイル中のどこでも(ブロック外でも)記述できます。以下に、“multilinear”と“cubicspline”の手法によってスカラー関数“myfunc1”と“myfunc2”を定義した例をそれぞれ示します。

scalar function: "myfunc1",
   multilinear, do not extrapolate,
      -2.0, 0.0,
      -1.0, 0.0,
       0.0, 0.0,
       1.0, 1.0,
       2.0, 1.0,
       3.0, 1.0;

myfunc1

図1: スカラー関数“myfunc1”のグラフ

scalar function: "myfunc2",
   cubicspline, do not extrapolate,
      -2.0, 0.0,
      -1.0, 0.0,
       0.0, 0.0,
       1.0, 1.0,
       2.0, 1.0,
       3.0, 1.0;

myfunc1

図2: スカラー関数“myfunc2”のグラフ

図1および図2のように、定義したスカラー関数を可視化する方法については次項で説明します。

スカラー関数の使用方法

定義したスカラー関数は、入力ファイルの中で自由に使用することができます。特定の入力値に対するスカラー関数の評価値は次のように記述することで得られます。

model::sf:: <scalar function name> ( <x> )

例えば、変数を定義する際に、

set: real A = model::sf::myfunc1(0.5);

または、String Driveを定義する際に、

string, "5.e-2*model::sf::myfunc1(Time)";

などのように使用することができます。ちなみに、“Time”はMBDynであらかじめ定義されている変数で、進行中のシミュレーション時刻を値として持ちます。