GCOSUB

ModelingConstraint_General要素を使用して定義される拘束を計算します。通常、このような拘束は、さまざまなホロノミック拘束や非ホロノミック拘束の定義と組み合わせて使用されます。代表的な例は、ある粒子が別の粒子を追跡する、いわゆる“追跡曲線”拘束です。

使用

ユーザー定義の一般拘束を計算するためにGCOSUBを呼び出すConstraint_General要素。

<Constraint_General
     id                  = "1"
     usrsub_param_string = "USER(5000000,1,30101020,30102020)"
     usrsub_dll_name     = "NULL"
     usrsub_fnc_name     = "GCOSUB"
  />

フォーマット

Fortranの呼出し構文
SUBROUTINE GCOSUB (ID, TIME, PAR, NPAR, DFLAG,IFLAG, RESULT)
C/C++の呼出し構文
void STDCALL GCOSUB (int *id, double *time, double *par, int *npar, int *dflag, int *iflag, double *result)
Pythonの呼出し構文
def GCOSUB(id, time, par, npar, dflag, iflag):
    return result
MATLABの呼出し構文
function result = GCOSUB(id, time, par, npar, dflag, iflag)

属性

ID
[整数]
Constraint_General要素識別子。
TIME
[倍精度]
現在のシミュレーション時間。
PAR
[倍精度]
ユーザー定義のステートメントで提供されたリストにある定数引数を含む配列。
NPAR
[整数]
PAR配列のエントリの数。
DFLAG
[整数]
出力のタイプを定義する制御値の整数の配列。1つ目の値はARRAY出力を、2つ目の値はSCALAR出力を、3つ目の値はMATRIX出力を制御します。
IFLAG
[論理]
初期化フラグ。

出力

RESULT
[倍精度]
拘束の値。

def GCOSUB(id, time, par, npar, dflag, iflag):

    [u1, errflg] = py_sysary("TDISP", [par[1],par[0]])
    [v1, errflg] = py_sysary("TDISP", [par[5],par[3]])
    [u2, errflg] = py_sysary("TDISP", [par[2],par[0]])
    [v2, errflg] = py_sysary("TDISP", [par[4],par[3]])
    result = u1[0]*v1[0]+u1[1]*v1[1]+u1[2]*v1[2]+u2[0]*v2[0]+u2[1]*v2[1]+u2[2]*v2[2]

    return result