Vforce

Model ElementVFORCEは、2つのマーカー間で作用する一般力を定義します。

クラス名

Vforce

説明

力ベクトルは、3つ目のマーカーを基準にして、3つの成分により定義されます。成分は、MotionSolveの式を使用するか、ユーザー定義のサブルーチンを使用して定義できます。任意のシステム状態および時間の関数にできます。

属性の概要

名前 プロパティ コマンドで変更可能か 設計可能か
id Int ()    
label Str ()    
i Reference (Marker)
jfloat Reference (Marker)
rm Reference (Marker)
fx Function ()
fy Function ()
fz Function ()
function Function ("VFOSUB")  
routine Routine ()    
active Bool ()  

使用法

Vforceは次のように使用できます:
#1. Force defined in a MotionSolve expression Vforce (i=objMarker, j=objMarker, fx=expressionString, fy=expressionString, fz=expressionString, optional_attributes)
#2. Force defined in a compiled DLLVforce (i=objMarker, j=objMarker, function=userString, routine=string, optional_attributes)
#3. Force defined in a Python scriptVforce (i=objMarker, j=objMarker, function=userString, routine=functionPointer, optional_attributes)

属性

MotionSolve式で定義される力
i
既存のMarkerオブジェクトへの参照。
力が適用されるマーカーを指定します。これは力の作用点として指定されます。
j
既存のフローティングMarkerオブジェクトへの参照。
反力が適用されるマーカーを指定します。これは力の反作用点として指定されます。
fx
有効なMotionSolve式を定義する文字列。
参照座標系のx軸に沿って作用する力を定義するMotionSolve式を指定します(後述するrmを参照)。任意の有効な実行時MotionSolve式を入力として指定できます。
fy
有効なMotionSolve式を定義する文字列。
参照座標系のy軸に沿って作用する力を定義するMotionSolve式を指定します(後述するrmを参照)。任意の有効な実行時MotionSolve式を入力として指定できます。
fz
有効なMotionSolve式を定義する文字列。
参照座標系のz軸に沿って作用する力を定義するMotionSolve式を指定します(後述するrmを参照)。任意の有効な実行時MotionSolve式を入力として指定できます。
コンパイルされたDLLで定義される力
i
既存のMarkerオブジェクトへの参照。
力が適用されるマーカーを指定します。これは力の作用点として指定されます。
j
既存のフローティングMarkerオブジェクトへの参照。
反力が適用されるマーカーを指定します。これは力の反作用点として指定されます。
function
有効なユーザー関数MotionSolve式を定義する文字列。
データファイルから、Vforceが定義されるユーザー定義のサブルーチンに渡されるパラメータのリスト。
routine
文字列。
ユーザーサブルーチンの代替名を指定します。この名前は、“∷”で区切られた情報の2つの部分で構成されます。1つ目は、ユーザー定義のVforceの応答を計算する関数を含む共有ライブラリへのパス名です。2つ目は、計算を実行する共有ライブラリ内の関数の名前です。
例: routine="/staff/Altair/engine.dllmyVforce"
  • "/staff/Altair/engine.dllはDLLです。
  • "myVforce"は、計算を実行するこのDLL内の関数です。
指定しない場合、routineはデフォルトでVFOSUBになります。
Python関数で定義される力とトルク
i
既存のMarkerオブジェクトへの参照。
力が適用されるマーカーを指定します。これは力の作用点として指定されます。
j
既存のフローティングMarkerオブジェクトへの参照。
反力が適用されるマーカーを指定します。これは力の反作用点として指定されます。
function
有効なユーザー関数MotionSolve式を定義する文字列。
データファイルから、Vforceが定義されるユーザー定義のサブルーチンに渡されるパラメータのリスト。
routine
Python内の呼び出し可能な関数へのポインタ。
例:routine=myVforce
  • myVforceは、モデルが存在する場所ならどこからでも呼び出すことが可能なPython関数またはメソッドです。
属性routineは省略可能です。
指定しない場合、routineはデフォルトでVFOSUBになります。
オプション属性 - すべてのバリアントに使用できます。
id
整数
要素識別番号を指定します。この番号は、モデル内のすべてのVforceオブジェクトの中で一意にする必要があります。
この属性は省略可能です。MotionSolveは、IDが指定されていない場合、自動的にこれを作成します。
値の範囲: id > 0
label
文字列
Vforceオブジェクトの名前を指定します。
この属性は省略可能です。指定しない場合は、MotionSolveが代わりにラベルを作成します。
rm
既存のMarkerオブジェクトへの参照
トルク成分を計算する座標系を持つマーカーを指定します。rmは、地面を含め、どのボディ上のマーカーでもかまいません。
rm属性は省略可能です。
指定しない場合、rmはデフォルトで全体座標系になります。

  1. 式を介して定義されるVforce
    Vfo1 = Vforce (label="nonlinear bushing", i=m1801, jfloat=m1901, rm=m1903,
    fx="-1e3*DX(1801,1903,1903) -2*(VX(1801,1903,1903,1903)**3)",
    fy="-1e3*DY(1801,1903,1903) -2*(VY(1801,1903,1903,1903)**3)",
    fz="-1e3*DZ(1801,1903,1903) -2*(VZ(1801,1903,1903,1903)**3)")
  2. Python関数で定義されるVforce
    # Define the user subroutine first
    def myVfosub (id, time, par, npar, dflag, iflag):
      i = par[0]
      j = par[1]
      k = par[2]
      c = par[3]
    
    # Get the state of the bushing
      dx = DX(i,j,j)
      dy = DY(i,j,j)
      dz = DZ(i,j,j)
      vx = VX(i,j,j,j)
      vy = VY(i,j,j,j)
      vz = VZ(i,j,j,j)
    
    # Compute force
      fx = -k*dx - c*(vx**3)
      fy = -k*dy - c*(vy**3)
      fz = -k*dz - c*(vz**3)
      
      return [fx, fy, fz]
# Define a bushing with nonlinear damping
vfo2 = Vforce (label= "nonlinear bushing" , i=m1801, jfloat=m1901, rm=m1903,
  function= "user(1801,1903,1000.0, 2.0)" , routine=myVfosub ) 

コメント

  1. プロパティの概要、使用理由、および拡張方法については、プロパティをご参照ください。
  2. Vforceの詳細については、Force: Two Body Vectorをご参照ください。