1 非構造格子の概説

1.1 定義と基本概念

構造格子との対比

非構造格子とは、計算領域を多角形(2次元)や多面体(3次元)などの要素に分割し、それらの隣接関係が要素配置に応じて任意に定まる離散化方式を指す。構造格子では、格子点が規則的な添字(i, j, k)で整理され、隣接は規則的パターンで表現されることが多い。これに対し非構造格子は、要素数や形状が領域全体で一様でなくてもよく、計算対象の幾何に合わせて要素分割設計できる点に特徴がある。

要素・節点接続関係

非構造格子は、節点(ノード)と要素(セル)の組で表される。節点は座標を持つ点として定義され、要素は節点の集合により定義される。重要なのは位相(トポロジー)で、どの要素がどの要素と面を共有し、どの節点がどの要素に属するかという接続関係が格子の骨格となる。接続関係が整合していることにより、離散化方程式の組み立てや境界条件の適用が成立する。さらに、各要素の形状(体積、面積、法線、面の向きなど)を表す幾何情報が、数値積分勾配評価にも関わる。

1.2 利点と適用領域

複雑形状・曲面の取り込み

非構造格子は、曲面や複雑な境界を持つ領域に対して、要素を細分化して境界形状へ追従させやすい。たとえば、流体が流れる内部流路、外部物体の周り、鋳造品や複合材料内部のように形状が複雑な場合、構造格子で全域にわたり規則性を維持することは困難になりがちである。非構造格子では、境界近傍で要素寸法を縮め、必要な解像度を確保する設計を取りやすい。

境界適合性と局所表現

境界適合性とは、境界面を要素の側面や外周に一致させる度合いを指す。非構造格子では、境界に沿って面分割を行うことで、境界条件(速度圧力、温度、応力など)をその場で定義しやすい。加えて、流れ場・温度場・応力分布の急変が起きる箇所だけに細かな要素を配置する局所分割が可能であり、計算資源を効率よく配分する設計につながる。結果として、同じ計算規模でも有効な情報密度を高められる場合がある。

1.3 限界と設計上の論点

格子品質の影響

非構造格子では、要素形状の歪みや角度の悪化が離散化誤差数値安定性に直結することがある。特に、最小角が小さすぎたり、長細い要素(極端なアスペクト比)が増えたりすると、勾配や流束の評価が不安定になりやすい。さらに、要素の体積のばらつきや面の向きの整合不良があると、数値積分の精度行列の性質(条件数など)にも影響が出る。したがって、格子生成は「作る」だけでなく「品質を担保する」工程として扱われる。

計算効率・実装負荷

非構造格子は自由度が高い反面、データ構造が複雑になりやすい。隣接情報や面・エッジの管理、境界ラベルの保持、要素ごとの幾何計算などが必要であり、実装コストが上がる。計算面でも、メモリアクセスが不規則になりやすく、キャッシュ効率が構造格子より低下することがある。加えて、並列計算では領域分割(ドメイン分割)と負荷の均等化が課題となる。格子そのものの要素数・接続の偏りが、計算時間とスケーリングに影響するため、生成段階から最終計算を見据えた設計が求められる。

2 格子生成の方法

2.1 代表的な生成アプローチ

要素分割(メッシュ分割)の基本

要素分割は、領域を小さな要素の集合へ置き換える手続きである。2次元では線分からなる境界を与え、それらに挟まれた領域を三角形や四角形に分ける。3次元では、表面を多角形メッシュで近似し、その内部を四面体や六面体(切り子体)などで満たす。一般に、境界条件の適用や数値積分の精度を考えると、境界近傍で要素サイズや形状を制御する必要がある。要素分割は「境界形状の忠実さ」と「要素の品質」、「必要計算量」の三者の調整として設計される。

二次元から三次元への拡張

二次元で得られた分割を三次元へ拡張するには、単純な押し出し(押し出し方向に同じ形状を複製する)や、表面メッシュを先に作って体積化する方法がよく用いられる。押し出しは実装が比較的容易で、規則的な流路や段付き形状などに適している。一方、複雑な曲面を持つ場合は、まず境界面を三次元要素で近似し、その後に内部充填を行う方針が適合しやすい。いずれの方式でも、層の厚みや遷移の滑らかさが品質に影響するため、サイズ制御の考え方を一貫させることが重要である。

ボロノイ系・デルロネ系に基づく生成

ボロノイ図やデルロネ三角形分割は、点集合から自然に要素分割を得るための基礎概念として広く利用される。デルロネ分割では、点を結ぶ要素が満たすべき幾何条件(たとえば最小角を最大化する傾向)が性質として現れやすい。ボロノイ分割は各点の近傍領域を表し、そこから双対関係を通じて要素分割が構成できる。実務では「目標とする点配置(サイズ場)」と組み合わせ、境界適合や局所的な密度調整を行うことで、品質の良い格子生成へつなげる設計が行われる。

表面メッシュからの体積化手法

表面メッシュからの体積化は、外形や内部境界を表す面メッシュを先に作り、その内部に体積要素を充填する方法である。代表的には、表面に沿って層を作った後に、内部へ要素を詰めるアプローチや、境界を拘束として体積生成を行うアプローチが用いられる。体積化では、境界面と体積要素の接続整合、ギャップの閉塞、自己交差の回避などが課題となる。加えて、曲率の高い領域では表面近似の精度がそのまま体積要素の歪みに影響するため、面メッシュ段階での品質確保が重要になる。

2.2 メッシュ最適化と品質改善

歪み・アスペクト比の制御

メッシュ最適化は、要素の品質指標を改善しつつ、計算に必要な解像度を満たすことを目的とする。歪みを抑えるには、節点位置の再配置や、目標サイズ場の調整が用いられることが多い。アスペクト比が極端になる場合は、細長い要素の連鎖を断つように局所的に要素長さを再設計する。これらは、単に見た目を良くするだけでなく、数値計算での安定性や精度に直結するため、生成・最適化は一連の工程として扱われる。

局所リメッシング

局所リメッシングは、既存格子の全体を作り直すのではなく、誤差が大きい領域や物理量の変化が急な領域だけを再分割する手法である。反復計算の結果から誤差推定を行い、その情報に基づいて要素を細分化することで、計算コストを抑えながら精度を改善できる場合がある。境界近傍では、物理量の急変が層状に現れることがあるため、局所的なサイズ制御が特に有効になる。局所更新では、粗密の境界で不連続が生じないよう、要素の形状品質と整合条件の両立が求められる。

スムージングと改善アルゴリズム

スムージングは、要素形状を保ちつつ節点を微調整することで品質を改善する操作である。一般に、隣接要素に基づく目的関数(歪みの低減、角度改善など)を定め、最適化に近い形で節点位置を更新する。過度な更新は境界形状からの逸脱や、要素のねじれを招くため、制約条件や更新量の制御が重要になる。実務では、生成直後の局所欠陥を整える用途として使われることが多い。

2.3 境界条件を考慮した分割

境界層の表現

境界層とは、壁面近傍で速度や温度、物性値が急激に変化する領域を指すことが多い。境界層を適切に表すには、壁面からの距離に応じて要素サイズを段階的に縮める設定が必要になる。非構造格子では、壁面に沿う要素配置と、壁面から離れる方向の分割(厚み方向の制御)を組み合わせて表現する。目的は、支配方程式の離散化で必要とされる勾配・流束の精度を確保することにある。

近傍での解像度確保

境界そのもの以外にも、ノズル出口、段差、曲率が大きい箇所、接触面のように急変が起きやすい位置では、周辺領域の解像度を上げる設計が重要になる。非構造格子では、これらの点や線に対して局所的なサイズ場を設定し、要素分割の密度を変えることで対応できる。解像度の不足は、最大値の取りこぼしや位相のずれなどの形で現れるため、対象物理量に応じた優先順位付けが必要である。

形状欠損やギャップへの対応

現実のCADデータには、微細な欠損や面のギャップ、自己交差などが含まれることがある。体積化の段階では、これらが原因で要素の生成が失敗したり、無意味な小領域(スラバッジ)を生んだりする。対応としては、ジオメトリの修復(穴埋めや面統合)、ギャップの許容厚みの扱い、必要に応じた要素の除去・統合などが考えられる。最終的には、物理的に意味のある領域を残しつつ、数値計算上の破綻要因を取り除くことが目的となる。

3 データ構造と数値計算への実装

3.1 非構造格子のデータ管理

隣接リストとセルベース構造

非構造格子の計算では、各セルがどの節点と隣接するかを高速に参照できる形で保持する必要がある。典型的には、隣接リストにより「セル→節点」「セル→隣接セル」「セル→境界面」などの関係を管理する。セルベース構造では、要素ごとに局所情報(幾何、体積、面積、法線など)をまとめ、演算カーネルがそれらにアクセスできるようにする。これにより、ループの中で必要な参照を整理でき、実装の複雑さを抑えやすくなる。

エッジ・面・セルのトポロジー

非構造格子では、境界処理や流束評価の単位が面(2Dでは辺)になることが多い。そのため、エッジや面を単なる幾何として扱うだけでなく、「どのセルに属するか」「向きはどちらか」「共有面か独立面か」といったトポロジーを明示する。さらに、セルをまたぐ面の整合性(片側と反対側の向きの定義)を保つことで、保存則ベースの離散化が正しく実装される。面の一貫した番号付けや再利用により、メモリと計算の両方の効率が改善する場合がある。

座標・幾何情報の保持

節点座標は基本情報であり、要素ごとに面積や体積、ヤコビアン、法線、距離などの幾何量を保持するか、必要時に計算するかを決める。高速化の観点では、反復計算で繰り返し使う幾何量は事前計算して保持することが多い。一方でメモリ制約がある場合には、算出を遅延させる戦略も取られる。幾何情報の一貫性(単位系、向き、スケール)を保つことは、離散化誤差の原因となるため、実装段階での検証が欠かせない。

3.2 離散化手法との関係

有限体積法における積分領域

有限体積法では、制御体積に基づく保存則を使い、セル平均値を更新する。非構造格子では制御体積が各セルに対応し、セル境界にある面を通じた流束が支配項となる。したがって、面積と法線、隣接セルとの対応関係を正確に管理することが重要になる。離散化誤差は、面の近似や勾配再構成の精度にも影響されるため、格子品質が結果に反映されやすい。

有限要素法における形状関数

有限要素法では、要素内で変数を近似するための形状関数を用いる。非構造格子では要素形状が多様であり、要素ごとに局所座標や基底関数の評価が異なる。通常、参照要素からの写像によりヤコビアンを介して積分を行うため、幾何量の正確さが性能と安定性を左右する。高次要素を使う場合は、節点や自由度の付与が複雑になるが、局所的な再利用と整合した番号付けが実装上の要となる。

有限差分法との整合の取り方

有限差分法は本来、格子点での差分近似に基づくが、非構造格子へ拡張する際には工夫が必要である。たとえば、セル中心間の距離や勾配近似を幾何に基づいて定義することで、局所的な差分演算を構成する。あるいは有限体積法に近い「制御体積に基づく離散化」として再解釈することで、非構造格子での実装を成立させることがある。整合性の鍵は、離散化が物理保存則や微分演算の幾何整合を満たすように設計されることである。

3.3 一般的な計算フロー

行列組み立てと前処理

非線形・非定常を除く場合でも、一般に離散化後は連立一次方程式(あるいはその反復解)が生じる。非構造格子では疎行列が構築されるため、セルごとの寄与を近傍に対応する自由度へ加算する流れが多い。行列組み立て後は前処理(プリコンディショニング)を行い、反復法の収束性を高める。前処理は格子の接続構造と深い関係があり、再配置や番号付け(自由度の順序付け)で効率が変化することがある。

境界処理の実装パターン

境界条件は、固定値(ディリクレ)や法線方向の流束(ノイマン)、反射・接触、混合条件など多様である。非構造格子では境界面の集合を参照し、その面に属するセル側の自由度へ影響を与える形で実装することが多い。面の向きが符号に関わる場合は、法線の定義や座標系の整合を確実に行う必要がある。さらに、境界面が複数の属性(例えば壁・入口・出口)を持つ場合は、ラベル管理と選択ロジックが重要になる。

並列計算と負荷分散

大規模計算では並列化が不可欠であり、領域分割により計算担当を振り分ける。非構造格子では通信量が接続面の数に比例しやすいため、分割時にカット面積の最小化と計算量の均等化を同時に狙うことが望ましい。実装では、ゴーストセル(境界付近の参照データの複製)や通信バッファの管理が必要になる。負荷分散の偏りは収束速度や総計算時間にも波及し得るため、格子生成時の節点密度や局所細分化が並列性能に影響する点を考慮する。

4 格子品質評価と信頼性

4.1 品質指標の種類

歪み尺度と体積の一様性

品質指標の一つは、要素の歪みの度合いである。歪みは、理想的な形状からの逸脱(面や辺の長さの偏り、角の歪みなど)として定義されることが多い。また、セル体積の一様性は、離散化の条件数や数値拡散の寄与に影響する場合がある。極端なサイズの差が広域に存在すると、局所的に時間刻み制約や収束性に不利が生じやすい。したがって、サイズ場設計とともに、統計的に分布を確認することが信頼性確保につながる。

角度品質・最小角度問題

三角形や四面体では、角度が品質に強く関係する。特に最小角が小さい要素が多いと、勾配評価が不安定になりやすく、丸め誤差の影響も受けやすい。品質評価では、角度分布の下限や、理想値からの乖離を指標化して点検することがある。改善手法としては、節点位置の再調整や局所再分割が用いられる。

アスペクト比と安定性

アスペクト比は、要素の代表長さ同士の比として定義され、長細い形状の程度を表す。アスペクト比が大きすぎると、有限要素での剛性行列の性質が悪化したり、有限体積での勾配近似の精度が落ちたりし得る。したがって、アスペクト比を単独で見るだけでなく、歪みや角度との複合的な評価が推奨される。安定性の観点では、物理モデルと結び付いた指標(安定な時間刻み、収束のしやすさ)とも合わせて判断する。

4.2 テストと検証

格子収束性(メッシュ依存性)

格子収束性とは、格子を細かくするほど解がある基準値へ近づくかどうかを確認する考え方である。非構造格子では、単なる要素数増加だけでなく、品質やサイズ分布が変化するため、メッシュ依存性の評価には段階的な細分化と適切な比較が必要になる。一般には、同一の境界条件と物理パラメータを保ち、代表量(流束、平均温度、最大応力など)の差を追跡する。収束が確認できない場合は、格子品質の不足か、離散化スキームの整合不良が原因として疑われる。

ベンチマーク事例

ベンチマークは、既知の解や高精度参照結果がある問題に対し、提案した格子生成と計算手法が適切に機能するかを試す枠組みである。非構造格子では、曲面境界、急変領域、複数材料や形状複雑性を含むケースが選ばれやすい。ベンチマークで良好な性能が得られると、実案件への適用時の不確実性を下げられる。逆に、特定の格子欠陥が露呈しやすいベンチマークを選ぶことは、開発段階での改善指針にもなる。

エラー推定と適応的再分割

エラー推定は、離散化誤差の大きさを局所的に見積もる考え方であり、適応的再分割の基礎になる。推定値が大きい要素を細分化し、小さい要素は維持することで、精度と計算量のバランスを取る。非構造格子では、推定指標を要素ごとに割り当てるため、境界近傍や特異点周辺での評価設計が重要になる。適応の反復で解像度が必要箇所に集まれば、同一誤差目標に到達するまでの計算資源を削減できる可能性がある。

4.3 よくある失敗例

異常要素・反転要素

反転要素とは、要素の向きが不正になることで、ヤコビアン符号が反転するなどの問題を起こす状態を指す。これが生じると積分や勾配計算が破綻し、解の発散や不自然な挙動につながることがある。原因としては、節点の位置の不整合、境界拘束の扱い、局所最適化の過度な更新などが挙げられる。品質チェックでは、符号付き体積やヤコビアンの検査が有効である。

境界での整合不良

境界整合不良とは、境界面の定義と要素側の形状・向き・ラベルが一致していない状態である。たとえば、入口と壁が取り違えられて境界条件が誤って適用される、法線方向の符号が反転して流束の符号が逆転する、といった事象が起こり得る。非構造格子では境界面の抽出が複雑になりやすいため、境界面の属性確認と、簡易計算による妥当性検証が必要になる。

局所的な解像度不足

局所解像度不足は、必要な領域に細かい要素が配置されておらず、変化の大きい領域で誤差が残る状態である。結果として、最大値の位置ずれ、ピークの過小評価、勾配の見積もり誤差などが生じる。原因はサイズ場設定の不足、境界層の取り込み不足、局所的な再分割の欠如などが考えられる。検証としては、物理量の分布と要素サイズの対応を可視化し、必要箇所への密度調整を見直すことが多い。