MOTSUB

Modelingモーションエンティティの変位、速度、または加速度の計算に使用します。

使用

MOTSUBで計算された変位を使用するユーザー定義のモーション:

<Motion_Joint
     id                  = "301001"
     type                = "USERSUB"
     val_type            = "D"
     usrsub_param_string = "USER(5,2)"
     usrsub_dll_name     = "NULL"
     joint_id            = "301002"
     joint_type          = "R"
     motion_type         = "R"
     ic_disp             = "0."
     ic_vel              = "0."
  />

フォーマット

Fortranの呼出し構文
SUBROUTINE MOTSUB (ID, TIME, PAR, NPAR, IORD, IFLAG, VALUE)
C/C++の呼出し構文
void STDCALL MOTSUB (ID, TIME, PAR, NPAR, IORD, IFLAG, VALUE)
Pythonの呼出し構文
def MOTSUB(id, time, par, npar, iord, iflag):
    return value
MATLABの呼出し構文
function value = MOTSUB(id, time, par, npar, iord, iflag)

属性

ID
[整数]
ユーザー定義のモーション要素識別子。
TIME
[倍精度]
現在のシミュレーション時間。
PAR
[倍精度]
ユーザー定義のステートメントで提供されたリストにある定数引数を格納した配列。
NPAR
[整数]
PAR配列のエントリの数。
IORD
[整数]
時間導関数の次数。
0
変位。
1
速度。
2
加速度。
IFLAG
[論理]
初期化フラグ。

出力

VALUE
[倍精度]
Jマーカーを基準にして計算されたIマーカーの変位、速度、または加速度を含む出力値。

def MOTSUB(id, time, par, npar, iord, iflag):

    if par[0]==100001:
        if iflag!=0:
            return -1.0
        if iord==0:
            value = par[1]*pow(time,par[2])
        elif iord==1:
            value = par[1]*par[2]*pow(time,(par[2]-1.0))
        elif iord==2:
            value = par[1]*par[2]*(par[2]-1.0)*pow(time,(par[2]-2.0))
        else:
            value = 0.0
        return value