Sforce

Model ElementSforceは、2つのMarker間で作用する力またはトルクを定義します。

クラス名

Sforce

説明

力またはトルクは、大きさと方向によって表現されます。方向は、TYPEACTIONONLYに応じて事前に定義されます。詳細については、コメントForce:Two Body Scalarモデルステートメント内)をご参照ください。大きさは、関数式、ユーザー定義サブルーチン、Pythonスクリプト、またはMATLABスクリプトを使用して定義できます。任意のシステム状態および時間の関数にできます。

属性の概要

名前 プロパティ コマンドで変更可能か 設計可能か
id Int ()    
label Str ()    
i Reference (Marker)
j Reference (Marker)
type Enum ("TRANSLATION ROTATION")    
actiononly Bool ()  
function Function ("SFOSUB")  
routine Routine ()    
active Bool ()  

宣言

#1. Force or torque magnitude defined in a MotionSolve expression 
Sforce (i=objMarker, j=objMarker, type=string, function=expressionString, routine=string, optional_attributes)

#2. Force or torque magnitude defined in a compiled DLL
Sforce (i=objMarker, j=objMarker, type=string, function=userString, routine=string, optional_attributes)

#3. Force or torque magnitude defined in a Python/Matlab script
Sforce (i=objMarker, j=objMarker, type=string, function=userString, routine=functionPointer, optional_attributes)

属性

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

Pythonインターフェースを使用して下の例をモデル化します。
#<Force_Scalar_TwoBody
#     id             = "7"
#     type           = "TORQUE"
#     i_marker_id    = "71"
#     j_marker_id    = "81" 
#     val_expression = "(SQRT(JOINT(7,2,0,71)**2 + JOINT(7,3,0,71)**2) + 1167)*
#                        STEP(0.044*WZ(71,72,72),-0.01,0.3,0.01,-0.3) * 0.44"
#/>
#
# Normal force: Fn
Fn = "sqrt (joint(7,2,0,71)**2 + joint(7,3,0,71)**2) + 1167)"

# Coefficient of friction: Mu
Mu = "step (0.044*wz(71,72,72),-0.01,0.3,0.01,-0.3)"

# Friction Torque = Pin_Radius  * Fn * Mu
pinRad = "0.44"
fricTorque = pinRad  + " * " + Fn + " * " + Mu

# Sforce
sf07 = Sforce (id=7, label= "sfo7", i=m71, j=m81, type="ROTATION", function=fricTorque)

コメント

  1. 下の表は、Sforceによって適用される力またはトルクの向きをまとめたものです。
    タイプ ActionOnly 向き
    "TRANSLATION" True マーカーI上の力の向きは、マーカーJのz軸に沿った単位ベクトルによって定義されます。

    マーカーJを含むボディに対する反力はありません。

    "TRANSLATION" False マーカーI上の力の向きは、マーカーJからマーカーIへの単位ベクトルによって定義されます。

    マーカーJ上の力は、大きさが同じで向きが逆です。

    "ROTATION" True トルクの向きも、マーカーJのz軸によって定義されます。

    マーカーJを含むボディに対する反トルクはありません。

    "ROTATION" False トルクの向きは、マーカーJのz軸によって定義されます。

    マーカーIとマーカーJのz軸は常に平行である必要があります。

  2. プロパティの概要、使用理由、および拡張方法については、プロパティをご参照ください。
  3. Sforceの詳細については、Force:2Two Body Scalarモデルステートメント内)をご参照ください。