$\frac{\partial \mathbf{u}}{\partial t}+ (\mathbf{u}\cdot\nabla)\mathbf{u}= -\nabla p + \frac{1}{Re}\nabla^2\mathbf{u}$
$\nabla \cdot \mathbf{u} = 0$
渦度: $\omega = \partial v/\partial x - \partial u/\partial y$
2D非圧縮流れをブラウザ上でリアルタイムシミュレーション。Re数と流れ種別を変えて速度場・渦度場をカラーマップで直感的に可視化。
このシミュレーターの根幹をなすのが、非圧縮性粘性流体の運動を記述する「Navier-Stokes方程式」です。時間変化、流れによる運搬(慣性)、圧力勾配、粘性拡散の4つの力のバランスを表しています。
$$\frac{\partial \mathbf{u}}{\partial t}+ (\mathbf{u}\cdot\nabla)\mathbf{u}= -\nabla p + \frac{1}{Re}\nabla^2\mathbf{u}$$$\mathbf{u}$: 速度ベクトル、$t$: 時間、$p$: 圧力、$Re$: レイノルズ数。右辺第2項の$1/Re$が粘性項で、この係数がシミュレーターのスライダーで調整しているパラメータそのものです。
非圧縮性を保証する「連続の方程式」と、渦の強さと向きを表す「渦度」の式です。シミュレーターの流線やカラーマップ(渦度)はこれらの式から計算されています。
$$ \nabla \cdot \mathbf{u}= 0, \quad \omega = \frac{\partial v}{\partial x}- \frac{\partial u}{\partial y}$$$\nabla \cdot \mathbf{u} = 0$は「流れ込む量と流れ出る量は等しい」という質量保存則。$\omega$は渦度で、流体微粒子の回転速度を表し、赤い部分が反時計回り、青い部分が時計回りの渦に対応しています。
自動車・航空機の空力設計:車体や翼の周りの気流を解析し、燃費向上のための抵抗低減や、ダウンフォースを生み出す渦の制御を行います。シミュレーターの「障害物周り流れ」はその基礎研究です。
建築・都市環境工学:高層ビル周りの風の流れや、強風時に発生するビル風の危険性を評価します。また、室内の空調効率を上げるための気流シミュレーションにも応用されます。
電子機器の熱設計:スマートフォンやサーバー内の基板から発生する熱を、ファンでどのように効率よく排熱するか、内部の空気流れをCFDで解析します。
環境流体力学:河川の流れ、大気汚染物質の拡散、海流の予測など、地球規模の環境問題の理解と予測に不可欠なツールとなっています。
このシミュレーターを使い始めるとき、いくつか気をつけてほしいポイントがあるよ。まず、「カラーマップの値がそのまま物理的な圧力だ」と誤解しないで。ここで表示されているのは「渦度」で、流体の「回転の強さ」を表している。圧力は別物で、このツールでは可視化していないんだ。例えば、障害物の後ろで青と赤が隣り合っている部分は、反対向きの渦がせめぎ合っていることを示している。
次に、パラメータを極端に変えすぎないこと。特にレイノルズ数(Re)を一気に10000など非常に大きな値にすると、計算が不安定になってグリッド状のノイズ(数値振動)が出たり、発散してしまうことがある。実務のCFDでも、いきなり最終条件で計算せず、低いReから段階的に上げて解の収束を確認するんだ。例えば、蓋駆動キャビティでRe=10000の挙動を見たいなら、1000→3000→5000…と少しずつ上げてみよう。
最後に、「2Dの結果がそのまま3Dの現象を表す」と思わないこと。このツールは学習用に現象を本質的に理解するためのものだ。実際の流れは3次元で、例えば蓋駆動キャビティ流れも、深さ方向がある3Dでは側面に複雑な渦構造(テイラー・ゴルトラ渦など)が発生する。2Dシミュレーションはコストが低く現象の理解に有用だが、実設計では3D解析が必須だということを頭に入れておこう。
このツールで解いている基礎的な流れの方程式は、実は非常に多くの工学分野の根底で使われているんだ。まず挙げるのは「熱流体工学」だ。Navier-Stokes方程式にエネルギー保存の式(温度の輸送方程式)を加えれば、エンジンの冷却水流れや電子部品の放熱シミュレーションの基礎になる。例えば、キャビティ内の壁を加熱したら、温度差による浮力で自然対流が起こるよ。
もう一つは「化学プロセス工学」。反応槽内での薬品の混合効率を上げるためには、流れのパターンと物質の拡散を理解する必要がある。ここで見ている渦や循環が、混合を促進するキーファクターになるんだ。また、「バイオメカニクス」も重要な応用先。血管内の血液流動(血液は非ニュートン流体だが基礎は同じ)や、心臓弁周りの流れを解析する際の第一歩として、このような障害物周りの剥離や渦の研究が活かされている。
少し意外かも知れないが、「気象学・海洋学」の大規模な数値シミュレーションも、原理的には同じ方程式の上に成り立っている。大気や海流の大循環を計算する際には、地球の自転によるコリオリ力などの項が追加されるが、慣性と粘性のバランスを表すRe数の概念は非常に重要だ。ツールでReを変えて流れが複雑になる様子は、小さなスケールの乱流の発生を理解する入り口になるんだ。
このシミュレーターに慣れて「もっと中身を知りたい」と思ったら、次のステップに進んでみよう。まず「離散化」と「アルゴリズム」を学ぶことをお勧めする。コンピュータは連続的な微分方程式をそのまま解けないので、メッシュ(格子)で領域を分割し、微分を差分で近似する。例えば、速度の勾配 $\frac{\partial u}{\partial x}$ を、隣り合う格子点の値の差 $(u_{i+1}-u_{i-1})/(2\Delta x)$ で計算するんだ(中心差分)。このツールでも背後でそうした計算が行われている。
次に、この分野の肝である「圧力と速度の連成解法」を調べてみよう。非圧縮流れでは、圧力が速度場が連続の式 $\nabla \cdot \mathbf{u}=0$ を満たすように調整する役割を持つ。これをどう効率的に解くかがCFDの核心の一つで、「SIMPLE法」や「射影法」といった有名なアルゴリズムがある。これらの手法について学べば、なぜCFD計算に時間がかかるのかが実感できるはずだ。
数学的な背景としては、「ベクトル解析」と「偏微分方程式」の基礎知識があると式の意味が深く理解できる。特に $\nabla$(ナブラ)演算子が何をしているのか(勾配、発散、回転)を理解すれば、Navier-Stokes方程式の各項が「加速」「圧力勾配による力」「粘性による拡散」を表していることが腹落ちするよ。まずは、このツールで遊びながら、パラメータを変えた時の流れ場の変化を言葉で説明してみる練習から始めるのが、次の最高の一歩だ。