ラプラス方程式|流体解析
流体解析を学ぶ上で、避けて通れないのが圧力の計算である。流体の動きをシミュレーションするためには、速度だけでなく圧力がどのように分布しているかを正確に把握しなければならない。
この記事では、流体解析における圧力計算の要となる「ラプラス方程式」について、その役割から具体的な計算の仕組みまでを論理的に解説する。数式が苦手な初心者でも理解できるよう、具体例を交えて深掘りしていく。
ラプラス方程式とは何か
ラプラス方程式は、流体解析において「圧力の平衡状態(釣り合いの状態)」を計算するために用いられる式である。
流体の運動を記述するナビエ・ストークス方程式を解く際、単に次の時間の速度を求めるだけでは物理的に正しい結果が得られない。流体は「質量が保存される」という大前提があり、それを満たすように圧力が調整される必要がある。ラプラス方程式は、この条件を満たすための「拘束条件」として機能する。
時間の概念が存在しない式
この方程式の最大の特徴は、「時間の変化(非定常項)」が存在しないことである。
空間に対する2階微分のみで構成されており、数式上には「次の時間の値」が登場しない。つまり、ラプラス方程式は「現在の周囲の状況から、現在のあるべき状態を導き出す」ための式である。周囲の圧力分布から、自分自身の正しい圧力を決定するという役割を持っている。
計算の手順:離散化と反復計算
コンピュータにラプラス方程式を解かせるためには、連続的な空間を細かく分割し、足し算や引き算の形に変換する「離散化」という作業が必要になる。
テイラー展開による差分化
離散化にはテイラー展開を用いた中心差分が用いられる。詳細な数式展開は割愛するが、結論として得られるのは非常にシンプルな関係性である。
ある点の圧力を計算したい場合、その点の上下左右にある隣接点の値を使って予測を行う。周囲の状況から真ん中の値を推測するというアプローチである。
なぜ反復計算が必要なのか
ラプラス方程式の計算において最も重要なプロセスが「反復計算」である。
一度周囲のデータから中心の値を計算しただけでは、正しい値(平衡状態)には到達しない。周囲の点自体もまだ正しい値になっていないからである。そのため、全体が矛盾なく釣り合う状態になるまで、同じ計算を何度も繰り返す必要がある。
計算の終了判定:「残差」の役割
無限に計算を繰り返すわけにはいかないため、どこかで計算を打ち切る基準が必要になる。ここで登場するのが「残差」という概念である。
反復計算を進めていくと、前回の計算結果と今回の計算結果の差が徐々に小さくなっていく。この差を「残差」と呼び、残差があらかじめ設定したしきい値(許容範囲)以下になった時点で「十分に値が安定した(収束した)」とみなし、計算を終了する。
【深掘り解説】平衡状態と反復計算を直感的に理解する
ここまで動画の要点に沿って解説してきたが、ここからは初心者向けに、独自の例え話を用いて「平衡状態」と「反復計算」のイメージを補完していく。
平衡状態とは「温度が均一になるプロセス」
平衡状態を理解するには、冬場に暖房をつけた部屋の温度変化を想像すると分かりやすい。
部屋の片側にヒーター(境界条件:温度が高い)があるとする。ヒーターのスイッチを入れた直後は、ヒーターの周辺だけが熱く、部屋の反対側は冷たいままである。時間が経つにつれて熱は徐々に部屋全体へと伝わり、最終的には部屋中がなだらかな温度分布に落ち着く。この「これ以上変化しない安定した状態」が平衡状態である。
ラプラス方程式は、まさにこの「最終的に落ち着いた状態の分布」を求めるための数式だと言える。
反復計算は「伝言ゲーム」である
コンピュータが反復計算によって平衡状態を求める過程は、大勢の人が横一列に並んで行う「伝言ゲーム」に似ている。
左端の人が「100」という数字(境界条件)を持っており、右端の人が「0」を持っているとする。間の人たちは、両隣の人の数字を聞いて、その平均値を自分の数字として更新していく。
1回目の更新では、左端の隣の人だけが数字を変えるかもしれない。2回、3回と「両隣の平均を取る」という作業を全員で繰り返していくと、徐々に数字の情報が全体に行き渡り、最終的には左から右へとなだらかに数字が小さくなる綺麗な分布が完成する。
これがラプラス方程式における反復計算の正体である。「一度の計算では終わらない」というのは、情報が全体に伝わり切るまでに何度も伝言を繰り返す必要があるからだ。
実践的なプログラミングへのアドバイス
最後に、流体解析のプログラムを自分で書こうとしている読者に向けて、実践的なアドバイスを提示する。
1. whileループと終了条件の設計
反復計算をプログラムで実装する際は、一般的に while ループを使用する。ここで終了条件である「残差の判定」を誤ると、プログラムが無限ループに陥ってしまう。
ループの先頭または末尾で、必ず「直前の配列」と「更新後の配列」の差の最大値を計算し、それが設定した許容誤差(例:0.0001など)を下回っているかをチェックするロジックを確実に実装する必要がある。
2. 境界条件の固定
反復計算のループ内で、壁や流入・流出境界などの「境界条件」の値を上書きしてしまわないように注意が必要である。境界条件は計算の基準となる「絶対的なルール」である。ループ内で周囲の平均を取って値を更新するのは、あくまで内部の流体領域のみに限定しなければならない。
3. 数式を恐れず「周囲の平均」と捉える
ラプラス方程式の偏微分方程式を見ると難解に感じるかもしれない。離散化された後のプログラムのコードを見れば、やっていることは単純な四則演算に過ぎない。「周囲の点から影響を受けて自分の状態が決まる」という物理的なイメージを常に持ちながら学習を進めることで、流体解析の理解は飛躍的に深まるはずだ。
