PTdSFSUB
ModelingForce_PTdSFエンティティの垂直抗力と摩擦力を計算するために使用します。
使用
接触ポイントの変位と速度を使用して、PTDSFSUB内の垂直抗力と摩擦力を計算する、ユーザー定義のPTdSF力。
<Force_PTdSF
id = "301001"
i_marker_id = "30103070"
radius = "0.1"
ref_dsurface_id = "301001"
force_model = "USERSUB"
usersub_param_string = "USER(100, 1000, 0.1)"
interpreter = "Python"
script_name = "ptdsfsub.py"
usrsub_fnc_name = "PTDSFSUB"
/>
フォーマット
- Fortranの呼出し構文
-
SUBROUTINE PTDSFSUB (ID, TIME, PAR, NPAR, DISP, VELO, DFLAG, IFLAG, NORMAL_FORCE, FRIC_FORCE)
- C/C++の呼出し構文
-
void STDCALL PTDSFSUB (int*id,double*time,double*par,int*npar,double*disp,double*velo,int *dflag,int*iflag,double*normal_force,double*fric_force)
- Pythonの呼出し構文
-
def PTdSFSUB(id, time, par, npar, disp, velo, dflag, iflag): return [normal_force, friction_force]
- MATLABの呼出し構文
-
非サポート
属性
- ID
- [整数]
- TIME
- [倍精度]
- PAR
- [倍精度]
- NPAR
- [整数]
- DISP
- [倍精度]
- VELO
- [倍精度]
- DFLAG
- [整数]
- IFLAG
- [論理]
出力
- NORMAL_FORCE
- [倍精度]
- FRIC_FORCE
- [倍精度]
例
PythonでのPTdSFSUBの記述方法の例を以下に示します。
def PTdSFSUB(id, time, par, npar, disp, velo, dflag, iflag):
normal_force = [0]
friction_force = [0,0,0]
normal_force[0] = par[1]*disp[0] + par[2]*velo[0]
friction_force[0] =0.01*normal_force[0]*velo[1]
friction_force[1] =0.01*normal_force[0]*velo[2]
friction_force[2] =0.01*normal_force[0]*velo[3]
return [normal_force, friction_force]
コメント
Iマーカーを中心とする特定の半径の球が、変形可能サーフェスと接触していない場合や、uまたはv、あるいはその両方が範囲外の場合は、PTdSFSUBは収束した各時間ステップでのみ呼び出され、出力(垂直抗力と摩擦力)は完全に無視されます。