ゴドノフ法
ゴドノフ法(Godunov method)とは、対象のシステムを分割し、各セル内は一定値(区分定数)と仮定し、セル境界で保存則のリーマン問題を解く手法です。リーマン問題とは、セル境界の不連続を初期条件とする保存則の初期値問題です。
物理量を $U$ 、その流束を $F$ とすると、一次元の保存則は以下のように表されます。
$$\frac{\partial U}{\partial t}+\frac{\partial F(U)}{\partial x}=0$$
セルの位置を $i$ とすると、隣のセルとの境界を通過する流束は $F_{i-1/2}$ と $F_{i+1/2}$ になります。このとき、現在の時刻を $n$ とすると、時刻 $n+1$ の値は以下で求められます。
$$U_i^{n+1}=U_i^n-\frac{\Delta t}{\Delta x}(F_{i+1/2}-F_{i-1/2})$$
これは、初期のころの1次精度のゴドノフ法です。セル内は一定値であり、境界で値は階段状になるため、数値拡散(数値誤差)は大きくなります。
ゴドノフ型有限体積法
ゴドノフ型有限体積法(Finite Volume Godunov Scheme)とは、有限体積法という器の中で、セル境界で局所リーマン問題を解いて数値流束を求めるというゴドノフ法の考え方を受け継ぎ、高次化した手法です。
高次化の手法など、有限体積法+ゴドノフ法と組み合わせて使われる手法には以下があります。
- 空間精度の高次化:MUSCL / PPM / WENO
- リーマンソルバ:HLLD / Roe / HLLC など
※セル境界の数値流束を計算する手法 - 時間積分の高次化:ルンゲ-クッタ法(Runge–Kutta)
- 磁場の発散抑止:CT法(Constrained Transport)
MUSCL
MUSCL(Monotone Upstream-centered Schemes for Conservation Laws)は、ゴドノフ法を空間2次精度以上に高次化するための代表的な再構成法です。MHD(磁気流体力学)コードやCFD(数値流体解析)コードで広く使われています。
従来のゴドノフ法はセル内は一定値でしたが、MUSCLはセル内を1次関数で近似します。これにより、セル境界でより正確な値を求められ、空間2次精度が得られます。
MUSCLでは、セル中心の値を $U_i$ とすると、境界 $i+1/2$ の左右の値を以下で求めます。
$$U_{i+1/2}^L=U_i+\frac{\Delta_i}{2}$$$$U_{i+1/2}^R=U_{i+1}-\frac{\Delta_i}{2}$$
このとき、セル内の傾き(勾配)$\Delta_i$ を以下のように単純に定義すると、衝撃波付近でオーバーシュートやアンダーシュートが発生します。
$$\Delta_i=\frac{U_{i+1}-U_{i-1}}{2}$$
そのため、勾配リミッタを使います。代表的な勾配リミッタである Minmod では、$\Delta_i$ は以下のように定義します。
$$\Delta_i=\mathrm{minmod}(U_i-U_{i-1},U_{i+1}-U_i)$$$$\mathrm{minmod}(a,b)\equiv\left\{\begin{array}{ll}
\mathrm{sgn}(a)\mathrm(|a|,|b|) & (ab\gt0) \\
0 & (ab\le0)\end{array} \right.$$
勾配リミッタは、滑らかな領域では左右の差分から傾きを求め、空間の2次精度を実現します。衝撃波や極大・極小付近では傾きを小さく(場合によっては0に)して、オーバーシュートやアンダーシュートを防ぎます。
このように、MUSCLの性能はどの勾配リミッタを用いるかに大きく依存します。実際の MHDコードでは、Minmod のほか、MC、Van Leer、Superbee などの勾配リミッタが問題に応じて使い分けられています。
HLLD
HLLD(Harten, Lax, van Leer Discontinuities)は、MHD(磁気流体力学)方程式のための近似リーマンソルバ(リーマン問題解法)です。現在、宇宙プラズマMHDコードで最も広く使われている手法の1つです。
リーマンソルバは、MUSCLなどで求めた $U_L$ と $U_R$ から、セル境界を通過する流束 $F_{i+1/2}$ を求める計算手法です。HLLDは、この流束を高速かつ高精度に計算するための方法で、アルヴェン波を近似的に計算することができます。
MUSCLの段階ではセル間の境界は1つですが、HLLDではMHD特有の5つの波による5つの境界に分割します。波を1つ本通過するたびに、密度・圧力・流速・磁場などの物理量が不連続に変化するため、波を境界として見なすことができます。5つの波は以下になります。
$$S_L\lt S_L^*\lt S_M\lt S_R^*\lt S_R$$
-
- $S_L$:左向き高速磁気音波
- $S_L^*$:左向きアルヴェン波
- $S_M$:接触不連続
- $S_R^*$:右向きアルヴェン波
- $S_R$:右向き高速磁気音波
この5つの波により分けられる5つの状態は以下になります。尚、接触不連続 $S_M$ を跨いでも、圧力・法線速度・法線磁場は連続であるため、$U_L^{**}$ と $U_R^{**}$ を1つの中央状態 $U^{∗∗}$ として扱います。
-
- $U_L$:初期の左状態
- $U_L^*$:$S_L\lt S_L^*$ の間
- $U^{**}$:$S_L^*\lt S_R^*$ の間
・$U_L^{**}$:$S_L^*\lt S_M$ の間
・$U_R^{**}$:$S_M\lt S_R^*$ の間 - $U_R^*$:$S_R^*\lt S_R$ の間
- $U_R$:初期の右状態
HLLDの手順は以下になります。
-
- 波速 $S_L$ 、$S_L^*$ 、$S_M$ 、$S_R^*$ 、$S_R$ を推定
- ランキン–ユゴニオ条件から中間状態 $U_L^*$ 、$U^{**}$ 、$U_R^*$ を計算
- セル境界 $x/t=0$ がどの領域にあるか判定
- その状態から数値流束 $F$ を求める
CT法
CT法(Constrained Transport)とは、磁場の発散抑止の標準的な手法です。磁場の発散抑止とは、MHDシミュレーションでの数値技法の1つで、磁場の発散が常に0(磁気単極子は存在しない)になることを数値計算でも担保することを指します。
$$\nabla\cdot{\bf B}=0$$
通常の有限体積法では磁場をセルの中心に置くのに対し、CT法ではセル面に置きます。例えば、$B_x$ は $x$ 軸に垂直な面、$B_y$ は $y$ 軸に垂直な面に配置します。

電場による磁場の変化は、MHD方程式の中のファラデーの電磁誘導の法則に従います。この式そのものが、磁束保存を満たすように設計されています。
$$\nabla\times{\bf E}=-\frac{\partial{\bf B}}{\partial t}$$
例えば、ある辺の電場 $E_z$ は、左側のセルでは磁束を増やし、右側のセルでは同じ量の磁束を減らします。従って、隣り合うセル間では磁束の受け渡しが一致するため、セル単位でみると、出入りする磁束は打ち消し合い、磁場の発散が0であることが担保されています。
CT法の長所は、磁場の発散0が機械精度(数値の丸め誤差を除く精度)で維持され、長時間計算でも安定であることですが、短所は、セル配置が普通の有限体積法より複雑になり、実装が難しいことです。


