構造格子
構造格子の理論基礎
概要
先生、構造格子ってそもそもどういうものですか? 非構造格子との違いがいまいちピンと来なくて。
構造格子(structured mesh)というのは、計算領域を規則的に配列された六面体(3D)や四辺形(2D)セルで埋め尽くす格子のことだ。各セルのインデックスが $(i,j,k)$ で一意に表現できる。つまり、格子点の隣接関係が暗黙的に決まるから、わざわざ接続情報を格納する必要がないんだ。
隣接情報を保持しなくていいってことは、メモリ効率がいいってことですか?
その通り。構造格子では隣のセルは常に $(i\pm1, j\pm1, k\pm1)$ だから、データアクセスが連続的でキャッシュヒット率が高い。同じセル数なら非構造格子に比べてメモリ消費は約半分、計算速度は2〜3倍速くなることも珍しくない。
物体適合座標系とメトリクス
でも現実の形状って曲がったり捻じれたりしてますよね? 規則的な格子でどう対応するんですか?
そこで使うのが物体適合曲線座標系(body-fitted curvilinear coordinates)だ。物理空間 $(x,y,z)$ を計算空間 $(\xi,\eta,\zeta)$ に写像する。計算空間では格子が均一な直方体になるから、差分スキームがシンプルに書ける。
座標変換のヤコビアン行列が重要で、こう定義される。
このヤコビアンの行列式 $|J|$ がゼロや負になると格子が潰れたり裏返ったりしている証拠で、計算が破綻する。
ヤコビアンが負になるのはどういう状況ですか?
典型的には鋭角コーナーの周囲や、格子線が交差してしまった場合だ。格子生成時に $|J| > 0$ を全セルで確認するのが鉄則だよ。
構造格子上のNavier-Stokes方程式
支配方程式は構造格子だと形が変わるんですか?
物理空間でのNavier-Stokes方程式を計算空間に変換する。保存形で書くとこうなる。
ここで $\mathbf{Q}$ は保存変数ベクトル、$\hat{\mathbf{E}}, \hat{\mathbf{F}}, \hat{\mathbf{G}}$ はメトリクス項を含む変換後のフラックスだ。
メトリクス項って具体的には何ですか?
例えば $\hat{\mathbf{E}} = \frac{1}{J}(\xi_x \mathbf{E} + \xi_y \mathbf{F} + \xi_z \mathbf{G})$ のように、座標変換の偏微分係数 $\xi_x, \xi_y$ 等がフラックスに掛かる。これらのメトリクス項を正確に離散化しないと、自由流保存(freestream preservation)が崩れて偽の数値誤差が発生するんだ。
格子間隔の等比配置
壁面近くでは格子を密にしたいですよね。どうやって制御するんですか?
等比級数(geometric progression)を使うのが基本だ。
ここで $\Delta s_1$ は第1層目の厚さ、$r$ は成長比(growth ratio)。$r = 1.2$ なら各層が前層の1.2倍ずつ厚くなる。壁面側の $\Delta s_1$ は $y^+$ 要件から決定し、成長比 $r$ は1.1〜1.3が推奨される。
成長比が大きすぎるとどうなりますか?
隣接セル間のサイズ比が大きくなりすぎると、打ち切り誤差が増大して数値拡散が悪化する。特に2次精度スキームでは隣接セルの体積比を1.2以下に抑えるのが望ましいとされている。
構造格子の歴史——1974年Thompson-Thames-Mastin変換とBFM(境界適合格子)の誕生
複雑な物体形状に沿った「境界適合格子(Body-Fitted Mesh)」の系統的手法を確立したのは、1974年にJoe Thompson、Frank Thames、C. Wayne Mastinが発表した「楕円型偏微分方程式による格子生成法(TTM法)」だ。この手法は物理空間の複雑な計算領域を、ξ-η-ζの一様直交格子で記述された「計算空間」に「等角変換(Conformal Mapping)」で写像し、計算空間で方程式を解いた後に物理空間に変換するアプローチだ。航空機翼型・船体・エンジン内流路など任意形状への構造格子生成が初めて実用的になり、1980年代のCFD爆発的発展を可能にした。TTM法に基づく格子生成コードGRID2Dは50年後の今でも教育・研究用として使われている。
構造格子の数値計算手法
構造格子の生成手法
構造格子って、実際にはどうやって作るんですか?
代表的な手法を3つ紹介しよう。
代数的手法(Transfinite Interpolation: TFI)
境界上の格子点分布を与えて、内部の格子点を補間で決定する。計算が速いが、複雑な形状では格子品質の制御が難しい。
楕円型格子生成(Elliptic Grid Generation)
Poisson方程式を解いて格子点を配置する。
制御関数 $P, Q, R$ を調整することで壁面近傍への格子集中や直交性を制御できる。最も格子品質が高くなるが、反復計算が必要で生成に時間がかかる。
双曲型格子生成
壁面から法線方向に格子を「成長」させる手法だ。境界層メッシュの生成に特に有効で、壁面直交性が自然に確保される。
どの手法を選べばいいんですか?
実務では、まずTFIで初期格子を作り、楕円型ソルバーで平滑化するハイブリッドアプローチが多い。ICEMやPointwiseではこれが標準的なワークフローだ。
マルチブロック構造格子
複雑な形状だと1つのブロックでは無理そうですが…
その場合はマルチブロック構造格子を使う。計算領域を複数のブロックに分割し、各ブロック内は構造格子、ブロック間は接続面(interface)で情報を受け渡す。
ブロック間の接続には大きく分けて2種類ある。
- Conformal(整合): 接続面で格子点が一致。補間誤差なし
- Non-conformal(不整合): 格子点が一致しない。補間が必要
整合がいいに決まってますよね?
精度の面ではそうだが、複雑な形状では整合を維持するためにトポロジー設計が非常に難しくなる。実務ではICEM CFD Hexaのようなブロックトポロジーエディタが重宝される。ただし、このトポロジー設計こそが構造格子の最大のボトルネックで、熟練者でも自動車1台分のメッシュに数日〜数週間かかることがある。
差分スキームとの親和性
構造格子だと差分法が使いやすいって聞きましたが、どういうことですか?
構造格子では格子点が規則的に並んでいるから、高次精度の差分スキームが自然に構築できる。例えば5次精度のWENOスキームや、コンパクト差分法(Pade型)は構造格子でこそ真価を発揮する。
非構造格子上で同等の高次精度を実現しようとすると、最小二乗法による勾配再構築や不等間隔への対応が必要で、計算コストが跳ね上がるんだ。
だからDNS(直接数値シミュレーション)やLESでは構造格子が好まれるんですね。
その通り。学術的な高精度計算では依然として構造格子が主流だ。特にチャネル流れやパイプ流れのような比較的単純な形状のDNSでは、構造格子一択と言っていい。
O型・C型・H型格子の使い分け——翼型周りの構造格子設計の判断基準
翼型(Airfoil)周りの構造格子では格子トポロジーの選択が精度に直結する。O型格子(翼型を囲む同心楕円状)は翼型全周を均一に高品質で解像でき、最前縁から後縁まで連続したメッシュが自然に張れる。しかし翼型後縁の鋭い角(Sharp Trailing Edge)で格子線が折れるため、薄い後縁の形状精度が下がることがある。C型格子(翼前面からC字状に回り込む)は後縁の剥離域を詳細に捉えやすく、失速(Stall)解析に向く。H型格子(矩形直交格子の変形)は最も単純だが翼型周りのO型格子の高品質には及ばない。実務では「O型またはC型をトポロジーベースで生成し、遠方場はH型の構造格子で外側を覆う」OC-H型複合格子が翼型の高精度RANS/LESの標準的選択だ。
構造格子の実務適用
実践ワークフロー
実際に構造格子を使ったCFD解析のフローを教えてください。
ICEM CFD Hexaを例に、翼型周りの構造格子生成の典型フローを示そう。
1. CADインポートと形状簡略化: 不要なフィレット・穴を除去
2. ブロックトポロジー設計: O-grid(翼周り)+ H-grid(遠方場)の組み合わせ
3. エッジパラメータ設定: 壁面第1層 $\Delta y_1$ を $y^+ \approx 1$ から算出
4. 格子生成と品質確認: ヤコビアン、直交性、アスペクト比をチェック
5. ソルバーフォーマットへのエクスポート: Fluent .msh、CGNS等
第1層厚さの決定
$y^+$ から第1層の厚さを求めるにはどうすればいいですか?
まず代表的なレイノルズ数から壁面摩擦係数を推定する。平板近似で
から壁面せん断応力 $\tau_w = \frac{1}{2} C_f \rho U_\infty^2$、摩擦速度 $u_\tau = \sqrt{\tau_w / \rho}$ を求めて、
で算出する。例えば $Re_L = 10^6$、空気の場合、$y^+ = 1$ で $\Delta y_1 \approx 2 \times 10^{-5}$ m 程度になる。
ブロックトポロジーの定石
トポロジー設計ってセンスが必要そうで怖いんですが…
定石がいくつかある。
| トポロジー | 用途 | 特徴 |
|---|---|---|
| O-grid | 円柱・翼型周り | 壁面直交性が確保しやすい |
| H-grid | 矩形ダクト | シンプルだが前縁で特異点が生じやすい |
| C-grid | 翼型(後縁鋭角) | 後縁のウェイク領域まで高品質 |
| L-grid | 段差・キャビティ | 角部の直交性確保に有効 |
翼型だとどれを使うべきですか?
一般的にはC-gridかO-gridだ。C-gridは後縁が鋭い翼型に向いていて、ウェイク領域の格子品質が良い。O-gridは鈍頭物体に向いている。ICEM CFD Hexaでは、まず大きなH-gridブロックを作り、翼面に沿ってO-grid分割を施すのが定番だ。
品質チェック基準
構造格子の品質チェックでは何を見ればいいですか?
CFD特有の指標を押さえよう。
| 指標 | 推奨値 | 影響 |
|---|---|---|
| 決定子(Determinant 2x2x2) | > 0.3 | セル歪み。負は不可 |
| 直交性(Orthogonality) | > 0.2 | 非直交補正の必要性 |
| アスペクト比 | < 1000(境界層内) | 境界層内は高くてもOK |
| 隣接セル体積比 | < 1.2 | 数値拡散の増大 |
| 成長比 | 1.1〜1.3 | 大きすぎると打ち切り誤差増大 |
境界層内はアスペクト比が高くてもいいんですか?
構造格子の境界層では壁面平行方向に比べて法線方向が非常に薄いから、アスペクト比は数百〜千のオーダーになるのが普通だ。流れが壁面に沿っている限り、これは問題にならない。むしろ壁面法線方向の解像度が十分であることの方が重要だ。
自動車風洞CFDの構造格子——外部流れのブロック構造とプリズム層設計
自動車外部空力CFD(ウィンドトンネル相当解析)では、車体周りに高品質なプリズム層(境界層解像)を生成した後、外部を六面体ブロックで覆う「ハイブリッド構造格子」が精度と計算コストのバランスで優れている。プリズム層の設計では車体の最大速度点(前面・ドアミラー・Aピラー)でy+<1を確保するために、最小セル高さを10〜20μmに設定することが多い。ブロック構造部分では車体後方の尾流(Wake)領域を長さ2〜3L(L: 車長)確保し、圧力係数Cpが出口境界で十分に回復することを確認する。テスラが公開した空力最適化の事例では、構造格子と多面体の混合メッシュで総2億セルの解析が実施され、実車測定Cd値(抗力係数)をCFDで±3%以内に予測した実績が報告されている。
構造格子のソフトウェア比較
構造格子生成ツールの比較
構造格子を作れるツールって何がありますか?
主要なツールを比較してみよう。
| ツール | 開発元 | 特徴 | 構造格子手法 |
|---|---|---|---|
| ICEM CFD Hexa | Ansys | マルチブロック構造格子の定番 | ブロックトポロジーベース |
| Pointwise | Cadence (旧Pointwise Inc.) | 高品質構造格子で定評 | ブロック/T-Rex |
| GridPro | PDC | 自動マルチブロック | テンプレートベースの自動トポロジー |
| blockMesh | OpenFOAM | テキストベース定義 | blockMeshDict で直接指定 |
| Ansys Meshing (Mapped) | Ansys | Workbench統合 | Mapped Face/Sweep |
ICEM CFD Hexa
ICEMって業界でよく聞きますが、そんなにいいんですか?
ICEM CFD Hexaは構造格子生成の事実上の業界標準だ。元々はICEM社が開発し、2000年にAnsysが買収した。ブロックトポロジーを視覚的に設計・編集できるのが最大の強みで、タービン翼、自動車エンジンポート、航空機翼型など、構造格子が求められるあらゆる分野で使われている。
ただし、2024年頃からAnsysはICEM CFDのメンテナンスモードへの移行を示唆しており、後継としてAnsys Meshing内のMultiZone機能やFluent Meshingへの移行が進んでいる。
Pointwise
Pointwiseはどういう位置づけですか?
航空宇宙分野で特に評価が高い。NASAやBoeing等で広く使用されている。2023年にCadenceが買収した。構造格子と非構造格子の両方に対応し、特にT-Rex(境界層自動成長)機能は構造的な境界層メッシュを半自動で生成できる優れものだ。
blockMesh(OpenFOAM)
OpenFOAMではどうやって構造格子を作るんですか?
blockMeshDictというテキストファイルで頂点座標、ブロック定義、エッジ曲線、セル数を直接記述する。GUIはないが、スクリプトで自動生成しやすい。シンプルな形状(チャネル、パイプ、後ろ向きステップ等)の学術計算でよく使われるよ。
```
blocks
(
hex (0 1 2 3 4 5 6 7) (100 50 1)
simpleGrading (1 ((0.5 0.5 10)(0.5 0.5 0.1)) 1)
);
```
このsimpleGradingの数字は何ですか?
各方向のセルサイズの成長比を制御している。ここでは $y$ 方向に2段階のバイアス(壁面側を密に、中央を粗く)を設定している。壁面解像度の確保に不可欠な設定だ。
選定の指針
結局どのツールを選べばいいですか?
構造格子生成ツール——ICEM CFDとPointwiseとGridgenの歴史と棲み分け
高品質な構造格子(Structured Mesh)生成の専門ツールとして、ICEM CFD(現ANSYS ICEM CFD)とPointwise(現Cadence)は40年近い歴史を持つ。ICEM CFDはアルゴリズムの柔軟性と多チャンネルの六面体ブロック分割機能で航空・宇宙分野での標準ツールとして長年使われてきた。PointwiseはT-Rex(反復近傍型プリズム層生成)アルゴリズムで高品質なアニソトロピック(異方性)メッシュを生成でき、スケジュールドリリースの安定性とサポートの質で評価が高い。2010年代にはCFD前処理のボトルネック(構造格子生成に数週間)が問題視され、多面体・ポリヘドラルへの移行が加速した。現代では複雑な内部流路は多面体、翼型・船体など流れに沿った外部流れは構造格子という棲み分けが実務の標準だ。
構造格子の先端研究
先端トピック
構造格子の分野で最新の研究ってどんなものがありますか?
いくつか注目すべき動向を紹介しよう。
自動マルチブロックトポロジー生成
構造格子最大の課題であるブロックトポロジー設計の自動化が研究されている。四辺形分割(Quad Meshing)のアルゴリズム、特にcross-field法による全自動ブロック分割は、近年大きく進歩している。GridProが先駆的にこの分野を開拓し、最近ではPointwiseのQuilt機能も同様のアプローチを採用している。
完全自動化はまだ難しいんですか?
3Dでは特異点(格子線が集中する点)の配置が幾何学的に制約されるため、任意形状での完全自動化は未解決問題に近い。ただし、機械学習でブロックトポロジーを推薦するアプローチが最近提案されており、将来的にはCADモデルから最適トポロジーを自動提案できるようになる可能性がある。
高次要素との親和性
高次精度法と構造格子の組み合わせについて教えてください。
構造格子は高次精度法との親和性が非常に高い。特に注目されているのが以下の手法だ。
- 高次コンパクト差分法: 狭いステンシルで高精度を実現。構造格子の規則性を最大限活用
- スペクトル要素法: 各ブロック内でChebyshev/Legendre多項式展開。Nek5000などが代表的
- DG法(不連続Galerkin法)のhex要素版: 構造的なhex要素上でのDG法は、テンソル積展開でtet要素より格段に効率的
特にDNSやwall-resolved LESでは、壁面法線方向にChebyshev配点を使った構造格子が標準的な選択肢になっている。
GPUコンピューティングとの相性
GPUで構造格子の計算って速くなりますか?
構造格子はGPU計算と極めて相性が良い。規則的なメモリアクセスパターンがGPUのSIMD/SIMT実行モデルに適合するからだ。実際、構造格子のNavier-Stokesソルバーで100倍以上の高速化が報告されている(CPU比)。
一方、非構造格子はメモリアクセスが不規則になるため、GPU化の効率は構造格子に劣る。これが高性能計算において構造格子が見直されている理由の一つだ。
構造格子のトラブル対応
トラブルシューティング
構造格子で困ったとき、どう対処すればいいですか?
よくある問題とその対策をまとめよう。
1. 負のヤコビアン(セルの裏返り)
症状: ICEM CFDやPointwiseでDeterminantが負の要素が発生。ソルバーで "negative cell volume" エラー。
原因と対策:
- 鋭角コーナー: O-gridで包むか、ブロックを追加して角を鈍角に分割
- ブロック頂点の位置不良: 頂点をエッジや面に再スナップ
- 過度な格子集中: 壁面成長比を小さくする(1.2→1.15等)
- 曲面上のブロックエッジ: B-splineフィッティングの制御点数を増やす
ICEMで "Negative volumes" が出たら、まず何をチェックすべきですか?
Display > Quality > Determinant 2x2x2 で色分け表示し、赤い要素の位置を特定する。ほとんどの場合、ブロック頂点の配置かエッジの曲線フィッティングに問題がある。
2. 高スキューネス
症状: セルの歪みが大きく、ソルバーの残差が振動・発散する。
対策:
- ブロック辺の曲線をB-splineで滑らかにする
- Pre-mesh Qualityで確認しながらノード数を調整
- 楕円型スムージングを適用(ICEM: Smooth Mesh Globally)
- どうしても改善しない場合はトポロジー自体を見直す
3. ブロックトポロジーが決まらない
これが一番困るんですが… 複雑な形状でブロック分割が思いつきません。
実践的なアドバイスを3つ挙げる。
1. 既存のテンプレートから始める: ターボ機械、翼型、ノズル等の標準トポロジーが文献やフォーラムに豊富にある
2. 外側から攻める: まず遠方場のH-gridを作り、次に物体周りにO-gridを施す。外→内の順で考えると整理しやすい
3. 諦めるタイミングを決める: 構造格子に固執して数週間かかるなら、ヘキサドミナントメッシュ(snappyHexMesh等)に切り替える方が生産性が高い場合もある
4. ソルバーとの互換性問題
症状: ICEM CFDで作った格子がFluentやCFXで読み込み時にエラーになる。
対策:
- ブロック間の接続不整合: ICEM側でCheck Mesh Topology → Close domain を実行
- 周期境界条件のずれ: 数値的なトレランスを広げる(Fluentの場合 Mesh > Merge Nodes)
- エクスポート形式の選択: CGNS形式は互換性が高く推奨。Fluent .msh直接エクスポートではバージョン違いに注意
5. メッシュ収束性が得られない
格子を細かくしても結果が収束しない場合は?
構造格子特有の問題として、ブロック接合部での格子線の不連続が挙げられる。特にnon-conformal接合では補間誤差が局所的に大きくなる。対策として、接合面のセルサイズを両側で揃えるか、conformal接続に変更することを検討しよう。
構造格子の「グリッドブロッキング」失敗——複雑形状を六面体ブロックで分割する難しさ
構造六面体格子の生成で最も難易度が高いのは「トポロジー設計(ブロック分割)」だ。翼型なら比較的簡単だが、エンジンの吸排気ポートや複雑な分岐・合流形状では、内部をどの向きのブロックで分割するかというトポロジー選択が品質を決定的に左右する。よくある失敗:①ブロック境界面が流れと直交しない設定——境界で格子線が急変し品質が悪化する。②T字・Y字分岐でブロック接続が破綻——「特異点(Singularity Lines)」の配置を流れから遠い場所に設計することが鍵。③格子線の引き込みすぎ——隣接ブロックの格子線を揃えようとして一方を歪ませる。ICEM CFDのBlocking機能は経験則の習熟が必須で、「構造格子職人」と呼ばれる専門家が企業内に必要とされる理由がここにある。
関連トピック
なった
詳しく
報告