IGModel-SW 1.0

sw_equation_solverモジュール

浅水方程式ソルバを提供するモジュール. [詳細]

関数/サブルーチン

subroutine, public init_sw_equation_solver (icgrid)
 sw_equation_solver モジュールの初期化を行う.
subroutine, public temporal_integration (tstep, dt, icgrid)
 浅水方程式系の時間積分を行う.
subroutine RungeKutta_fourth_order (xy_VelA, xy_VelN, DVelDtN, xy_HeightA, xy_HeightN, DHeightDtN, dt, icgrid, idMin)
 4 次の Runge=Kutta 法を用いて, 浅水方程式系を時間積分する.
subroutine Adams_Bashforth_third_order (U_nplus1, U_n, dUdt_n, dUdt_nminus1, dUdt_nminus2, dt)
 3 次の Adams=Bashforth 法を用いて, 浅水方程式系を時間積分する.

説明

浅水方程式ソルバを提供するモジュール.



Copyright (C) GFD Dennou Club, 2011-2012. All rights reserved.
license ??

作者:
Yuta Kawai

関数/サブルーチン

subroutine sw_equation_solver::Adams_Bashforth_third_order ( real(DP),dimension(:,:,:,:),intent(inout)  U_nplus1,
real(DP),dimension(:,:,:,:),intent(in)  U_n,
real(DP),dimension(:,:,:,:),intent(in)  dUdt_n,
real(DP),dimension(:,:,:,:),intent(in)  dUdt_nminus1,
real(DP),dimension(:,:,:,:),intent(in)  dUdt_nminus2,
real(DP),intent(in)  dt 
) [private]

3 次の Adams=Bashforth 法を用いて, 浅水方程式系を時間積分する.

このサブルーチンでは, 現在の時刻 $t$(タイムレベル n )の物理場の値と, タイムレベル n,n-1,n-2 の物理場の局所時間微分を用いて, 時刻 $t+\Delta t$(タイムレベル n+1 )の未来の物理場の値を予報する.

全格子点におけるタイムレベル n+1 の物理場 $\Dvect{U}$の値は, 以下の式によって予測される.

\[ \Dvect{U}_{n+1} = \Dvect{U}_n + \dfrac{1}{12} \Delta t \left[ 23 \left(\DP{\Dvect{U}}{t}\right)_{n} - 16 \left(\DP{\Dvect{U}}{t}\right)_{n-1} + 5 \left(\DP{\Dvect{U}}{t}\right)_{n-2} \right] \]

引数:
[in,out]U_nplus1タイムレベル n+1 の物理場データを保持する配列.
[in]dUdt_nタイムレベル n の物理場の局所時間微分データを保持する配列.
[in]dUdt_nminus1タイムレベル n-1 の物理場の局所時間微分データを保持する配列.
[in]dUdt_nminus2タイムレベル n-2 の物理場の局所時間微分データを保持する配列.
[in]dt時間刻み幅 [s].

sw_equation_solver.f90469 行で定義されています。

呼出しグラフ:

subroutine,public sw_equation_solver::init_sw_equation_solver ( type(IcGrid2D_FVM),intent(inout)  icgrid)

sw_equation_solver モジュールの初期化を行う.

引数:
[in,out]icgrid構造型 FVIcGrid2D_FVM変数.

sw_equation_solver.f90103 行で定義されています。

関数の呼び出しグラフ:

呼出しグラフ:

subroutine sw_equation_solver::RungeKutta_fourth_order ( real(DP),dimension(:,idmin:,idmin:,:),intent(inout)  xy_VelA,
real(DP),dimension(:,idmin:,idmin:,:),intent(in)  xy_VelN,
real(DP),dimension(:,idmin:,idmin:,:),intent(inout)  DVelDtN,
real(DP),dimension(:,idmin:,idmin:,:),intent(inout)  xy_HeightA,
real(DP),dimension(:,idmin:,idmin:,:),intent(in)  xy_HeightN,
real(DP),dimension(:,idmin:,idmin:,:),intent(inout)  DHeightDtN,
real(DP),intent(in)  dt,
type(IcGrid2D_FVM),intent(in)  icgrid,
integer,intent(in)  idMin 
) [private]

4 次の Runge=Kutta 法を用いて, 浅水方程式系を時間積分する.

このサブルーチンでは, 時刻 $t$(タイムレベル n )の物理場の値から未来の時刻 $t+\Delta t$(タイムレベル n+1 )の物理場の値を予報する. 今, 速度場と高度場の変数の組を $ \Dvect{V} = \{\Dvect{v}, h\} $と書くことにする. また, $ L_{motion}, L_{continious} $をそれぞれ運動方程式と連続の式の半離散式の右辺を表す関数とし, $\Dvect{L}=\{ L_{motion}, L_{continious} \} $とする. このとき, 以下の式を計算し, 未来の物理場を予報する.

\[ \Dvect{V}_{n+1} = \Dvect{V}_n + \dfrac{\Dvect{k}_1 + 2\Dvect{k}_2 + 2\Dvect{k}_3 + \Dvect{k}_4}{6} \]

ここで, $\Dvect{k}_i$は次のように定義される.

\begin{eqnarray*} \Dvect{k}_1 &=& \Delta t \; \Dvect{L}(t_n, \Dvect{v}, h), \\\ \Dvect{k}_2 &=& \Delta t \; \Dvect{L}(t_n + \dfrac{\Delta t}{2}, \Dvect{v}+\dfrac{\Dvect{k}_{1v}}{2}, h+\dfrac{k_{1h}}{2}) , \\\ \Dvect{k}_3 &=& \Delta t \; \Dvect{L}(t_n + \dfrac{\Delta t}{2}, \Dvect{v}+\dfrac{\Dvect{k}_{2v}}{2}, h+\dfrac{k_{2h}}{2}) , \\\ \Dvect{k}_4 &=& \Delta t \; \Dvect{L}(t_n+\Delta t, \Dvect{v}+\Dvect{k}_{3v}, h+k_{3h}). \end{eqnarray*}

引数:
[in,out]xy_VelAタイムレベル n+1 の速度場データを保持する配列.
[in]xy_VelNタイムレベル n の速度場データを保持する配列.
[in,out]DVelDtNタイムレベル n の速度場データの時間変化率を保持する配列.
[in,out]h_nplus1タイムレベル n+1 の表面高度場データを保持する配列.
[in]h_nタイムレベル n の表面高度場データを保持する配列.
[in,out]dhdt_nタイムレベル n の表面高度場の時間変化率のデータを保持する配列.
[in]dt時間刻み幅 [s].
[in]icgrid構造型 IcGrid2D_FVM の変数.
[in]idMin各種物理場を保持する配列の下限境界インデックス.

sw_equation_solver.f90299 行で定義されています。

関数の呼び出しグラフ:

呼出しグラフ:

subroutine,public sw_equation_solver::temporal_integration ( integer,intent(in)  tstep,
real(DP),intent(in)  dt,
type(IcGrid2D_FVM),intent(in)  icgrid 
)

浅水方程式系の時間積分を行う.

引数:
[in]tstep時間スッテプ数
[in]dt時間刻み幅.
[in]icgrid構造型 IcGrid2D_FVM の変数.

sw_equation_solver.f90137 行で定義されています。

関数の呼び出しグラフ:

呼出しグラフ:

 全て クラス ネームスペース ファイル 関数 変数