ルンゲクッタ法(以下RK)はrk.eq1.gifから複数の段階を経てより高精度な近似を行う. 段数を上げることでより高次の精度を得られる. ただし,段数=次数となるのは4段4次までで,それ以降は5段4次や8段6次など段数よりも低い次数になる. そのため4次のルンゲクッタ(RK4)がもっともよく使われる. ちなみに,前進オイラー法は1段1次のルンゲクッタと同じである.

移流方程式の時間微分以外の項をrk.eq2.gifとして,一般的なRKは,

rk.eq3.gif

ここで,rk.eq4.gifである. 上付きのrk.eq5.gifはRKのステップごとの中間値を示している.

RK2(改良オイラー法)

2段2次のルンゲクッタは改良オイラー法(modified Eular method)とも呼ばれている.

rk.eq6.gif

RK3

3段3次のルンゲクッタの式は以下.

rk.eq7.gif

RK4

4段4次のルンゲクッタの式は以下.

rk.eq8.gif

例:矩形波の移流

矩形波(0.25 < x < 0.75で1,それ以外で0)を一定速度(u=0.75)で移流させた結果を示す.グリッド解像度N=128, シミュレーション空間の大きさL=5.0,グリッド幅Δx=L/N,タイムステップ幅Δt=(1.0/CFL)*Δx/uとして,CFL=7, 1.1, 0.535の場合を示す.

rectan_rk_cfl7.jpg
前進オイラー,RK2, RK3での移流結果.CFL=7でΔt=0.00744.
rectan_rk_cfl11.jpg
RK2,RK3,RK4での移流結果.CFL=1.1でΔt=0.0473.
rectan_rk_cfl0535.jpg
RK3,RK4での移流結果.CFL=0.535でΔt=0.0972.

ルンゲクッタの次数が上がるにつれてより大きなタイムステップでも安定して計算できるようになる.下2つのグラフではCFL=1.1, 0.535と中途半端な数字になっているが,これはRK2,RK3が振動を始める限界を探って設定したためである.ちなみにRK4の限界はCFL=0.49ぐらいなので,RK3とRK4の安定性は大きくは変わらない.


添付ファイル: filerk.eq2.gif 831件 [詳細] filerk.eq3.gif 785件 [詳細] filerk.eq6.gif 824件 [詳細] filerk.eq4.gif 781件 [詳細] filerk.eq5.gif 794件 [詳細] filerk.eq7.gif 783件 [詳細] filerk.eq8.gif 888件 [詳細] filerk.eq1.gif 746件 [詳細] filerectan_rk_cfl0535.jpg 1929件 [詳細] filerectan_rk_cfl11.jpg 2002件 [詳細] filerectan_rk_cfl7.jpg 2076件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-03-08 (金) 18:06:06