Gforce

Model ElementGforceは、2つのマーカー間で作用する一般的な力とトルクを定義します。

クラス名

Gforce

説明

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

属性の概要

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

使用法

Gforceには、次の3通りで使用できます。
  1. MotionSolve式で定義される力とトルク。
    Gforce (i=objMarker, j=objMarker, fx=expressionString, fy=expressionString, fz=expressionString, 
    tx=expressionString, ty=expressionString, tz=expressionString, optional_attributes)
  2. コンパイルされたDLLで定義される力とトルク。
    Gforce (i=objMarker, j=objMarker, function=userString, routine=string, optional_attributes)
  3. 力とトルクのPython/Matlabスクリプト。
    Gforce (i=objMarker, j=objMarker, function=userString, routine=functionPointer, optional_attributes)

属性

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

  1. 式を介して定義されるGforce。
    gfo1 = gforce (label="nonlinear bushing", i=m1801, jfloat=m1901, rm=m1903, 
       fx="-1e3*DX(1801,1903,1903)", 
       fy="-1e3*DY(1801,1903,1903)", 
       fz="-1e3*DZ(1801,1903,1903)", 
       tx="-5e3*AX(1801,1903) - 2*WX(1801,1903,1903)**, 
       ty="-5e3*AY(1801,1903) - 2*WY(1801,1903,1903)**3" 
       tz="-5e3*AZ(1801,1903) - 2*WZ(1801,1903,1903)**3" )
  2. Python関数で定義されるGforce。
    # Define the user subroutine first 
    def myGfosub (id, time, par, npar, dflag, iflag):
      i = par[0]
      j = par[1]
      k = par[2]
      kt= par[3]
      ct= par[4]
    
    # Get the state of the bushing
      dx = DX(i,j,j)
      dy = DY(i,j,j)
      dz = DZ(I,j,j)
    
      ax = AX(i,j)
      ay = AY(i,j)
      az = AZ(i,j)
    
      wx = WX(i,j,j)
      wy = WY(i,j,j)
      wz = WZ(i,j,j)
    
    # Compute force & torque
      fx = -k*dx
      fy = -k*dy
      fz = -k*dz
      tx = -kt*ax - ct*(wx**3)
      ty = -kt*ay - ct*(wy**3)
      tz = -kt*az - ct*(wz**3)
    
    return [fx, fy, fz, tx, ty, tz]
    
    # Define a bushing with nonlinear damping
    gfo2 = Gforce (label="nonlinear bushing", i=m1801, jfloat=m1901, rm=m1903,
       function="user(1801,1903,1000.0,5000.0, 2.0)", routine=myGfosub )

コメント

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