ユーザー定義の路面モデル

路面データファイルにurmのファイル拡張子がある場合、COSIN/roadは路面評価ルーチンが提供されており、以下の動的に読み込み可能なライブラリにコンパイルされたと見なします:
  • Windowsではurm.dll

    LINUXおよびUNIXではそれぞれliburm.soおよびliburm.sl

このライブラリは、対応するオペレーティングシステムによって設定されたルールに従って検索されます。このライブラリを使用可能にするには、それをCOSIN/roadおよびそのコール元ソルバーが起動される作業ディレクトリに置く必要があります。

ライブラリには、以下の形式を持つCまたはC++関数が含まれている必要があります:
extern void urm (int ti, double t, double x, double y, double*z, double*vx, double*vy, double*vz, double*mu, int*ier, char*file);
このルーチンのみが持つタスクは、以下を提供することです:
  • 路面高さz
  • 路面の速度vx、vy、vz
  • 摩擦修正係数
これらすべては以下の関数となります:
  • 時間 t
  • 位置 x、y

COSIN/roadは、上記の拡張子urmを付加したデータファイルの名前を、このルーチンに渡します。このファイルは、ユーザー定義の路面モデルの独自の方法で読み取られ解釈されます。

動作パラメータの意味は以下のとおりです:
パラメータ C/C++タイプ データフロー 単位 意味
ti int 入力 - ホイールインデックス。一般的には以下の値を使用します:
1
fl
2
fl
3
rl
4
rr
、..
t double 入力 s シミュレーション時間。COSIN/roadによって提供されます。
x double 入力 m 路面高さが必要となる位置のx成分。COSIN/roadによって提供されます。
y double 入力 m 路面高さが必要となる位置のy成分。COSIN/roadによって提供されます。
z double* 出力 m 路面高さ。
vx double* 出力 m/s 全体座標系に対する路面の相対速度のx成分(ゼロ以外、ドラムまたは平ベルトのシミュレーションの場合など)。
vy double* 出力 m/s 全体座標系に対する路面の相対速度のy成分。
vz double* 出力 m/s 全体座標系に対する路面の相対速度のx成分(ゼロ以外、油圧式4ポスターのシミュレーションの場合など)。
mu double* 出力 - 摩擦特性修正係数(値は通常1.0で、タイヤモデルで定義された摩擦特性から修正がないことを意味します)。
ier int* 出力 - エラーコード。路面の評価(またはファイルのオープンおよび読み取り)が成功した場合は0である必要があります。そうでない場合は0以外の数値になります。
file char* 入力 文字列 路面データファイルの名前(COSIN/roadにより提供されます)。パスを含む場合と含まない場合があります。文字列の正確な解釈は、該当するオペレーティングシステムのルールに依存します。

ユーザールーチンによってこのファイルがいつ開いて読み取られるかが決定されます。名前はurmへの各コールで提供されます。ただし、通常読み取られる必要があるのは、対応するホイールインデックスによるurmの最初のコール時のみです。urmでは、ローカルの静的変数にファイル内の情報を保存する必要がある場合があります。

以下に、そのようなC関数の最も単純な例のリストを示します。コード(urm.c)は、FTire/libダウンロードのサブフォルダーsdkに含まれます。
/* place-holder for user-defined road model (URM) */

#include <stdio.h>

extern void urm (int ti, double t, double x, double y,
                 double*z, double*vx, double*vy, double*vz, double*mu, int*ier, char*file) {

  static int first=1;

  if (first) {
    printf("\nthis is the demo user road model, using data file %s..\n",file);
    first=0;
  }

  /* terminate road model */
  if (t>=0.9e60) {
    return;
  }

  *z=0.0;
  if (x>1.0 && x<1.2) *z=0.02;
  *vx=0.0;
  *vy=0.0;
  *vz=0.0;
  *mu=1.0;
  *ier=0;
}

Windowsでは、Microsoft™ C/C++コンパイラーがインストールされている場合、この関数をコンパイルして、バッチファイルmakeum.batを使用して動的リンクライブラリにリンクすることができます。これも、FTire/libダウンロードのサブフォルダーsdkに含まれています。このファイルでは、コンパイラーのインストール場所が対応する検索パスに含まれていると見なします。通常のインストールの場合はそのようになります。