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
- [整数]
- TIME
- [倍精度]
- PAR
- [倍精度]
- NPAR
- [整数]
- DFLAG
- [整数]
- 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