SENSUB/SEVSUB

Modelingセンサー要素の値を計算 / 評価するために使用します。SENSUBはイベントを検出できます。一方、SEVSUBはセンサーによって定義されたイベントが発生したときに計算されたスカラー値を返すために使用します。

使用

出力される量を計算するためにSENSUB/SEVSUBを呼び出すユーザー定義の要求:

<Sensor_Evaluate
     id                  = "100"
     type                = "USERSUB"
     usrsub_param_string = "USER(2,22,11)"
     usrsub_dll_name     = "NULL"
  />
  <Sensor_Event
     label               = "Sensor/100"
     id                  = "100"
     type                = "USERSUB"
     usrsub_param_string = "USER(22,11)"
     usrsub_dll_name     = "NULL"
     compare             = "GE"
     value               = "0."
     evaluate_id         = "100"
     error_tol           = "0.0001"
  />

センサーイベント要素はSENSUBサブルーチンを呼び出します。一方、センサー評価要素はセンサーによって検出されたイベントが発生したときにSEVSUBで計算された値を返します。

フォーマット

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

属性

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

出力

VALUE
[倍精度]
センサーイベントが返す関数の値を含む出力値(SENSUBの場合)。
VALUE
[倍精度]
センサー評価エンティティが計算する関数の値を含む出力値(SEVSUBの場合)。

def SENSUB(id, time, par, npar, iflag):

    ipar =2*[0]
    twopi =2.0*pi
    
    ipar[0] = int(par[0])
    ipar[1] = int(par[1])
    [AZ, errflg] = py_sysfnc("AZ", ipar)
    value = fmod(AZ,twopi) - (pi/2.0)
    return value

def SEVSUB(id, time, par, npar, iflag):

    itype =int(par[0])
        ipar =1*[0]
        ipar[0] =int(par[1]) 
        [senval, errflg] = py_sysfnc("SENVAL", ipar)
        value = senval+1.0

    return value