DIFSUB

Modeling制御DIFFエンティティの微分方程式の値を計算するために使用します。

使用

ユーザー定義の微分方程式に基づく制御diffステートメント:

<Control_Diff
     label               = "Diff/301001"
     id                  = "301001"
     is_implicit         = "FALSE"
     ic                  = "0."
     ic_dot              = "0."
     is_static_hold      = "FALSE"
     type                = "USERSUB"
     usrsub_param_string = "USER(30102020,30101010)"
     usrsub_dll_name     = "NULL"
  />

フォーマット

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

属性

ID
[整数]
微分方程式要素識別子。
TIME
[倍精度]
現在のシミュレーション時間。
PAR
[倍精度]
ユーザー定義のステートメントで提供されたリストにある定数引数を格納した配列。
NPAR
[整数]
PAR配列のエントリの数。
DFLAG
[論理]
ソルバーが偏導関数を評価するときにtrueに設定される差分フラグ。
IFLAG
[論理]
初期化フラグ。

出力

VALUE
[倍精度]
微分方程式の値を含む倍精度値。

def DIFSUB(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")
    ipar =1*[0]
    ipar[0] =id
    [dif, errflg] = py_sysfnc("DIF", ipar)
    py_errmes(errflg,"Error calling SYSFNC for DIF",id,"STOP")
    value = dz-dif
    return value