Field

Model ElementFieldは、2つのマーカーIとJの間で作用する力とトルクを定義します。力とトルクは、IマーカーとJマーカー間の相対変位と時間のみの関数となります。6つの成分(3つの力と3つのモーメント)は、Jマーカーの座標系で定義されます。

クラス名

Field

説明

線形と非線形の両方の関係がサポートされます。非線形Fieldは、FIESUBという名前のユーザー定義サブルーチンで定義されます。

属性の概要

名前 プロパティ コマンドで変更可能か 設計可能か
id Int ()    
label String ()  
i Reference (Marker)
j Reference (Marker)
cratio Double (None)
cmatrix Double ([], count=36)
kmatrix Double ([], count=36)
force Double ([0,0,0,0,0,0], count=6)
length Double ([0,0,0,0,0,0], count=6)
function Function ("FIESUB")  
routine Routine ()    
active Bool ()  

使用法

Fieldは次のように使用できます:
#1: Linear Field
Field (i=objMarker, j= objMarker, optional_attributes)

#2: Nonlinear Field defined in a compiled DLL
Field (i=objMarker, j= objMarker, function= userString, routine=string, optional_attributes)

#3: Nonlinear Field defined in a Python function
Field (i=objMarker, j= objMarker, function= userString, routine=functionPointer, optional_attributes)

属性

線形場
i
既存のMarkerオブジェクトへの参照。
力とモーメントが適用されるマーカーのIDを指定します。これは力の作用点として指定されます。
i属性は必須です。
j
既存のMarkerオブジェクトへの参照。
反力と反モーメントが適用されるマーカーのIDを指定します。これは力の反作用点として指定されます。
j属性は必須です。
kmatrix
6x6マトリクス
kmatrixは、線形FIELDを定義するときに、スプリング力を計算するために使用される6x6剛性マトリクスを定義します。マトリクスを対称にする必要はありません。ただし、半正定値にする必要があります。つまり、任意の変形xに対して{x}T[K]{x} ≥ 0になります。
kmatrix属性は省略可能です。
指定しない場合は、デフォルトで6x6ゼロマトリクスになります。
cmatrix
6x6マトリクス
cmatrixは、線形FIELDの減衰力を計算するために使用される6x6減衰マトリクスを定義します。マトリクスを対称にする必要はありません。ただし、半正定値にする必要があります。つまり、任意の速度yに対して{y}T[C]{y} ≥ 0になります。
cmatrix属性は省略可能です。
指定しない場合は、デフォルトで6x6ゼロマトリクスになります。
cmatrixcratioは相互排他的です。両方ではなくどちらか一方だけを使用します。
cratio
倍精度
減衰スケールファクターを定義します。減衰マトリクスは、C = cratio * kmatrixとして計算されます。
cratio = 0.01の値が一般的に使用されます。
cratio属性は省略可能です。指定しない場合は、デフォルトで0になります。
cratiocmatrixは相互排他的です。減衰を指定する2つの方法のうち使用できるのは常に片方だけです。
Cratio ≥ 0.0
cmatrixcratioは排他的です。両方ではなくどちらか一方だけを使用します。
length
6つの倍精度値のリスト
これらは、Field要素の自由長を定義します。つまり、要素に外力が作用していない場合に、J座標系で測定された、JからIへの変位です。回転は、AX(I,J)、AY(I,J)、およびAZ(I,J)について測定されます。これらは、小さい角度(10度未満)と見なされます。
length属性は省略可能です。指定しない場合は、デフォルトで長さ6のゼロの値の配列となります。
force
6つの倍精度値のリスト
これらは、Field要素に3つの並進プリロード力と3つの回転プリロードトルクを定義します。力とトルクは、J座標系で測定され、変形がない場合にIで作用する力とトルクを表します。
force属性は省略可能です。指定しない場合は、デフォルトで長さ6のゼロの値の配列となります。
コンパイルされたDLLで定義される非線形場
i
既存のMarkerオブジェクトへの参照。
力とモーメントが適用されるマーカーのIDを指定します。これは力の作用点として指定されます。
i属性は必須です。
j
既存のMarkerオブジェクトへの参照。
反力と反モーメントが適用されるマーカーのIDを指定します。これは力の反作用点として指定されます。
j属性は必須です。
function
文字列
データファイルからユーザー定義のサブルーチンに渡されるパラメータのリスト。
function属性は必須です。
routine
文字列
ユーザーサブルーチンの代替名を指定します。この名前は、“∷”で区切られた情報の2つの部分で構成されます。1つ目は、ユーザー定義のFieldの応答を計算する関数を含む共有ライブラリへのパス名です。2つ目は、計算を実行する共有ライブラリ内の関数の名前です。
例: routine="/staff/altair/myfield.dll::myfiesub"
  • "/staff/altair/myfield.dllはDLLです。
  • "myfiesub"は、計算を実行するこのDLL内の関数です。
属性routineは省略可能です。
functionは指定し、routineは指定しない場合、routineはデフォルトでFIESUBになります。
Python関数で定義される非線形場
i
既存のMarkerオブジェクトへの参照。
力とモーメントが適用されるマーカーのIDを指定します。これは力の作用点として指定されます。
i属性は必須です。
j
既存のMarkerオブジェクトへの参照。
反力と反モーメントが適用されるマーカーのIDを指定します。これは力の反作用点として指定されます。
j属性は必須です。
function
文字列
データファイルからユーザー定義のサブルーチンに渡されるパラメータのリスト。
function属性は必須です。
routine
Python内の呼び出し可能な関数へのポインタ。
例:routine=myField
  • myFieldは、モデルが存在する場所ならどこからでも呼び出すことが可能なPython関数またはメソッドです。
属性routineは省略可能です。
指定しない場合、routineはデフォルトでFIESUBになります。
オプション属性 - すべてのバリアントに使用できます。
id
整数
要素識別番号を指定します。この番号は、モデル内のすべてのFieldオブジェクトの中で一意にする必要があります。
この属性は省略可能です。MotionSolveは、IDが指定されていない場合、自動的にこれを作成します。
値の範囲:id > 0
label
文字列
Fieldオブジェクトの名前を指定します。
この属性は省略可能です。指定しない場合は、MotionSolveが代わりにラベルを作成します。
active
ブール
TrueFalseのどちらかを選択します。
  • Trueは、要素がモデル内でアクティブであり、システムの動作に影響を与えていることを示します。
  • Falseは、要素がモデル内で非アクティブであり、システムの動作に影響を与えていないことを示します。エンティティがモデルから削除される場合とほとんど同じですが、必要に応じて“ON”にできる点が異なります。
属性activeは省略可能です。指定しない場合、activeはデフォルトでTrueになります。

XMLシンタックスセクションの1つ目の例を、Python APIを使用してやり直します。
  1. FORCE_FIELDを使用して、下に示すトラスの構造的剛性をモデル化します。
    この要素をモデル化するためのFORCE_FIELDステートメントは次のとおりです:
    <FORCE_FIELD
       ID            = "1"
       I_MARKER_ID   = "100"
       J_MARKER_ID   = "200"
       PRELOAD_Z     = "1000"
       CRATIO        = "0.001"
       K11 = "1.03e4"    K22 = "5.98e3"    K33 = "5.98e3"
       K44 = "8.0e3"     K55 = "8.0e2"     K66 = "7.0e2"
       K26 = "-5.98e3"   K62 = "-5.98e3"
       K35 = "1.02e3"    K53 = "1.02e3"
    />
同じエンティティをPython APIで次のように定義できます:
kmat   = [0.0]*36
rows   = [0, 1, 2, 3, 4, 5, 1, 5, 2, 4]
cols   = [0, 1, 2, 3, 4, 5, 5, 1, 4, 2]
values = [1.03e4, 5.98e3, 5.98e3, 8.0e3, 8.0e2, 7.0e2, -5.98e3, -5.98e3, 1.02e3, 1.02e3]

for row, col, value in zip(rows, cols, values): kmat[row*6+col]=value

f0     = [0.0]*6
f0[2]  = 1e3

# Define the truss object
truss = Field (i=mkr100, j=mkr200, cratio=0.001, kmatrix=kmat, force=f0, label="Truss modeled as a Field")

コメント

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