次へ
上へ
前へ
目次へ
次へ:Frequency calculations
上へ:Filling and solving the
前へ:Linear static analysis
目次へ
非線形計算では解は反復によって求められます。できるだけステップを大きくして収束させるためにステップを有限の数のイテレーションに分割するオプションが存在します。ステップにおける初期インクリメントのサイズは(*STATIC、*DYNAMIC, *VISCO、*HEAT TRANSFER、*COUPLED TEMPERATURE-DISPLACEMENTS の下の行で)ユーザーによって設定されます。またユーザーはインクリメントの数も制御できます(パラメーター DIRECT)。ただしほとんどの場合、インクリメントのサイズは前のインクリメントでの収束率に基づいてプログラムで決めた方がよい結果を得られます。残留力が十分小さくなるまで反復を繰り返すことで各インクリメントの解が得られます。
従って nonlingeo の構造は図150の流れ図のようになります。この図には全てのサブルーチンが挙げられ、各行がサブルーチンと対応します。右上の「preliminary」は繰り返し使用される5つのサブルーチンを省略したものです。サブルーチンまたはサブルーチン・グループが四角かっこで囲まれている場合、それは特定の条件下でのみ実行されることを意味しています。詳しく説明すると nonlingeo の構造は以下の様になります。
図150:サブルーチン nonlingeo の流れ図
|
- 最初のインクリメントの前
- 移流自由度の数と輻射自由度の数を決定(envtemp.f)
- 周期対称性のある場合には輻射自由度を拡張(radcyc.c)
- 接触フィールドの初期化と独立接触表面の3角形分割(inicont.c)
- 存在する場合にはその時点での振幅を考慮(checktime.f)
- 動計算における初期加速度と質量行列(非定常熱伝達計算の場合には比熱行列)を計算(initialaccel.c)。これには以下が含まれます。
- インクリメント開始時の荷重を決定(tempload.f)
- 熱計算の場合:強制対流のためのシンク温度、空洞輻射境界条件を決定(radflowload.f)
- 接触位置を更新し、非線形接触ばね要素を再定義(contact.f)
- 存在する場合には非線形 MPC の係数を更新
- MPC のトポロジーが変化する場合(非線形 MPC の他の線形・非線形 MPC に対する依存)、または接触が関連する場合:remastruct を呼び出し
- 内力の決定(results.f)
- 剛性行列、質量行列の作成と外力の決定(mafillsm.f)。これは陽的計算のために質量行列を得る際にも行なわれます。
- 外力から内力を引いて残留力を得ます。
- spooles.c、preiter.c、または使用可能な任意の疎行列ソルバーを用いて方程式系を解きます。陽的動計算では解を陽的に計算します(系を解く必要はありません)。解はステップ開始時の加速度です。
- 各インクリメント
- 最初のイテレーションの前
- インクリメント終了時の荷重を決定(tempload.f)
- 熱計算の場合:強制対流のためのシンク温度、空洞輻射境界条件を決定(radflowload.f)
- 接触位置を更新し、非線形接触ばね要素を再定義(contact.f)
- 存在する場合には非線形 MPC の係数を更新
- MPC のトポロジーが変化する場合(非線形 MPC の他の線形・非線形 MPC に対する依存)、または接触が関連する場合:remastruct を呼び出し
- 運動ベクトルを予測
- 内力の決定(results.f)。内力と外力の差が残留力になります。残留力が十分小さい場合には解が見つかったとします。もしそうでない場合は収束に達するまでイテレーションが続きます。残留力は次のイテレーションでの駆動力となります。
- 各イテレーション
- インクリメント終了時の荷重を決定(tempload.f)
- 熱計算の場合:強制対流のためのシンク温度、空洞輻射境界条件を決定(radflowload.f)
- 接触位置を更新し、非線形接触ばね要素を再定義(contact.f)
- 存在する場合には非線形 MPC の係数を更新
- MPC のトポロジーが変化する場合(非線形 MPC の他の線形・非線形 MPC に対する依存)、または接触が関連する場合:remastruct を呼び出し、内力を再決定(results.f)
- 方程式系を作成し、外力を決定(mafillsm.f)。陽的動計算では系を作成する必要はなく、外力の決定だけが行なわれます(rhs.f)。
- 外力から内力を引いて残留力を得ます(calcresidual.c)。
- spooles.c、preiter.c、または使用可能な任意の疎行列ソルバーを用いて方程式系を解きます。陽的動計算では解を陽的に計算します(系を解く必要はありません)。
- results.f で各積分点での内力と材料剛性行列を計算
- 外力から更新された内力を引いて新しい剰余を求めます(calcresidual.c)
- 剰余が十分小さい場合にはイテレーションを終了(checkconvergence.c)。収束判定は ABAQUS で使用されているものに非常によく似ています。
- 出力がユーザーの入力制御によって抑制されていない場合の最終イテレーションの後。
- 有効な自由度の変位解を始めとして、全ての自由度で必要な結果を決定します。.dat ファイルへのデータ保存を含めこの処理はサブルーチン results.f で行なわれます。
- .frd ファイルに結果を保存します。周期対称性の無い構造体ではルーチン out.f が呼び出され、周期対称性の有る構造体ではルーチン frdcyc.c が out を呼ぶ前に呼び出されます。行列を埋めている間にエラーが起きた場合は、形状のみが出力されます。
- 最終インクリメントの後(ユーザーの入力制御によってこの最終インクリメントでの出力が無い場合のみ)
- 有効な自由度の変位解を始めとして、全ての自由度で必要な結果を決定します。.dat ファイルへのデータ保存を含めこの処理はサブルーチン results.f で行なわれます。
- .frd ファイルに結果を保存します。周期対称性の無い構造体ではルーチン out.f が呼び出され、周期対称性の有る構造体ではルーチン frdcyc.c が out を呼ぶ前に呼び出されます。行列を埋めている間にエラーが起きた場合は、形状のみが出力されます。
次へ
上へ
前へ
目次へ
次へ:Frequency calculations
上へ:Filling and solving the
前へ:Linear static analysis
目次へ
guido dhondt
2016-03-08