移流方程式の時間微分を前進オイラー法で離散化すると, ![]() 1次元の場合を考える.グリッド ![]() ここで, 風上差分ではその名の通り,風上側の値を使って差分を行う1次精度の離散化法である.
1次元の場合, ![]() 風上差分はCFL(Courant-Friedreichs-Lewy)条件を満たしていれば安定である. CFL条件によるタイムステップ幅の制限は, ![]() タイムステップ幅は通常これよりもさらに小さい数を用いた方がよい.
係数:CFL数(CFL number)を ![]() ここで, 振動と数値拡散†風上差分の離散式( ![]()
さて,上式の微分を下で述べる中心差分で離散化してみる. ![]() 風上差分は中心差分に拡散項を加えたものであることが分かる. 中心差分では非常に大きな振動が発生する. その振動を拡散項により抑えているのが風上差分である. この振動を抑えるという考え方は重要である. より高次の関数を使って補間することで振動を抑えるのが,Lax-WendroffやQUICK,QUICKEST,河村・桑原スキームなどで, 2階,3階の微分を使って抑えるのがENOやWENOである. これらに対して,元の形状を保持するという考え方に基づき,異なるアプローチをとるのがCIP法,RCIP法などである. ちなみにRCIP法では数値拡散が発生してしまうので,これを抑えるためのSTAA手法では逆に数値拡散項を引くことで拡散を抑えている. |