FIESUB

Modeling場のサブルーチンは、力場エンティティの6成分の力 / トルクとそれらの導関数を計算するために使用します。

使用

FIESUBで計算された力 / トルクを使用するユーザー定義の場:

<Force_Field
   id                  = "303001"
   i_marker_id         = "30301010"
   j_marker_id         = "30301020"
   body1_id            = "30101"
   body2_id            = "30301"
   usrsub_param_string = "USER(303001)"
   usrsub_dll_name     = "NULL"
 />

フォーマット

Fortranの呼出し構文
SUBROUTINE FIESUB (ID, TIME, PAR, NPAR, DISP, VELO, DFLAG, IFLAG, FIELD, DFDDIS, DFDVEL)
C/C++の呼出し構文
void STDCALL FIESUB (int *id, double *time, double *par, int *npar, double *disp, double *veloint, int *dflag, int *iflag, double *field, double *dfddis, double *dfdvel)
Pythonの呼出し構文
def FIESUB(id, time, par, npar, disp, velo, dflag, iflag):
    return [field, dfddis, dfdvel]
MATLABの呼出し構文
function [field, dfddis, dfdvel] = FIESUB(id, time, par, npar, disp1, velo, dflag, iflag)

属性

ID
[整数]
場要素識別子。
TIME
[倍精度]
現在のシミュレーション時間。
PAR
[倍精度]
ユーザー定義のステートメントで提供されたリストにある定数引数を含む配列。
NPAR
[整数]
PAR配列のエントリの数。
DISP
[倍精度]
Jマーカーの座標系で表された、Jマーカーに対するIマーカーの並進 / 回転変位を含む次元6の配列。
VELO
[倍精度]
Jマーカーの座標系で表された、Jマーカーに対するIマーカーの並進 / 回転速度を含む次元6の配列。
DFLAG
[論理]
差分フラグ。
IFLAG
[論理]
初期化フラグ。

出力

FIELD
[倍精度]
計算された力 / トルクを含む次元6の配列。
DFDDIS
[倍精度]
変位配列に関する6つの力 / トルク成分の導関数を表す6x6マトリクスの値を含む次数36の配列。DFDDISは、列優先順を使用して構築されます。
DFDVEL
[倍精度]
速度配列に関する6つの力 / トルク成分の導関数を表す6x6マトリクスの値を含む次数36の配列。DFDVELは、列優先順を使用して構築されます。

def FIESUB(id, time, par, npar, disp, velo, dflag, iflag):
    dfddis=[]
    dfdvel=[]
        for i in xrange(6):
            for j in xrange(6):
                dfddis.append(0.0)
                dfdvel.append(0.0)
    dfddis[0*6+0] = -14037.  
    dfddis[1*6+1] = -1049.
    dfddis[2*6+2] = -1049.
    dfddis[3*6+3] = -2120.
    dfddis[4*6+4] = -9358.
    dfddis[5*6+5] = -9358.
        for i in xrange(6):
            for j in xrange(6):
                dfdvel[j*6+i] =0.1*dfddis[j*6+i]
    d=list(disp);
    d[0] = d[0]-5.0;
    field=[]
        for i in xrange(6):
            field.append(0.0)
            for j in xrange(6):
                field[i] = field[i]+dfddis[j*6+i]*d[j]+dfdvel[j*6+i]*velo[j]
    return [field, dfddis, dfdvel]