DNS(直接数値シミュレーション)の基礎
DNS(直接数値シミュレーション)の基礎の理論基礎
概要
先生、DNSって乱流のすべてのスケールを直接解くんですよね? どういう仕組みなんですか?
DNS(Direct Numerical Simulation)はNavier-Stokes方程式を乱流モデルなしで直接解く手法だ。Kolmogorovの最小スケール $\eta$ から積分スケール $L$ まで、すべての渦をメッシュで解像する。乱流の物理を最も忠実に再現するが、必要な計算資源は桁違いだ。
必要な解像度
DNSに必要なメッシュ数はどのくらいですか?
各方向のメッシュ数は $L/\eta$ に比例する。Kolmogorovスケールは $\eta = (\nu^3/\varepsilon)^{1/4}$ で、積分スケールとの比は Reynolds数で決まる。
3次元では各方向にこれだけの格子点が必要だから、総格子点数は、
$Re = 10^4$ だとどのくらいですか?
$N \sim (10^4)^{9/4} \approx 10^9$。つまり約10億格子点だ。さらに時間ステップ数は $Re_L^{1/2}$ に比例するから、総計算量は $Re_L^{11/4}$ に比例する。産業レベルの $Re \sim 10^6$ では $N \sim 10^{13.5}$ と現在の計算機では到底不可能だ。
支配方程式
DNSで解く方程式は?
非圧縮性流体なら、通常のNavier-Stokes方程式そのものだ。
モデル項が一切ない。これがDNSの最大の強みであり、結果はN-S方程式の「正解」とみなせる。RANSモデルやLESモデルの検証データとして最も信頼できる。
Kolmogorovのスケーリング
Kolmogorovスケールについてもう少し教えてください。
乱流のエネルギーカスケードにおける最小スケールだ。
| スケール | 式 | 物理的意味 |
|---|---|---|
| 長さスケール $\eta$ | $(\nu^3/\varepsilon)^{1/4}$ | 粘性散逸が支配する最小渦のサイズ |
| 速度スケール $u_\eta$ | $(\nu\varepsilon)^{1/4}$ | 最小渦の速度 |
| 時間スケール $\tau_\eta$ | $(\nu/\varepsilon)^{1/2}$ | 最小渦のターンオーバー時間 |
DNSでは $\Delta x \leq \pi\eta$(目安として $\Delta x \approx 2\eta$)、$\Delta t \leq \tau_\eta$ が必要だ。メッシュがこの条件を満たしていないと、小スケールの渦がエイリアシングを起こして計算が不安定化する。
DNSの「9/4乗の壁」——$Re$ を2倍にすると計算量は何倍になるか
DNSに必要な格子点数はコルモゴロフスケールまで解像するため $N \sim Re^{9/4}$ のオーダーで増えます。例えば $Re$ を2倍にすると計算量は $2^{9/4} \approx 4.76$ 倍になる計算です。実用的な航空機翼翼のDNS($Re \sim 10^7$)には現在のスーパーコンピュータで数十年かかるという試算もあります。DNSが「研究者の理想と現実の壁」の象徴として語られるのは、この冷酷な指数の話がすべてを物語っているからです。
DNS(直接数値シミュレーション)の基礎の数値計算手法
DNSの数値手法
DNSではどんな数値スキームを使うんですか?
DNSでは数値誤差が乱流の物理を汚染しないよう、高精度スキームが必須だ。
| 手法 | 空間精度 | 適用 | 代表的コード |
|---|---|---|---|
| スペクトル法 | 指数的(spectral accuracy) | 周期的な単純形状 | Channelflow, SIMSON |
| コンパクト有限差分(6次) | 6次 | やや複雑な形状 | Incompact3d |
| 標準有限差分(2次中心差分) | 2次 | 一般形状 | OpenFOAM, Nek5000 |
| スペクトル要素法 | 高次(p次) | 複雑形状 | Nek5000, Nektar++ |
スペクトル法が最も高精度なんですか?
そうだ。周期境界条件を持つ単純形状(チャネル流、等方乱流のボックス等)ではFFTベースのスペクトル法が最も効率的だ。高波数成分のエイリアシングを3/2則やPhase Shiftで除去する。ただし複雑形状には適用できない。
圧力ポアソン方程式
非圧縮DNSで圧力はどう計算するんですか?
連続の式を満足するために、圧力ポアソン方程式を解く。
スペクトル法では波数空間で直接解けるため非常に効率的だ。有限差分法では反復法(PCG、FFT-based direct solver等)を使う。
時間積分
時間方向のスキームは?
粘性項には陰解法(Crank-Nicolson)、対流項には陽解法(3次Adams-Bashforth or 低蓄積Runge-Kutta)を組み合わせるのが標準的だ。
| スキーム | 精度 | 安定性 | 典型的な用途 |
|---|---|---|---|
| AB3 + CN | 2〜3次 | 条件付き安定(CFL制約) | チャネル流DNS |
| RK3 + CN | 3次 | 良好 | 高精度DNS |
| RK4 | 4次 | CFL制約厳しい | スペクトル法DNS |
DNSの時間刻みはどのくらい小さいんですか?
CFL条件 $\Delta t \leq \Delta x / U_{\max}$ と粘性安定条件 $\Delta t \leq \Delta x^2 / (2\nu)$ の両方を満たす必要がある。チャネル流DNS($Re_\tau = 590$)の場合、$\Delta t^+ = \Delta t u_\tau^2/\nu \approx 0.02$ 程度。物理時間で数万〜数十万ステップの計算が必要になる。
DNSでスペクトル法が選ばれる理由——「微分誤差ゼロ」の誘惑
DNSの数値手法としてフーリエスペクトル法が好まれる理由は「微分の精度が理論上無限大」だからです。物理空間の差分法では微分誤差が格子幅に依存しますが、フーリエスペクトル法では各波数モードを独立に扱うため、解析的な微分と等価の精度が得られます。ただし欠点も明確で「周期境界条件しか扱えない」「非均一格子に拡張できない」という制約があります。だからDNSで扱う問題はチャンネル流れや等方性乱流など「シンプルな形状の問題」に集中する——これは精度への追求の結果として生まれた合理的な選択です。
DNS(直接数値シミュレーション)の基礎の実務適用
DNSの典型的な適用例
DNSは実際にどういう研究に使われているんですか?
DNSで得られたデータはどう活用されるんですか?
主に3つの用途がある。
1. 乱流モデルの検証: RANSモデル(k-epsilon、RSM等)やLES SGSモデルの精度を評価
2. 物理現象の解明: 壁面近傍の渦構造、エネルギーカスケード、遷移メカニズムの詳細分析
3. 機械学習の教師データ: データ駆動型乱流モデルの訓練データ
DNSデータベース
公開されているDNSデータベースはありますか?
これらのデータを使えば、自分でDNSを走らせなくてもRANSモデルの検証ができるんですね。
その通り。特にMoserのチャネル流DNSデータ($Re_\tau = 180, 395, 590, 2003, 5200$)は、乱流モデル検証の世界標準だ。速度プロファイル、Reynolds応力、乱流エネルギー収支がすべて公開されている。
DNSデータベースが「乱流研究の共通財産」になった経緯
1987年にKim, Moin, Mosserがチャンネル流れのDNSを実施してデータを公開して以来、DNS結果は乱流モデルの「正解」として研究コミュニティ全体で参照されるようになりました。現在はJHU Turbulence DatabaseやVT国立研究所のPetaFlops DNS Databaseなど、テラバイト級のDNSデータが無料で公開されています。これにより「モデルの精度をDNSと比較する」という検証文化が根付いた——DNSは「実験より正直なベンチマーク」として乱流研究の基盤になっています。
DNS(直接数値シミュレーション)の基礎のソフトウェア比較
DNSに適したソフトウェア
DNSは商用CFDソフトでも実行できるんですか?
技術的には可能だが、商用ソルバー(Fluent、STAR-CCM+等)はFVMベースで空間精度が2次程度のため、DNSの要求する高精度には不向きだ。DNSには専用コードが使われることが多い。
| コード | 手法 | ライセンス | 特徴 |
|---|---|---|---|
| Nek5000/NekRS | スペクトル要素法 | オープンソース (BSD) | GPU対応、複雑形状対応 |
| Incompact3d/Xcompact3d | 6次コンパクト差分 | オープンソース (BSD) | 2DECOMP&FFTで大規模並列 |
| SIMSON | スペクトル法 | 学術ライセンス | チャネル流・境界層の定番 |
| Channelflow | スペクトル法 | オープンソース (GPL) | チャネル流専用 |
| OpenFOAM | FVM (2次) | オープンソース (GPL) | 低Re DNSには使える |
OpenFOAMでDNSはできないんですか?
OpenFOAMは2次精度FVMだから、高Re DNSには数値散逸が大きすぎる。ただし $Re$ が十分低い流れ($Re < 1000$ 程度)なら、乱流モデルをオフにして DNS的に解くことは可能だ。pimpleFoam で turbulence off に設定すれば良い。
GPU対応の動向
GPUでDNSを加速する動向はありますか?
急速に進んでいる。NekRS(Nek5000のGPU版)はAMD/NVIDIA GPU上で優れたスケーラビリティを達成し、Frontier(AMD MI250X)やSummit(NVIDIA V100)で兆格子点級のDNSが実行されている。
Gordon Bell Prize 2022では、NekRSを使ったフルスケール航空機周りのWall-Resolved LES(事実上のDNS級解像度)がFrontierで実行され、数百億格子点の計算が報告された。
DNSは研究ツールとしては最高精度だけど、産業適用にはReynolds数の壁が立ちはだかるんですね。LESやDDESとの使い分けが重要だと分かりました。
DNSに商用ソルバーが使えないわけ——「精度保証」という壁
なぜDNSにFluentやStarCCM+が使われないかを説明するのは少し込み入っています。これらの商用ソルバーは2次または最大で4次精度の空間離散化を採用しており、DNS品質(コルモゴロフスケールまで誤差なく解像)を達成するには膨大な格子が必要になります。スペクトル法ベースのコード(Nek5000、Dedalus、spectralDNSなど)は研究機関で開発・公開されており、精度保証の面で理論的優位性があります。「商用ソルバーは産業用、DNS特化コードは研究用」という分業が自然に生まれた背景です。
DNS(直接数値シミュレーション)の基礎の先端研究
Exascale DNSの時代
最先端のDNSはどのくらいの規模なんですか?
2024年時点で、世界最大級のDNSは以下の通りだ。
| 研究 | 格子点数 | $Re$ | 計算機 |
|---|---|---|---|
| チャネル流 ($Re_\tau = 10,000$) | 約1000億 | $Re_\tau = 10,000$ | Fugaku (RIKEN) |
| 等方乱流 ($Re_\lambda \sim 1300$) | 約2兆 | $Re_\lambda \sim 1300$ | Frontier (ORNL) |
| 翼型DNS ($Re_c = 400,000$) | 約100億 | $Re_c = 400,000$ | Fugaku |
Exascaleコンピュータ($10^{18}$ FLOPS超)の登場により、これまで不可能だった高Reynolds数のDNSが実現可能になりつつある。ただし産業レベルの $Re \sim 10^7$ にはまだ数桁のギャップがある。
DNSとAIの融合
DNSデータをAIに活用する研究はどうなっていますか?
活発に進んでいる。主なアプローチを紹介しよう。
| アプローチ | 概要 | 代表的研究 |
|---|---|---|
| 乱流モデル改良 | DNS統計量でRANSモデルを較正 | Duraisamy et al. (2019) |
| 超解像 | 粗いLES→DNS級解像度を推定 | Fukami et al. (2019) |
| 流れ場予測 | 形状→流れ場のend-to-end予測 | Thuerey et al. (2020) |
| サロゲートモデル | DNSの代替としてNNで高速近似 | Geneva-Zabaras (2020) |
圧縮性DNS
圧縮性流体のDNSは非圧縮性と何が違いますか?
圧縮性DNSでは音波の解像も必要になるため、格子要件がさらに厳しくなる。音響CFL条件 $\Delta t < \Delta x / c$($c$: 音速)が時間刻みを制約する。高マッハ数流れでは衝撃波の捕捉も必要で、数値スキームにより高い要求が課される。
DNSは「乱流の真理」を明らかにするツールであり、RANSやLESのモデル検証に不可欠な存在なんですね。計算機の発展とともに適用範囲が広がっていくのが楽しみです。
富岳でDNS——$Re_\tau = 10000$ 達成が示すもの
2022年、理化学研究所の富岳スーパーコンピュータを使ったチャンネル流れのDNSが摩擦レイノルズ数 $Re_\tau = 10000$ に到達しました。これは約100億格子点規模の計算で、世界最大クラスのDNSです。このデータから初めて「真の対数則の精密な検証」と「超高Re数でのコルモゴロフスケール統計」が得られました。注目すべきは、この規模のDNSでもいまだ「工業的に使われる機器のReには届かない」という事実。DNSが「先端研究の最前線」であり続ける理由がここにあります。
DNS(直接数値シミュレーション)の基礎のトラブル対応
よくある問題と対策
DNSで計算がうまくいかないとき、何を確認すればいいですか?
1. 計算が発散する
症状: 速度場が発散、NaN発生
原因: CFL条件違反(時間刻みが大きすぎる)、解像度不足(Kolmogorovスケール未解像)、エイリアシングエラー
対策:
- CFL < 0.5 に時間刻みを下げる
- エネルギースペクトルを確認し、高波数でのパイルアップ(エイリアシング)がないか検証
- スペクトル法なら3/2則のde-aliasingを適用
- メッシュを細かくして $k_{\max}\eta > 1.5$ を確認($k_{\max}$ は最大解像波数)
2. エネルギースペクトルが $-5/3$ 乗則に従わない
エネルギースペクトルのチェックは重要ですか?
重要。 慣性小領域でKolmogorovの $-5/3$ 乗則 $E(k) \sim k^{-5/3}$ が再現されているか確認することが、DNSの品質保証の基本だ。
よくある問題:
- 高波数でスペクトルが上昇(エイリアシング)→ de-aliasing適用
- 慣性小領域が狭すぎる → Reynolds数が低すぎてスケール分離が不十分
- スペクトルが急激に落ちる → 数値散逸が大きすぎる(スキームの精度不足)
3. 統計量がDNSデータベースと一致しない
対策:
- 統計収集時間は最低 $20 T_E$($T_E$: 大渦のターンオーバー時間)
- 空間方向の統一性を活用(チャネル流なら流れ方向+スパン方向で空間平均)
- 初期過渡の除去を確認
- 境界条件(周期、no-slip等)が正しいか再確認
4. 並列計算のスケーラビリティ
DNSの並列計算で気をつけることは?
DNSは大規模並列が必須だが、圧力ポアソン方程式の解法がボトルネックになりやすい。スペクトル法ではFFTの全対全通信が並列効率を下げる。対策として2D領域分割(pencil decomposition)やmultigrid法が使われる。
DNSは計算の品質管理がとても重要で、エネルギースペクトルの確認が基本中の基本なんですね。$k_{\max}\eta$ や $-5/3$ 乗則のチェックを怠らないようにします。
DNSの「初期条件地獄」——乱流場を作るのが最初の壁
DNSを始めようとして最初に詰まるのが初期条件の設定です。「とりあえず乱数を速度場に加える」だけでは乱流として発達せず、発散するかひたすら層流のままのどちらかになりがちです。物理的に意味のある乱流場を作るにはIsotropic Turbulence Generator(ランダムモードのフーリエ合成)やRescaling-Recycling法が必要で、これ自体が小さな研究テーマになるくらい難しい。「DNSで難しいのは実は初期化で、計算より前の段階でつまずく人が多い」というのはDNS研究者間のよくある笑い話です。
関連トピック
なった
詳しく
報告