65 character(len=*) :: tinteg_type
70 if ( tinteg_type /=
'RK3' )
then 71 log_error(
"ATMOS_DYN_Tinteg_large_rk3_setup",*)
'TINTEG_LARGE_TYPE is not RK3. Check!' 81 DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, &
83 DENS_av, MOMZ_av, MOMX_av, MOMY_av, RHOT_av, QTRC_av, &
85 num_diff, num_diff_q, &
86 DENS_tp, MOMZ_tp, MOMX_tp, MOMY_tp, RHOT_tp, RHOQ_tp, &
88 CDZ, CDX, CDY, FDZ, FDX, FDY, &
89 RCDZ, RCDX, RCDY, RFDZ, RFDX, RFDY, &
91 J13G, J23G, J33G, MAPF, &
92 AQ_R, AQ_CV, AQ_CP, AQ_MASS, &
93 REF_dens, REF_pott, REF_qv, REF_pres, &
94 BND_W, BND_E, BND_S, BND_N, &
95 ND_COEF, ND_COEF_Q, ND_ORDER, ND_SFC_FACT, ND_USE_RS, &
96 BND_QA, BND_SMOOTHER_FACT, &
97 DAMP_DENS, DAMP_VELZ, DAMP_VELX, &
98 DAMP_VELY, DAMP_POTT, DAMP_QTRC, &
99 DAMP_alpha_DENS, DAMP_alpha_VELZ, DAMP_alpha_VELX, &
100 DAMP_alpha_VELY, DAMP_alpha_POTT, DAMP_alpha_QTRC, &
103 FLAG_TRACER_SPLIT_TEND, &
104 FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_TRACER, &
105 FLAG_FCT_ALONG_STREAM, &
136 real(RP),
intent(inout) :: DENS(
ka,
ia,
ja)
137 real(RP),
intent(inout) :: MOMZ(
ka,
ia,
ja)
138 real(RP),
intent(inout) :: MOMX(
ka,
ia,
ja)
139 real(RP),
intent(inout) :: MOMY(
ka,
ia,
ja)
140 real(RP),
intent(inout) :: RHOT(
ka,
ia,
ja)
141 real(RP),
intent(inout) :: QTRC(
ka,
ia,
ja,
qa)
143 real(RP),
intent(inout) :: PROG(
ka,
ia,
ja,
va)
145 real(RP),
intent(inout) :: DENS_av(
ka,
ia,
ja)
146 real(RP),
intent(inout) :: MOMZ_av(
ka,
ia,
ja)
147 real(RP),
intent(inout) :: MOMX_av(
ka,
ia,
ja)
148 real(RP),
intent(inout) :: MOMY_av(
ka,
ia,
ja)
149 real(RP),
intent(inout) :: RHOT_av(
ka,
ia,
ja)
150 real(RP),
intent(inout) :: QTRC_av(
ka,
ia,
ja,
qa)
152 real(RP),
intent(out) :: mflx_hi(
ka,
ia,
ja,3)
153 real(RP),
intent(out) :: tflx_hi(
ka,
ia,
ja,3)
155 real(RP),
intent(out) :: num_diff(
ka,
ia,
ja,5,3)
156 real(RP),
intent(out) :: num_diff_q(
ka,
ia,
ja,3)
158 real(RP),
intent(in) :: DENS_tp(
ka,
ia,
ja)
159 real(RP),
intent(in) :: MOMZ_tp(
ka,
ia,
ja)
160 real(RP),
intent(in) :: MOMX_tp(
ka,
ia,
ja)
161 real(RP),
intent(in) :: MOMY_tp(
ka,
ia,
ja)
162 real(RP),
intent(in) :: RHOT_tp(
ka,
ia,
ja)
163 real(RP),
intent(in) :: RHOQ_tp(
ka,
ia,
ja,
qa)
165 real(RP),
intent(in) :: CORIOLI(
ia,
ja)
167 real(RP),
intent(in) :: CDZ (
ka)
168 real(RP),
intent(in) :: CDX (
ia)
169 real(RP),
intent(in) :: CDY (
ja)
170 real(RP),
intent(in) :: FDZ (
ka-1)
171 real(RP),
intent(in) :: FDX (
ia-1)
172 real(RP),
intent(in) :: FDY (
ja-1)
173 real(RP),
intent(in) :: RCDZ(
ka)
174 real(RP),
intent(in) :: RCDX(
ia)
175 real(RP),
intent(in) :: RCDY(
ja)
176 real(RP),
intent(in) :: RFDZ(
ka-1)
177 real(RP),
intent(in) :: RFDX(
ia-1)
178 real(RP),
intent(in) :: RFDY(
ja-1)
180 real(RP),
intent(in) :: PHI (
ka,
ia,
ja)
181 real(RP),
intent(in) :: GSQRT(
ka,
ia,
ja,7)
182 real(RP),
intent(in) :: J13G (
ka,
ia,
ja,7)
183 real(RP),
intent(in) :: J23G (
ka,
ia,
ja,7)
184 real(RP),
intent(in) :: J33G
185 real(RP),
intent(in) :: MAPF (
ia,
ja,2,4)
187 real(RP),
intent(in) :: AQ_R (
qa)
188 real(RP),
intent(in) :: AQ_CV (
qa)
189 real(RP),
intent(in) :: AQ_CP (
qa)
190 real(RP),
intent(in) :: AQ_MASS(
qa)
192 real(RP),
intent(in) :: REF_dens(
ka,
ia,
ja)
193 real(RP),
intent(in) :: REF_pott(
ka,
ia,
ja)
194 real(RP),
intent(in) :: REF_qv (
ka,
ia,
ja)
195 real(RP),
intent(in) :: REF_pres(
ka,
ia,
ja)
197 logical,
intent(in) :: BND_W
198 logical,
intent(in) :: BND_E
199 logical,
intent(in) :: BND_S
200 logical,
intent(in) :: BND_N
202 real(RP),
intent(in) :: ND_COEF
203 real(RP),
intent(in) :: ND_COEF_Q
204 integer,
intent(in) :: ND_ORDER
205 real(RP),
intent(in) :: ND_SFC_FACT
206 logical,
intent(in) :: ND_USE_RS
208 integer,
intent(in) :: BND_QA
209 real(RP),
intent(in) :: BND_SMOOTHER_FACT
211 real(RP),
intent(in) :: DAMP_DENS(
ka,
ia,
ja)
212 real(RP),
intent(in) :: DAMP_VELZ(
ka,
ia,
ja)
213 real(RP),
intent(in) :: DAMP_VELX(
ka,
ia,
ja)
214 real(RP),
intent(in) :: DAMP_VELY(
ka,
ia,
ja)
215 real(RP),
intent(in) :: DAMP_POTT(
ka,
ia,
ja)
216 real(RP),
intent(in) :: DAMP_QTRC(
ka,
ia,
ja,bnd_qa)
218 real(RP),
intent(in) :: DAMP_alpha_DENS(
ka,
ia,
ja)
219 real(RP),
intent(in) :: DAMP_alpha_VELZ(
ka,
ia,
ja)
220 real(RP),
intent(in) :: DAMP_alpha_VELX(
ka,
ia,
ja)
221 real(RP),
intent(in) :: DAMP_alpha_VELY(
ka,
ia,
ja)
222 real(RP),
intent(in) :: DAMP_alpha_POTT(
ka,
ia,
ja)
223 real(RP),
intent(in) :: DAMP_alpha_QTRC(
ka,
ia,
ja,bnd_qa)
225 real(RP),
intent(in) :: wdamp_coef(
ka)
226 real(RP),
intent(in) :: divdmp_coef
228 logical,
intent(in) :: FLAG_TRACER_SPLIT_TEND
229 logical,
intent(in) :: FLAG_FCT_MOMENTUM
230 logical,
intent(in) :: FLAG_FCT_T
231 logical,
intent(in) :: FLAG_FCT_TRACER
232 logical,
intent(in) :: FLAG_FCT_ALONG_STREAM
234 logical,
intent(in) :: USE_AVERAGE
236 integer,
intent(in) :: I_QV
238 real(DP),
intent(in) :: DTL
239 real(DP),
intent(in) :: DTS
242 real(RP) :: DENS0 (
ka,
ia,
ja)
243 real(RP) :: MOMZ0 (
ka,
ia,
ja)
244 real(RP) :: MOMX0 (
ka,
ia,
ja)
245 real(RP) :: MOMY0 (
ka,
ia,
ja)
246 real(RP) :: RHOT0 (
ka,
ia,
ja)
262 dens0(:,:,:) = dens(:,:,:)
264 momz0(:,:,:) = momz(:,:,:)
266 momx0(:,:,:) = momx(:,:,:)
268 momy0(:,:,:) = momy(:,:,:)
270 rhot0(:,:,:) = rhot(:,:,:)
272 qtrc0(:,:,:,:) = qtrc(:,:,:,:)
276 prog0(:,:,:,:) = prog(:,:,:,:)
289 dtrk = dtl /
real( 4-n, kind=
dp )
298 if (
va > 0 ) prog = prog0
302 dens, momz, momx, momy, rhot, qtrc, prog, &
303 dens_av, momz_av, momx_av, momy_av, rhot_av, qtrc_av, &
305 num_diff, num_diff_q, &
307 dens_tp, momz_tp, momx_tp, momy_tp, rhot_tp, rhoq_tp, &
309 cdz, cdx, cdy, fdz, fdx, fdy, &
310 rcdz, rcdx, rcdy, rfdz, rfdx, rfdy, &
312 j13g, j23g, j33g, mapf, &
313 aq_r, aq_cv, aq_cp, aq_mass, &
314 ref_dens, ref_pott, ref_qv, ref_pres, &
315 bnd_w, bnd_e, bnd_s, bnd_n, &
316 nd_coef, nd_coef_q, nd_order, nd_sfc_fact, nd_use_rs, &
317 bnd_qa, bnd_smoother_fact, &
318 damp_dens, damp_velz, damp_velx, &
319 damp_vely, damp_pott, damp_qtrc, &
320 damp_alpha_dens, damp_alpha_velz, damp_alpha_velx, &
321 damp_alpha_vely, damp_alpha_pott, damp_alpha_qtrc, &
324 flag_tracer_split_tend, &
325 flag_fct_momentum, flag_fct_t, flag_fct_tracer, &
326 flag_fct_along_stream, &
327 use_average .AND. last, &
real(rp), public const_cvdry
specific heat (dry air,constant volume) [J/kg/K]
subroutine, public atmos_dyn_fvm_fluxy_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XYZ
subroutine, public atmos_dyn_tinteg_large_rk3(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, PROG, DENS_av, MOMZ_av, MOMX_av, MOMY_av, RHOT_av, QTRC_av, mflx_hi, tflx_hi, num_diff, num_diff_q, DENS_tp, MOMZ_tp, MOMX_tp, MOMY_tp, RHOT_tp, RHOQ_tp, CORIOLI, 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, BND_W, BND_E, BND_S, BND_N, 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, wdamp_coef, divdmp_coef, FLAG_TRACER_SPLIT_TEND, FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM, USE_AVERAGE, I_QV, DTL, DTS)
RK3.
subroutine, public atmos_dyn_fvm_fluxz_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XYZ
subroutine, public atmos_dyn_numfilter_coef(num_diff, DENS, MOMZ, MOMX, MOMY, RHOT, CDZ, CDX, CDY, FDZ, FDX, FDY, DT, REF_dens, REF_pott, ND_COEF, ND_ORDER, ND_SFC_FACT, ND_USE_RS)
Calc coefficient of numerical filter.
integer, public ia
of whole cells: x, local, with HALO
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxx_xyz
integer, public ja
of whole cells: y, local, with HALO
module Atmosphere / Dynamical scheme
subroutine, public check(current_line, v)
Undefined value checker.
real(rp), public const_rdry
specific gas constant (dry air) [J/kg/K]
real(rp), public const_undef
module atmosphere / grid / cartesC index
subroutine, public atmos_dyn_tinteg_large_rk3_setup(tinteg_type)
Setup.
subroutine, public atmos_dyn_numfilter_coef_q(num_diff_q, DENS, QTRC, is_qv, CDZ, CDX, CDY, dt, REF_qv, iq, ND_COEF, ND_ORDER, ND_SFC_FACT, ND_USE_RS)
Calc coefficient of numerical filter.
integer, parameter, public const_undef2
undefined value (INT2)
module Atmosphere / Dynamics common
module Atmosphere / Dyn Tinteg
real(rp), parameter, public const_rvap
specific gas constant (water vapor) [J/kg/K]
subroutine, public prc_abort
Abort Process.
subroutine, public prof_rapstart(rapname_base, level)
Start raptime.
module scale_atmos_dyn_fvm_flux
integer, public ka
of whole cells: z, local, with HALO
subroutine, public atmos_dyn_fct(qflx_anti, phi_in, DENS0, DENS, qflx_hi, qflx_lo, mflx_hi, rdz, rdx, rdy, GSQRT, MAPF, dt, flag_vect)
Flux Correction Transport Limiter.
subroutine, public prof_rapend(rapname_base, level)
Save raptime.
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxz_xyz
integer, parameter, public dp
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxy_xyz
procedure(large), pointer, public atmos_dyn_tstep_large
subroutine, public atmos_dyn_fvm_fluxx_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYZ
module scale_atmos_dyn_fvm_flux_ud1