計算速度を上げる方法について

解析を高速化する一般的な方法について説明します。これらの方法を使うことで、計算時間とメモリの効率を大幅に向上させることができます。

 

モデルの計算領域の定義

モデル内の異なる領域では、計算安定性のために異なるタイムステップが必要です。たとえば、水(波速度1500 m / s)と鋼(波速度5900 m / s)の同じサイズの要素の場合、水は鋼の最大安定時間ステップ3.93(5900/1500)倍大きくなります。ベースとなっている計算のタイムステップは、より高速な材料である鋼によって設定されるため、水中でのシミュレーション中に、安定性に必要なタイムステップの3.93倍が実行されます。モデルのゾーニング(領域の指定)は、その過度に安定した時間ステップを使用して計算速度を向上させる方法です。過度に安定した時間ステップが多いモデル領域では、n番目ごとの時間ステップのみを実行することにより、より短い時間で安定した解を得ることができます。各領域の比率Nは、最大比率以下の整数でなければなりません。したがって、各領域の比率は最も近い整数に切り捨てられます。水と鋼の例では、3.93は3に切り捨てられるため、水は3番目のタイムステップごとに(4番目ごとではなく)サブサイクルできます。

2つの材料の境界面で、接触する要素(水と鋼など)は共通の表面を共有します。ゾーニングの目的は、OnScaleは両側の要素では、より高速な方の伝搬速度を持つと見なします。つまり、ゾーニングによるメリットを得るには、ゾーンを1つの要素をより遅いマテリアルに移動する必要があります。

OnScaleは、デフォルトでモデル全体を単一のゾーンとしています。解析領域のゾーニングはユーザーが指定する必要があります。以下、ユーザー指定によるゾーニングのガイドラインを示します。

OnScale automatically zones the entire model into a single zone by default. Further enhancement must be done manually. Following are guidelines for manual zoning:

  1. すべての要素をゾーンに含める必要があります。
  2. 要素は単一のゾーンにのみ含めることができます(複数のゾーンのオーバーラップなし)。
  3. 各ゾーンは長方形です。
  4. ゾーンは標準/傾斜パーティション境界を跨ぐことはできません。
  5. 各ゾーンでの計算にはわずかなオーバーヘッドがあるため、非常に小さなゾーンを多数作成しないでください。

ゾーンを定義コマンドzoneは、次のとおりです。

zone iratio ibegin iend jbegin jend kbegin kend zonestep

ここで、iratioは、タイムステップに対するゾーンタイムステップの整数倍です。

Note: iratioをデフォルト値のままにすることを推奨します。

節点インデックスの範囲は、ゾーンに割り当てられるijk空間のモデルの領域を定義します。zonestepパラメータは、ゾーンのタイムステップに上書きされます。この値がゾーンで使用されます

 

節点インデックスの範囲は、ゾーンに割り当てられるijk空間のモデルの領域を定義します。 zonestepパラメータは、ゾーンタイムステップに上書きされます。この入力すると、計算安定性の基準からずれていたとしてもタイムステップとして使用されます。また、iratioパラメータも上書きします。 2次元モデルのzoneコマンドの例は次のとおりです。

 

zone * 1 20 1 15

ここで、ゾーンタイムステップは、iインデックスが1から20、jインデックスが1から15のノードで囲まれたすべての要素のデフォルトです。

extrサーフェスは同じタイムステップのゾーンにある必要があるため、外挿(extr)サーフェスがいくつかの異なるゾーンにある場合、デフォルトの比率のオーバーライドは通常、手動入力で使用されます。

モデル内のゾーンの詳細は、prcsコマンドを入力した直後の印刷ファイル(.flxprt)にあります。

 

時間安定係数(TSF)の調整

時間安定係数は、計算を安定化させるための最大タイムステップを見つけるために使われます。これは、ノードの最短距離(最も近い2つのノード)にわたるモデル内の最速の伝播速度から計算され、この値の80%に設定されます。

80%がデフォルトですが、一部のモデルでは控えめに設定できます。ユーザーは、time コマンド(prcs  コマンドの前に置く必要があります)を使用してこの間を調整することで、以下の事を行うことができます。

  1. 計算時間の短縮(タイムステップが大きいほど、設定された計算時間のステップが少なくなります)
  2. 精度を上げる(時間領域でのサンプリング量を減らす)

ただし、大きくしすぎるとモデルが不安定になるため、注意が必要です。最初は0.95からお試し下さい。

time * * 0.95

TSFを大きくすることは、より長い距離(> 25波長)にわたって伝播するモデルを解析する場合にも役立ちます。時間領域でのサンプリングの影響を減らすことにより、各タイムステップでの解がより正確になるため、数値分散の累積的な影響を減らすことができます。

初期の計算ウィンドウ領域の設定

多くのケースでは、ソース(振動子など)はモデルの全体的なサイズと比較して比較的小さな領域で構成されます。このような場合、

既知の分数のみが計算を必要とする場合、モデルのすべての要素を解くことはほとんど意味がありません。この小さな領域で計算が必要とされている時に、モデル全体を計算する意味はありません。

したがって、モデルの計算をさらに効率化するために、  WNDOコマンドを使用して、ソースの周りに「初期」の計算領域を設定できます。次に、計算ウィンドウは各タイムステップですべての方向に1要素ずつ増加し、機械的な波が常に含まれるようにします。

このコマンドも、PRCSコマンドの前に配置する必要があります  。例えば:

Again, this command must be issued before the PRCS command. For example:

wndo $i1 $i2+1 $j1 $j2+1 $k1 $k2+1