COUSUB/COUXX/COUXX2

Modelingユーザーカプラー要素を指定するために使用します。

定義

カプラー拘束は、2つまたは3つのジョイントの相対的な並進運動や回転運動を拘束するために使用します。例えば、サブルーチンベースの定式化を使用することにより、システム状態、関係演算子、および論理式に基づいて可変のカプラー比率を指定できます。代表的な例は、入力ジョイント速度の関数として乗数比で定義された非線形カプラーです。

使用

ユーザー定義のカプラーエンティティの例:

<Constraint_UserConstr
     id                  = id     ...
     usrsub_param_string = "USER(r1,… r30)"
     usrsub_dll_name     = "NULL">
  </Constraint_UserConstr>

フォーマット

Fortranの呼出し構文
SUBROUTINE COUSUB (ID, TIME, PAR, NPAR, DISP, NDISP, IFLAG, PHI)
SUBROUTINE COUXX (ID, TIME, PAR, NPAR, DISP, NDISP, IFLAG, DFDA)
SUBROUTINE COUXX2 (ID, TIME, PAR, NPAR, DISP, NDISP, IFLAG, D2FDA2)
Cの呼出し構文
void  STDCALL  COUSUB (int *id, double *time, double *par, int *npar, double *disp, int *ndisp, int *iflag, double *phi)
void  STDCALL  COUXX (int *id, double *time, double *par, int *npar, double *disp, int *ndisp, int *iflag, double *DFDA)
void  STDCALL  COUXX2 (int *id, double *time, double *par, int *npar, double *disp, int *ndisp, int *iflag, double *D2FDA2)
Pythonの呼出し構文
def COUSUB(id, time, par, npar, disp, ndisp, iflag):
    return phi
def COUXX(id, time, par, npar, disp, ndisp, iflag):
    return dfda 
def COUXX2(id, time, par, npar, disp, ndisp, iflag):
    return dfda2
MATLABの呼出し構文
function phi = COUSUB(id, time, par, npar, disp1, ndisp, iflag)
function dfda = COUSUBXX(id, time, par, npar, disp1, ndisp, iflag)
function d2fda2 = COUSUBXX2(id, time, par, npar, disp1, ndisp, iflag)

属性

ID
[整数]
カプラー要素識別子。
TIME
[倍精度]
現在のシミュレーション時間。
PAR
[倍精度]
ユーザー定義のステートメントで提供されたリストにある定数引数を格納した配列。
NPAR
[整数]
PAR配列のエントリの数。
DISP
[倍精度]
瞬間ジョイント変位の配列。
NDISP
[整数]
DISP配列のサイズ。
IFLAG
[論理]
初期化フラグ。

出力

PHI
[倍精度]
カプラーサブルーチンのスカラー出力値。
DFDA
[倍精度]
変位DISPに対するPHIの偏導関数を含む次元NDISPのベクトル出力値。
D2FDA2
[倍精度]
変位DISPに対するPHIの2階偏導関数を含む次元NDISPのベクトル出力値。

def COUSUB(id, time, par, npar, disp, ndisp, iflag):
    phi = disp[0]+par[0]*disp[1]
    return phi
def COUXX(id, time, par, npar, disp, ndisp, iflag):
    dfda =2*[0]
    dfda[0] =1.0dfda[1] = par[0]
    return dfda
def COUXX2(id, time, par, npar, disp, ndisp, iflag):
    d2fda2 = 2*[0]
    return d2fda2