Subroutine : |
|
xyz_UB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ u (t-\Delta t) $ . 東西風速. Eastward wind
|
|
xyz_VB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ v (t-\Delta t) $ . 南北風速. Northward wind
|
|
xyz_TempB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ T (t-\Delta t) $ . 温度. Temperature
|
|
xyz_QVapB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ q (t-\Delta t) $ . 比湿. Specific humidity
|
|
xy_PsB(0:imax-1, 1:jmax) : | real(DP), intent(in)
: | $ p_s (t-\Delta t) $ . 地表面気圧. Surface pressure
|
|
xyz_UN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ u (t) $ . 東西風速. Eastward wind
|
|
xyz_VN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ v (t) $ . 南北風速. Northward wind
|
|
xyz_TempN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ T (t) $ . 温度. Temperature
|
|
xyz_QVapN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ q (t) $ . 比湿. Specific humidity
|
|
xy_PsN(0:imax-1, 1:jmax) : | real(DP), intent(in)
: | $ p_s (t) $ . 地表面気圧. Surface pressure
|
|
xyz_DUDt(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ DP{u}{t} $ . 東西風速変化. Zonal wind tendency
|
|
xyz_DVDt(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ DP{v}{t} $ . 南北風速変化. Meridional wind tendency
|
|
xyz_DTempDt(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ DP{T}{t} $ . 温度変化. Temperature tendency
|
|
xyz_DQVapDt(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | $ DP{q}{t} $ . 比湿変化. Temperature tendency
|
|
xyz_UA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out)
: | $ u (t+Delta t) $ . 東西風速. Eastward wind
|
|
xyz_VA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out)
: | $ v (t+Delta t) $ . 南北風速. Northward wind
|
|
xyz_TempA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out)
: | $ T (t+Delta t) $ . 温度. Temperature
|
|
xyz_QVapA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out)
: | $ q (t+Delta t) $ . 比湿. Specific humidity
|
|
xy_PsA(0:imax-1, 1:jmax) : | real(DP), intent(out)
: | $ p_s (t+Delta t) $ . 地表面気圧. Surface pressure
|
|
力学過程の演算を行い, 与えられた $ t-\Delta t $ および $ t $ の 東西風速
(xyz_UB, xyz_VN), 南北風速 (xyz_VB, xyz_VN), 温度 (xyz_TempB, xyz_TempN),
比湿 (xyz_QVapB, xyz_QVapN), 地表面気圧 (xyz_PsB, xyz_PsN) から, $ t+Delta
t $ の 東西風速 (xyz_UA), 南北風速 (xyz_VA), 温度 (xyz_TempA), 比湿
(xyz_QVapA), 地表面気圧 (xyz_PsA) を返します.
別の物理プロセスによる渦度, 発散, 温度, 比湿の変化を,
力学過程の変化に足して次のステップを計算する場合には, それらの変化を
xyz_DUDt, xyz_DVDt, xyz_DTempDt, xyz_DQVapDt に与えてください.
時間積分法にはリープフロッグスキームを用いています. デフォルトでは, $ Delta
t $ を大きくとるために, 重力波項に セミインプリシット法を適用しています.
Calculating dynamical core, from eastward wind (xyz_UB, xyz_UN), northward
wind (xyz_VB, xyz_VN), temperature (xyz_TempB, xyz_TempN), specific
humidity (xyz_QVapB, xyz_QVapN), surface pressure (xyz_PsB, xyz_PsN) at $
t-\Delta t $ and $ t $, eastward wind (xyz_UA), northward wind (xyz_VA),
temperature (xyz_TempA), specific humidity (xyz_QVapA), surface pressure
(xyz_PsA) are returned.
In order to add tendencies of vorticity, divergence, temperature and
specific humidity by another physical process to tendencies of this
dynamical process and to calculate the values at next time step, give these
tendencies to "xyz_DUDt", "xyz_DVDt",
"xyz_DTempDt", "xyz_DQVapDt"
Leap-frog scheme is used as time integration. By default, semi-implicit
scheme is applied to gravitational terms for extension of $ Delta t $ .
[Source]
subroutine Dynamics( xyz_UB, xyz_VB, xyz_TempB, xyz_QVapB, xy_PsB, xyz_UN, xyz_VN, xyz_TempN, xyz_QVapN, xy_PsN, xyz_DUDt, xyz_DVDt, xyz_DTempDt, xyz_DQVapDt, xyz_UA, xyz_VA, xyz_TempA, xyz_QVapA, xy_PsA )
!
! 力学過程の演算を行い, 与えられた $ t-\Delta t $ および $ t $ の
! 東西風速 (xyz_UB, xyz_VN), 南北風速 (xyz_VB, xyz_VN),
! 温度 (xyz_TempB, xyz_TempN), 比湿 (xyz_QVapB, xyz_QVapN),
! 地表面気圧 (xyz_PsB, xyz_PsN) から,
! $ t+\Delta t $ の
! 東西風速 (xyz_UA), 南北風速 (xyz_VA), 温度 (xyz_TempA),
! 比湿 (xyz_QVapA), 地表面気圧 (xyz_PsA) を返します.
!
! 別の物理プロセスによる渦度, 発散, 温度, 比湿の変化を,
! 力学過程の変化に足して次のステップを計算する場合には,
! それらの変化を xyz_DUDt, xyz_DVDt, xyz_DTempDt, xyz_DQVapDt
! に与えてください.
!
! 時間積分法にはリープフロッグスキームを用いています.
! デフォルトでは, $ \Delta t $ を大きくとるために, 重力波項に
! セミインプリシット法を適用しています.
!
!
! Calculating dynamical core,
! from eastward wind (xyz_UB, xyz_UN),
! northward wind (xyz_VB, xyz_VN),
! temperature (xyz_TempB, xyz_TempN),
! specific humidity (xyz_QVapB, xyz_QVapN),
! surface pressure (xyz_PsB, xyz_PsN) at $ t-\Delta t $ and $ t $,
! eastward wind (xyz_UA), northward wind (xyz_VA),
! temperature (xyz_TempA),
! specific humidity (xyz_QVapA), surface pressure (xyz_PsA)
! are returned.
!
! In order to add tendencies of vorticity, divergence,
! temperature and specific humidity by another physical process to
! tendencies of this dynamical process
! and to calculate the values at next time step,
! give these tendencies to
! "xyz_DUDt", "xyz_DVDt", "xyz_DTempDt", "xyz_DQVapDt"
!
! Leap-frog scheme is used as time integration.
! By default, semi-implicit scheme is applied to gravitational terms
! for extension of $ \Delta t $ .
!
!
! モジュール引用 ; USE statements
!
! 格子点設定
! Grid points settings
!
use gridset, only: imax, jmax, kmax ! 鉛直層数.
! Number of vertical level
! 時刻管理
! Time control
!
use timeset, only: DelTime ! $ \Delta t $ [s]
! 種別型パラメタ
! Kind type parameter
!
use dc_types, only: DP ! 倍精度実数型. Double precision.
! 宣言文 ; Declaration statements
!
implicit none
real(DP), intent(in):: xyz_UB (0:imax-1, 1:jmax, 1:kmax)
! $ u (t-\Delta t) $ . 東西風速. Eastward wind
real(DP), intent(in):: xyz_VB (0:imax-1, 1:jmax, 1:kmax)
! $ v (t-\Delta t) $ . 南北風速. Northward wind
real(DP), intent(in):: xyz_TempB (0:imax-1, 1:jmax, 1:kmax)
! $ T (t-\Delta t) $ . 温度. Temperature
real(DP), intent(in):: xyz_QVapB (0:imax-1, 1:jmax, 1:kmax)
! $ q (t-\Delta t) $ . 比湿. Specific humidity
real(DP), intent(in):: xy_PsB (0:imax-1, 1:jmax)
! $ p_s (t-\Delta t) $ . 地表面気圧. Surface pressure
real(DP), intent(in):: xyz_UN (0:imax-1, 1:jmax, 1:kmax)
! $ u (t) $ . 東西風速. Eastward wind
real(DP), intent(in):: xyz_VN (0:imax-1, 1:jmax, 1:kmax)
! $ v (t) $ . 南北風速. Northward wind
real(DP), intent(in):: xyz_TempN (0:imax-1, 1:jmax, 1:kmax)
! $ T (t) $ . 温度. Temperature
real(DP), intent(in):: xyz_QVapN (0:imax-1, 1:jmax, 1:kmax)
! $ q (t) $ . 比湿. Specific humidity
real(DP), intent(in):: xy_PsN (0:imax-1, 1:jmax)
! $ p_s (t) $ . 地表面気圧. Surface pressure
real(DP), intent(in):: xyz_DUDt (0:imax-1, 1:jmax, 1:kmax)
! $ \DP{u}{t} $ . 東西風速変化.
! Zonal wind tendency
real(DP), intent(in):: xyz_DVDt (0:imax-1, 1:jmax, 1:kmax)
! $ \DP{v}{t} $ . 南北風速変化.
! Meridional wind tendency
real(DP), intent(in):: xyz_DTempDt (0:imax-1, 1:jmax, 1:kmax)
! $ \DP{T}{t} $ . 温度変化.
! Temperature tendency
real(DP), intent(in):: xyz_DQVapDt (0:imax-1, 1:jmax, 1:kmax)
! $ \DP{q}{t} $ . 比湿変化.
! Temperature tendency
real(DP), intent(out):: xyz_UA (0:imax-1, 1:jmax, 1:kmax)
! $ u (t+\Delta t) $ . 東西風速. Eastward wind
real(DP), intent(out):: xyz_VA (0:imax-1, 1:jmax, 1:kmax)
! $ v (t+\Delta t) $ . 南北風速. Northward wind
real(DP), intent(out):: xyz_TempA (0:imax-1, 1:jmax, 1:kmax)
! $ T (t+\Delta t) $ . 温度. Temperature
real(DP), intent(out):: xyz_QVapA (0:imax-1, 1:jmax, 1:kmax)
! $ q (t+\Delta t) $ . 比湿. Specific humidity
real(DP), intent(out):: xy_PsA (0:imax-1, 1:jmax)
! $ p_s (t+\Delta t) $ . 地表面気圧. Surface pressure
character(*), parameter:: subname = 'Dynamics'
! 実行文 ; Executable statement
!
! 初期化
! Initialization
!
if ( .not. dynamics_hspl_vas83_inited ) call DynamicsInit
xyz_UA = xyz_UB + 2.0_DP * DelTime * xyz_DUDt
xyz_VA = xyz_VB + 2.0_DP * DelTime * xyz_DVDt
xyz_TempA = xyz_TempB + 2.0_DP * DelTime * xyz_DTempDt
xyz_QVapA = xyz_QVapB + 2.0_DP * DelTime * xyz_DQVapDt
xy_PsA = xy_PsB
end subroutine Dynamics