VARSUB

Modelingユーザー定義の変数要素の代数値を計算します。

使用

代数値を計算するためにVARSUBを呼び出すユーザー定義の変数:

<Reference_Variable
     id                  = "30100100"
     type                = "USERSUB"
     usrsub_param_string = "USER(30131,30100,0.01,1)"
     usrsub_dll_name     = "NULL"
/>

フォーマット

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

属性

ID
[整数]
ユーザー定義の変数要素識別子。
TIME
[倍精度]
現在のシミュレーション時間。
PAR
[倍精度]
ユーザー定義のステートメントで提供されたリストにある定数引数を含む配列。
NPAR
[整数]
PAR配列のエントリの数。
DFLAG
[論理]
差分フラグ。
IFLAG
[論理]
初期化フラグ。

出力

VALUE
[倍精度]
VARSUBが計算した代数変数値を含む出力。

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

    ipar = 2*[0]
    ipar[0] = int(par[0])
    ipar[1] = int(par[1])
    [dz, errflg] = py_sysfnc("DZ", ipar)
    py_errmes(errflg,"Error calling SYSFNC for DZ",id,"STOP")
    [vz, errflg] = py_sysfnc("VZ", ipar)
    py_errmes(errflg,"Error calling SYSFNC for VZ",id,"STOP")

    value = -par[2]*vz - par[3]*dz
    return value