格子システム
数値モデル化になじみがない人は、格子生成という処理には少し戸惑ったり、混乱してしまうかもしれません。ここでは、最も一般的なタイプの3次元格子について、それぞれの長所と短所を含めて説明します。
格子生成とは、モデル化対象の領域を、一連の小さいコントロールボリュームに細分化する処理のことです。それぞれのコントロールボリュームには、1つまたは複数の従属流れ変数(速度、圧力、温度など)の値が関連付けられます。通常、これらは、何らかのタイプの局所的な平均値を表します。次に、質量、運動量、エネルギーの保存則への近似を表す数値アルゴリズムを使用して、コントロールボリュームごとにこれらの変数が計算されます。
コントロールボリュームの選択
計算法によって、流体の動きに従って変形する格子(ラグランジュ格子)を使用する場合と、固定格子(オイラー格子)を使用する場合があります。場合によっては、可動格子が変形しすぎないように、2種類の格子を組み合わせて使用します(ALE (Arbitrary-Lagrangian-Eulerian: 任意-ラグランジュ-オイラー)格子)。ここでは、空間を一連のコントロールボリュームに細分化することに関連する問題のみを扱い、可動格子と固定格子の問題については別の記事で説明します。格子には、構造格子と非構造格子があります。構造格子とは、体積要素が整然と並べられていて、シンプルなスキーム(I、J、Kインデックスなど)を使用して要素にラベルを付けたり、隣接要素を識別したりできるということを意味します。非構造格子では、体積要素はどんな方法でも結合でき、隣接要素を識別するために特殊なリストを保持する必要があります。
コントロールボリュームの構造メッシュ作成
構造格子には、要素の形状によって、さまざまな種類があります。最もシンプルな格子は、長方形のボックスを、ボックスの面と並行な面を持つ一連の長方形要素に細分化することによって生成されます。多くの場合、要素の並び順は、x方向、y方向、z方向の順にカウントし、格子要素(I、J、K)がx方向のi番目の要素になるようにするなどして決められます。
規則的なブロック要素で構成されている格子は、最もシンプルな構造です。これは要素の表面を定義する表面のx、y、zの値に関して1次元の配列を3つ定義するだけでよいからです。I、J、Kが、x、y、z方向の最大のインデックスである場合、格子を定義するために必要な値の合計数はI+J+Kです。要素のサイズがゆっくりと変化する長方形格子も、規則性を示し、数値の精度の維持に役立ちます。
長方形要素の制限の1つは、幾何形状の表面が通常は要素全体をブロックに分割することによって近似されることです。これにより、境界が不連続の階段状になります。こうした階段状の部分によって流動損失が生じ、その他の望ましくない効果も発生します(「FAVORTMを使って損失ゼロ」を参照)。
障害物のある曲面をより正確に幾何形状的に表現する方法が2つあります。1つは、指定した幾何形状に合わせて格子要素を変形することです。この場合、要素は一般的な六面体の形状になり、多くの場合、格子は物体適合格子と呼ばれます。もう1つの技法は、長方形要素を保持しつつ、内部を切り取って障害物を定義する方法を補足することです。このタイプの技法は、FAVORTMと呼ばれ、FLOW-3Dプログラムで使用されています。FAVORTM法については、以下で詳細に説明します。
長方形メッシュと変形メッシュの比較
六角形要素では、各頂点の位置を決めるのに3つの座標が必要です。格子全体では3*(I+1)*(J+1)*(K+1)個の値が必要となり、長方形格子に必要なI+J+K個の値より大幅に多くなります。また、表面積や体積など、その他の3次元配列は通常は保持されるため、これらの量は頻繁に再計算する必要はありません。これにより、大量の格納メモリが使用され、メモリの検索時間が長くなります。メモリのコストは下がってきていますが、検索対象のメモリの量は、並列計算では重要な問題となってきています。
純粋な長方形の形状から要素を歪めると、さまざまな影響があります。その1つとして、歪みによって、数値近似が体積要素の中心ではなくなる(対称ではなくなる)ため、数値的精度が低下する場合があります。ただし、この問題は、歪みによって生じた局所的格子の解像度の上昇によって相殺できます。
歪みによるもう1つの影響は、数値近似がより複雑になることです。要素の各面で力やフラックスを法線成分や接線成分に変換しなければならないだけでなく、通常は、与えられた要素の近似に周囲のすべての要素(六面体の26個の面、辺、頂点の隣接要素)からのデータを含めることも必要です。純粋な長方形格子では、直接結合する必要があるのは、与えられた要素と共通する面を持つ6個の隣接要素のみです。
最後に、構造長方形格子を何らかの形状に変形することができない場合もあることに注意してください。たとえば、直線部分をL字型に変形しようとすると、内角で要素が破損または反転します。この制限を解決するには、複数の構造格子ブロックを結合してシンプルな非構造にするか、完全な非構造格子を使用します。
コントロールボリュームの非構造メッシュ作成
非構造格子には、一般性という長所があり、必要なほぼすべての幾何形状に合わせて作成できます。ただし、この一般性には代償が伴います。格子生成処理は完全に自動ではなく、要素の歪みが最小限の場合であっても、許容レベルの局所解像度を持つ格子を生成するには、ユーザによる操作がかなり必要になることがあります。非構造格子では、構造格子より多くの情報を格納し、回復する必要があります(隣接結合リストなど)。また、要素のタイプやサイズを変更すると、数値近似エラーが増加する可能性があります。一般的なタイプの非構造格子は、四面体要素で構成されています。これらの格子は、六面体要素で構成されているものより簡単に生成できる傾向がありますが、数値的精度は通常は低くなります。たとえば、四面体格子要素には平行する面がないため、1次元の流れの擾乱の正確な伝搬を維持する近似を構築するのは困難です。
要するに、格子システムとして何がベストな選択かを決めるには、生成のしやすさ、メモリ要件、数値的精度、複雑な幾何形状に対応する柔軟性、局所的な解像度の高低に対応する柔軟性など、さまざまな要因があります。
FLOW-3Dプログラムでは、フリーグリッディングという妥協案が採用されています。このプログラムは、長方形要素で構成されるシンプルな格子を使用しているため、生成が簡単で、規則正しいため数値的精度が向上するというメリットがあり、必要なメモリストレージはごくわずかです。
幾何形状は、障害物でブロックされている各要素の表面積占有率と体積占有率を計算することによって、格子内で定義されます。このFAVORTM(Fractional Area Volume Obstacle Representation)法では、要素ごとに3つの面積占有率と1つの体積占有率を保存する必要があります。これは、物体適合格子に比べれば比較的少ない情報です。
FAVORTM法の背景にある原理は、各コントロールボリュームに関して、数値アルゴリズムは、1つの圧力、1つの速度、1つの温度などで構成される情報に基づくというものです。そのため、幾何形状を定義するために過剰な情報を使用するということは矛盾しています。したがって、FAVORTM法は、長方形要素のシンプルさを保持しつつ、各体積要素内で平均化された流量を使用することと矛盾しないレベルで複雑な幾何形状を表現します。
FAVORTM法を使用すると、格子と幾何形状を互いに独立して自由に定義できます。ここでは、これをフリーグリッディングと呼びます。フリーグリッディングのメリットは、ユーザ側が格子と幾何形状を非常に短時間で簡単に生成したり変更したりできるということです。格子と障害物の記述が交わる部分の計算作業はすべてコンピュータが行います。これこそが、自動コンピューティングというものです。