77 integer,
private :: atmos_dyn_numerical_diff_order = 1
78 real(RP),
private :: atmos_dyn_numerical_diff_coef = 1.0e-4_rp
79 real(RP),
private :: atmos_dyn_numerical_diff_coef_tracer = 0.0_rp
80 real(RP),
private :: atmos_dyn_numerical_diff_sfc_fact = 1.0_rp
81 logical ,
private :: atmos_dyn_numerical_diff_use_refstate = .true.
83 real(RP),
private :: atmos_dyn_wdamp_tau = -1.0_rp
84 real(RP),
private :: atmos_dyn_wdamp_height = -1.0_rp
85 integer,
private :: atmos_dyn_wdamp_layer = -1
88 real(RP),
private :: atmos_dyn_divdmp_coef = 0.0_rp
91 logical,
private :: atmos_dyn_flag_tracer_split_tend = .false.
92 logical,
private :: atmos_dyn_flag_fct_momentum = .false.
93 logical,
private :: atmos_dyn_flag_fct_t = .false.
94 logical,
private :: atmos_dyn_flag_fct_tracer = .false.
95 logical,
private :: atmos_dyn_flag_fct_along_stream = .true.
134 namelist / param_atmos_dyn / &
140 atmos_dyn_numerical_diff_order, &
141 atmos_dyn_numerical_diff_coef, &
142 atmos_dyn_numerical_diff_coef_tracer, &
143 atmos_dyn_numerical_diff_sfc_fact, &
144 atmos_dyn_numerical_diff_use_refstate, &
145 atmos_dyn_wdamp_tau, &
146 atmos_dyn_wdamp_height, &
147 atmos_dyn_wdamp_layer, &
152 atmos_dyn_divdmp_coef, &
153 atmos_dyn_flag_tracer_split_tend, &
154 atmos_dyn_flag_fct_momentum, &
155 atmos_dyn_flag_fct_t, &
156 atmos_dyn_flag_fct_tracer, &
157 atmos_dyn_flag_fct_along_stream
164 log_info(
"ATMOS_DYN_driver_setup",*)
'Setup' 173 log_info(
"ATMOS_DYN_driver_setup",*)
'Not found namelist. Default used.' 174 elseif( ierr > 0 )
then 175 log_error(
"ATMOS_DYN_driver_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_DYN. Check!' 178 log_nml(param_atmos_dyn)
182 if ( atmos_dyn_wdamp_layer >
kmax )
then 183 log_error(
"ATMOS_DYN_driver_setup",*)
'ATMOS_DYN_wdamp_layer should be less than total number of vertical layer(KA). Check!' 185 elseif( atmos_dyn_wdamp_layer > 0 )
then 186 atmos_dyn_wdamp_height = fz(atmos_dyn_wdamp_layer+
ks-1)
189 if ( atmos_dyn_wdamp_tau < 0.0_rp )
then 190 atmos_dyn_wdamp_tau = dt * 10.0_rp
191 elseif ( atmos_dyn_wdamp_tau < dt )
then 192 log_error(
"ATMOS_DYN_driver_setup",*)
'ATMOS_DYN_wdamp_tau should be larger than TIME_DT_ATMOS_DYN. Check!' 212 cdz, cdx, cdy, fdz, fdx, fdy, &
213 atmos_dyn_wdamp_tau, &
214 atmos_dyn_wdamp_height, &
313 logical,
intent(in) :: do_flag
315 integer :: k, i, j, iq
318 #if defined DEBUG || defined QUICKDEBUG 333 call comm_vars8(
rhoq_tp(:,:,:,iq), 4+iq)
381 call comm_wait (
rhot_tp, 4, .false. )
383 call comm_wait (
rhoq_tp(:,:,:,iq), 4+iq, .false. )
393 cdz, cdx, cdy, fdz, fdx, fdy, &
394 rcdz, rcdx, rcdy, rfdz, rfdx, rfdy, &
396 gsqrt, j13g, j23g, j33g, mapf, &
402 atmos_dyn_numerical_diff_coef, &
403 atmos_dyn_numerical_diff_coef_tracer, &
404 atmos_dyn_numerical_diff_order, &
405 atmos_dyn_numerical_diff_sfc_fact, &
406 atmos_dyn_numerical_diff_use_refstate, &
420 atmos_dyn_divdmp_coef, &
421 atmos_dyn_flag_tracer_split_tend, &
422 atmos_dyn_flag_fct_momentum, &
423 atmos_dyn_flag_fct_t, &
424 atmos_dyn_flag_fct_tracer, &
425 atmos_dyn_flag_fct_along_stream, &
real(rp), dimension(:,:,:), allocatable, public dens_tp
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdy
y-length of control volume [m]
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_gsqrt
transformation metrics from Z to Xi, {G}^1/2
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_phi
geopotential [m2/s2] (cell center)
real(rp), dimension(:,:,:), allocatable, target, public momz
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdx
x-length of control volume [m]
real(rp), dimension(:,:,:), allocatable, target, public rhot
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_alpha_vely
real(rp), dimension(:,:,:), allocatable, public momy_tp
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_alpha_dens
real(rp), dimension(qa_max), public tracer_r
character(len=h_short), public atmos_dyn_tstep_large_type
character(len=h_short), public atmos_dyn_fvm_flux_type
module Atmosphere Grid CartesianC metirc
module Atmosphere / Dynamics
character(len=h_short), public atmos_dyn_coriolis_type
If ATMOS_DYN_coriolis_type=='PLANE', then f = ATMOS_DYN_coriolis_f0 + ATMOS_DYN_coriolis_beta * ( CY ...
module atmosphere / reference state
real(rp), dimension(:,:,:), allocatable, public atmos_refstate_pott
refernce potential temperature [K]
module ATMOSPHERIC Variables
module Atmosphere / Dynamics FENT + FCT
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_lat
latitude [rad,-pi,pi]
real(rp), dimension(:,:,:,:), pointer, public qtrc_av
real(rp), dimension(:,:,:), allocatable, target, public momx
real(rp), dimension(:,:,:), allocatable, public rhot_tp
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_pott
character(len=h_short), public atmos_dyn_tinteg_tracer_type
integer, public io_fid_conf
Config file ID.
module Atmosphere / Dynamics
real(rp), public atmos_dyn_coriolis_f0
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdz
z-length of grid(i+1) to grid(i) [m]
real(rp), dimension(:,:,:), allocatable, target, public dens
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fz
face coordinate [m]: z, local
real(rp), dimension(:,:,:), allocatable, public rhov_tp
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdy
y-length of grid(j+1) to grid(j) [m]
real(rp), dimension(qa_max), public tracer_cv
real(rp), dimension(:,:,:), allocatable, public rhoh_p
subroutine, public atmos_dyn_driver(do_flag)
Dynamical Process (Wrapper)
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_velz
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdy
reciprocal of center-dy
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cy
center coordinate [m]: y, local
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdz
reciprocal of face-dz
integer, public is
start point of inner domain: x, local
real(rp), dimension(qa_max), public tracer_cp
subroutine, public atmos_dyn_driver_setup
Setup.
integer, public ie
end point of inner domain: x, local
real(rp), dimension(:,:,:), pointer, public momx_av
real(rp), public atmos_grid_cartesc_metric_j33g
(3,3) element of Jacobian matrix * {G}^1/2
real(rp), public atmos_boundary_smoother_fact
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdz
reciprocal of center-dz
module atmosphere / hydrometeor
real(dp), public time_dtsec
time interval of model [sec]
character(len=h_short), public atmos_dyn_tinteg_short_type
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdx
x-length of grid(i+1) to grid(i) [m]
module atmosphere / grid / cartesC index
integer, public ke
end point of inner domain: z, local
real(rp), dimension(:,:,:), allocatable, public atmos_refstate_dens
refernce density [kg/m3]
character(len=h_short), public atmos_dyn_tstep_tracer_type
real(rp), public atmos_dyn_coriolis_y0
module ATMOSPHERE / Boundary treatment
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
integer, public je
end point of inner domain: y, local
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdz
z-length of control volume [m]
real(rp), dimension(:,:,:,:), allocatable, public atmos_boundary_alpha_qtrc
logical, public atmos_sw_dyn
subroutine, public atmos_vars_total
Budget monitor for atmosphere.
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_alpha_velx
module atmosphere / grid / cartesC
integer, public ks
start point of inner domain: z, local
real(dp), public time_dtsec_atmos_dyn
time interval of dynamics [sec]
subroutine, public atmos_dyn(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, PROG, DENS_av, MOMZ_av, MOMX_av, MOMY_av, RHOT_av, QTRC_av, DENS_tp, MOMZ_tp, MOMX_tp, MOMY_tp, RHOT_tp, RHOQ_tp, CDZ, CDX, CDY, FDZ, FDX, FDY, RCDZ, RCDX, RCDY, RFDZ, RFDX, RFDY, PHI, GSQRT, J13G, J23G, J33G, MAPF, AQ_R, AQ_CV, AQ_CP, AQ_MASS, REF_dens, REF_pott, REF_qv, REF_pres, ND_COEF, ND_COEF_Q, ND_ORDER, ND_SFC_FACT, ND_USE_RS, BND_QA, BND_SMOOTHER_FACT, DAMP_DENS, DAMP_VELZ, DAMP_VELX, DAMP_VELY, DAMP_POTT, DAMP_QTRC, DAMP_alpha_DENS, DAMP_alpha_VELZ, DAMP_alpha_VELX, DAMP_alpha_VELY, DAMP_alpha_POTT, DAMP_alpha_QTRC, divdmp_coef, FLAG_TRACER_SPLIT_TEND, FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM, USE_AVERAGE, I_QV, DTSEC, DTSEC_DYN)
Dynamical Process.
integer, public kmax
of computational cells: z, local
character(len=h_short), public atmos_dyn_tinteg_large_type
real(rp), dimension(:,:,:), pointer, public dens_av
real(rp), dimension(:,:,:,:), allocatable, public prog
real(rp), public atmos_dyn_coriolis_beta
subroutine, public prc_abort
Abort Process.
real(rp), dimension(:,:,:), allocatable, public atmos_refstate_pres
refernce pressure [Pa]
integer, public js
start point of inner domain: y, local
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_mapf
map factor
real(rp), dimension(:,:,:), allocatable, public momx_tp
real(rp), dimension(:,:,:), allocatable, target, public momy
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_j23g
(2,3) element of Jacobian matrix * {G}^1/2
real(rp), dimension(:,:,:), allocatable, target, public exner
subroutine, public atmos_dyn_setup(DYN_Tinteg_Short_TYPE, DYN_Tinteg_Tracer_TYPE, DYN_Tinteg_Large_TYPE, DYN_Tstep_Tracer_TYPE, DYN_Tstep_Large_TYPE, DYN_FVM_FLUX_TYPE, DYN_FVM_FLUX_TYPE_TRACER, DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, PROG, CDZ, CDX, CDY, FDZ, FDX, FDY, wdamp_tau, wdamp_height, FZ, coriolis_type, coriolis_f0, coriolis_beta, coriolis_y0, CY, lat, none)
Setup.
real(rp), dimension(:,:,:), allocatable, public momz_tp
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_j13g
(1,3) element of Jacobian matrix * {G}^1/2
real(rp), dimension(:,:,:), allocatable, public atmos_refstate_qv
refernce vapor [kg/kg]
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdx
reciprocal of center-dx
real(rp), dimension(:,:,:), allocatable, public rhou_tp
integer, public ka
of whole cells: z, local, with HALO
character(len=h_short), public atmos_dyn_type
real(rp), dimension(:,:,:), pointer, public momz_av
character(len=h_short), public atmos_dyn_fvm_flux_tracer_type
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdy
reciprocal of face-dy
real(rp), dimension(:,:,:), pointer, public rhot_av
real(rp), dimension(:,:,:), allocatable, target, public cptot
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_alpha_velz
real(rp), dimension(:,:,:), pointer, public momy_av
integer, parameter, public rp
real(rp), public atmos_grid_cartesc_domain_center_y
center position of global domain [m]: y
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_alpha_pott
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_dens
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_vely
real(rp), dimension(:,:,:,:), allocatable, public atmos_boundary_qtrc
real(rp), dimension(qa_max), public tracer_mass
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdx
reciprocal of face-dx
logical, public atmos_use_average
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
real(rp), dimension(:,:,:), allocatable, public atmos_boundary_velx