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が「研究者の理想と現実の壁」の象徴として語られるのは、この冷酷な指数の話がすべてを物語っているからです。
各項の物理的意味
- 時間項 $\partial(\rho\phi)/\partial t$:蛇口をひねった瞬間を思い浮かべてください。最初は水がバタバタと不安定に出て、しばらくすると安定した流れになりますよね? この「変化している最中」を記述するのが時間項です。心臓の拍動で血流が脈打つのも、エンジンのバルブが開閉するたびに流れが変動するのも、すべて非定常現象。では定常解析とは? 「十分時間が経って流れが落ち着いた後」だけを見る——つまりこの項をゼロにする。計算コストが大幅に下がるため、まず定常で解いてみるのがCFDの基本戦略です。
- 対流項 $\nabla \cdot (\rho \mathbf{u} \phi)$:川に落ち葉を落としたらどうなりますか? 流れに乗って下流に運ばれますよね。これが「対流」——流体の動きが物を運ぶ効果です。暖房の温風が部屋の端まで届くのも、空気という「運び屋」が熱を対流で輸送しているから。ここが面白いところ——この項は「速度×速度」を含むため非線形です。つまり、流れが速くなるとこの項が急激に強くなり、制御が難しくなる。これが乱流の根本原因です。よくある勘違い:「対流と伝導は同じようなもの」→ 全然違います! 対流は流れが運ぶ、伝導は分子が伝える。桁違いの効率差があります。
- 拡散項 $\nabla \cdot (\Gamma \nabla \phi)$:コーヒーにミルクを入れて放置したことはありますか? かき混ぜなくても、しばらく経つと自然に混ざりますよね。あれが分子拡散です。では次の質問——ハチミツとお水、どちらが流しやすいですか? 当然お水ですよね。ハチミツは粘性($\mu$)が高いから流れにくい。粘性が大きいと拡散項が強くなり、流体は「もったりした」動きになります。レイノルズ数が小さい流れ(ゆっくり、ドロドロ)では拡散が支配的。逆にRe数が大きい流れでは対流が圧倒し、拡散は脇役になります。
- 圧力項 $-\nabla p$:注射器のピストンを押すと、液体が針先から勢いよく出ますよね? なぜでしょう? ピストン側が高圧、針先が低圧——この圧力差が流体を押す力になるからです。ダムの放水も同じ原理。天気図で等圧線がギュッと密になっている場所では? そう、強風が吹きます。「圧力差があるところに流れが生まれる」——これがナビエ-ストークス方程式の圧力項の物理的意味。ここでの勘違いポイント:CFDの「圧力」は絶対圧ではなくゲージ圧のことが多い。圧縮性解析に切り替えたとたんに結果がおかしくなる場合、絶対圧/ゲージ圧の混同が原因かもしれません。
- ソース項 $S_\phi$:暖められた空気が上に昇る——なぜでしょう? 周囲より軽く(密度が低く)なったから、浮力で押し上げられるのです。この浮力はソース項として方程式に追加されます。他にも、ガスコンロの炎で化学反応熱が発生する、工場の電磁ポンプで金属溶湯にローレンツ力がかかる…これらはすべて「外部から流体にエネルギーや力を注入する」作用であり、ソース項で表現します。ソース項を忘れるとどうなるか? 自然対流の解析で浮力を入れ忘れると、流体は一切動かない——冬の部屋で暖房をつけたのに暖かい空気が上に行かない、という物理的にありえない結果になります。
仮定条件と適用限界
- 連続体仮定:クヌッセン数 Kn < 0.01(分子平均自由行程 ≪ 代表長さ)で成立
- ニュートン流体仮定:せん断応力と歪み速度が線形関係(非ニュートン流体では粘度モデルが必要)
- 非圧縮性仮定(Ma < 0.3の場合):密度を一定として扱う。マッハ数0.3以上では圧縮性効果を考慮
- ブシネスク近似(自然対流):密度変化を浮力項のみで考慮し、他の項では一定密度を使用
- 適用外ケース:希薄気体(Kn > 0.1)、超音速・極超音速流れ(衝撃波捕捉が必要)、自由表面流れ(VOF/Level Set等が必要)
次元解析と単位系
| 変数 | SI単位 | 注意点・換算メモ |
|---|---|---|
| 速度 $u$ | m/s | 入口条件で体積流量から換算する際、断面積の単位に注意 |
| 圧力 $p$ | Pa | ゲージ圧と絶対圧の区別。圧縮性解析では絶対圧を使用 |
| 密度 $\rho$ | kg/m³ | 空気: 約1.225 kg/m³@20°C、水: 約998 kg/m³@20°C |
| 粘性係数 $\mu$ | Pa·s | 動粘性係数 $\nu = \mu/\rho$ [m²/s] との混同に注意 |
| レイノルズ数 $Re$ | 無次元 | $Re = \rho u L / \mu$。層流/乱流遷移の判定指標 |
| CFL数 | 無次元 | $CFL = u \Delta t / \Delta x$。時間刻みの安定性に直結 |
数値解法と実装
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で扱う問題はチャンネル流れや等方性乱流など「シンプルな形状の問題」に集中する——これは精度への追求の結果として生まれた合理的な選択です。
風上差分(Upwind)
1次風上: 数値拡散が大きいが安定。2次風上: 精度向上するが振動のリスク。高レイノルズ数流れでは必須。
中心差分(Central Differencing)
2次精度だが、Pe数 > 2で数値振動が発生。低レイノルズ数の拡散支配流れに適する。
TVDスキーム(MUSCL、QUICK等)
リミッタ関数により数値振動を抑制しつつ高精度を維持。衝撃波や急勾配の捕捉に有効。
有限体積法 vs 有限要素法
FVM: 保存則を自然に満足。CFDの主流。FEM: 複雑形状・マルチフィジックスに有利。SPH等のメッシュフリー法も発展中。
CFL条件(クーラン数)
陽解法: CFL ≤ 1が安定条件。陰解法: CFL > 1でも安定だが、精度と反復回数に影響。LES: CFL ≈ 1を推奨。物理的意味: 1タイムステップで情報が1セル以上進まないこと。
残差モニタリング
連続の式・運動量・エネルギーの各残差が3〜4桁低下で収束と判断。質量保存の残差は特に重要。
緩和係数
圧力: 0.2〜0.3、速度: 0.5〜0.7が一般的な初期値。発散する場合は緩和係数を下げる。収束後は上げて加速。
非定常計算の内部反復
各タイムステップ内で定常解に収束するまで反復。内部反復数: 5〜20回が目安。残差がタイムステップ間で変動する場合は時間刻みを見直す。
SIMPLE法のたとえ
SIMPLE法は「交互に調整する」手法。まず速度を仮に求め(予測ステップ)、その速度で質量保存が満たされるよう圧力を補正し(補正ステップ)、補正された圧力で速度を修正する——このキャッチボールを繰り返して正解に近づく。2人で棚を水平にする作業に似ている:片方が高さを合わせ、もう片方がバランスを取り、これを交互に繰り返す。
風上差分のたとえ
風上差分は「川の流れに立って上流の情報を重視する」手法。川の中にいる人が下流を見ても水の出所は分からない——上流の情報が下流を決めるという物理を反映した離散化手法。精度は1次だが、流れの方向を正しく捕捉するため安定性が高い。
実践ガイド
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は「実験より正直なベンチマーク」として乱流研究の基盤になっています。
解析フローのたとえ
CFDの解析フローは「水族館の水槽を設計する」感覚で考えてみてください。まず水槽の形を決め(計算領域)、水の入り口と出口を設計し(境界条件)、ポンプの強さを設定する(流量条件)。魚がどう泳ぐか見たければ粒子追跡。水温が気になれば熱解析を追加。…どうですか? 意外と直感的ではありませんか?
初心者が陥りやすい落とし穴
「y+って何ですか?」——この質問が出たら要注意。壁面近くのメッシュ解像度を表すy+は、CFDの結果精度を左右する最重要パラメータの1つ。壁関数を使うなら30〜300、壁を完全に解像するなら1以下。これを確認せずに「摩擦抵抗が合わない!」と悩む人がとても多い。体温計の先端をちゃんと脇に挟まないで「熱がないのに37.5度って出た!」と慌てているようなものです。
境界条件の考え方
入口の境界条件は「蛇口をどのくらい開けるか」と同じ。ちょろちょろ出すか(低速)、全開にするか(高速)。でもCFDではもう一つ——「どのくらい暴れた水を出すか」(乱流強度)も指定する必要があります。蛇口の開け方を間違えると、下流のシンク全体の流れが変わりますよね? CFDでも入口条件のミスは下流全体に波及します。
ソフトウェア比較
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特化コードは研究用」という分業が自然に生まれた背景です。
選定で最も重要な3つの問い
- 「何を解くか」:DNS(直接数値シミュレーション)の基礎に必要な物理モデル・要素タイプが対応しているか。例えば、流体ではLES対応の有無、構造では接触・大変形の対応能力が差になる。
- 「誰が使うか」:初心者チームならGUIが充実したツール、経験者ならスクリプト駆動の柔軟なツールが適する。自動車のAT車(GUI)とMT車(スクリプト)の違いに似ている。
- 「どこまで拡張するか」:将来の解析規模拡大(HPC対応)、他部門への展開、他ツールとの連携を見据えた選択が長期的なコスト削減につながる。
先端技術
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で計算がうまくいかないとき、何を確認すればいいですか?
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研究者間のよくある笑い話です。
「解析が合わない」と思ったら
- まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
- 最小再現ケースを作る——DNS(直接数値シミュレーション)の基礎の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
- 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
- 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
関連トピック
なった
詳しく
報告