24 #if defined DEBUG || defined QUICKDEBUG 51 #define F2H(k,p,idx) (CDZ(k+p-1)*GSQRT(k+p-1,i,j,idx)/(CDZ(k)*GSQRT(k,i,j,idx)+CDZ(k+1)*GSQRT(k+1,i,j,idx))) 53 #define F2H(k,p,idx) 0.5_RP 60 integer,
parameter :: va_fvm_heve = 0
76 character(len=*),
intent(in) :: ATMOS_DYN_TYPE
77 integer,
intent(out) :: VA_out
78 character(len=H_SHORT),
intent(out) :: VAR_NAME(:)
79 character(len=H_MID),
intent(out) :: VAR_DESC(:)
80 character(len=H_SHORT),
intent(out) :: VAR_UNIT(:)
83 if ( atmos_dyn_type /=
'FVM-HEVE' .AND. atmos_dyn_type /=
'HEVE' )
then 84 log_error(
"ATMOS_DYN_Tstep_short_fvm_heve_regist",*)
'ATMOS_DYN_TYPE is not FVM-HEVE. Check!' 94 log_info(
"ATMOS_DYN_Tstep_short_fvm_heve_regist",*)
'Register additional prognostic variables (HEVE)' 95 if ( va_out < 1 )
then 96 log_info_cont(*)
'=> nothing.' 110 DENS_RK, MOMZ_RK, MOMX_RK, MOMY_RK, RHOT_RK, &
113 DENS0, MOMZ0, MOMX0, MOMY0, RHOT0, &
114 DENS, MOMZ, MOMX, MOMY, RHOT, &
115 DENS_t, MOMZ_t, MOMX_t, MOMY_t, RHOT_t, &
117 DPRES0, RT2P, CORIOLI, &
118 num_diff, wdamp_coef, divdmp_coef, DDIV, &
119 FLAG_FCT_MOMENTUM, FLAG_FCT_T, &
120 FLAG_FCT_ALONG_STREAM, &
121 CDZ, FDZ, FDX, FDY, &
122 RCDZ, RCDX, RCDY, RFDZ, RFDX, RFDY, &
123 PHI, GSQRT, J13G, J23G, J33G, MAPF, &
124 REF_dens, REF_rhot, &
125 BND_W, BND_E, BND_S, BND_N, &
175 real(RP),
intent(out) :: DENS_RK (
ka,
ia,
ja)
176 real(RP),
intent(out) :: MOMZ_RK (
ka,
ia,
ja)
177 real(RP),
intent(out) :: MOMX_RK (
ka,
ia,
ja)
178 real(RP),
intent(out) :: MOMY_RK (
ka,
ia,
ja)
179 real(RP),
intent(out) :: RHOT_RK (
ka,
ia,
ja)
180 real(RP),
intent(out) :: PROG_RK (
ka,
ia,
ja,
va)
182 real(RP),
intent(inout) :: mflx_hi (
ka,
ia,
ja,3)
183 real(RP),
intent(out) :: tflx_hi (
ka,
ia,
ja,3)
185 real(RP),
intent(in),
target :: DENS0 (
ka,
ia,
ja)
186 real(RP),
intent(in),
target :: MOMZ0 (
ka,
ia,
ja)
187 real(RP),
intent(in),
target :: MOMX0 (
ka,
ia,
ja)
188 real(RP),
intent(in),
target :: MOMY0 (
ka,
ia,
ja)
189 real(RP),
intent(in),
target :: RHOT0 (
ka,
ia,
ja)
190 real(RP),
intent(in) :: PROG0 (
ka,
ia,
ja,
va)
192 real(RP),
intent(in) :: DENS (
ka,
ia,
ja)
193 real(RP),
intent(in) :: MOMZ (
ka,
ia,
ja)
194 real(RP),
intent(in) :: MOMX (
ka,
ia,
ja)
195 real(RP),
intent(in) :: MOMY (
ka,
ia,
ja)
196 real(RP),
intent(in) :: RHOT (
ka,
ia,
ja)
197 real(RP),
intent(in) :: PROG (
ka,
ia,
ja,
va)
199 real(RP),
intent(in) :: DENS_t (
ka,
ia,
ja)
200 real(RP),
intent(in) :: MOMZ_t (
ka,
ia,
ja)
201 real(RP),
intent(in) :: MOMX_t (
ka,
ia,
ja)
202 real(RP),
intent(in) :: MOMY_t (
ka,
ia,
ja)
203 real(RP),
intent(in) :: RHOT_t (
ka,
ia,
ja)
205 real(RP),
intent(in) :: DPRES0 (
ka,
ia,
ja)
206 real(RP),
intent(in) :: RT2P (
ka,
ia,
ja)
207 real(RP),
intent(in) :: CORIOLI (1,
ia,
ja)
208 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja,5,3)
209 real(RP),
intent(in) :: wdamp_coef(
ka)
210 real(RP),
intent(in) :: divdmp_coef
211 real(RP),
intent(in) :: DDIV (
ka,
ia,
ja)
213 logical,
intent(in) :: FLAG_FCT_MOMENTUM
214 logical,
intent(in) :: FLAG_FCT_T
215 logical,
intent(in) :: FLAG_FCT_ALONG_STREAM
217 real(RP),
intent(in) :: CDZ (
ka)
218 real(RP),
intent(in) :: FDZ (
ka-1)
219 real(RP),
intent(in) :: FDX (
ia-1)
220 real(RP),
intent(in) :: FDY (
ja-1)
221 real(RP),
intent(in) :: RCDZ(
ka)
222 real(RP),
intent(in) :: RCDX(
ia)
223 real(RP),
intent(in) :: RCDY(
ja)
224 real(RP),
intent(in) :: RFDZ(
ka-1)
225 real(RP),
intent(in) :: RFDX(
ia-1)
226 real(RP),
intent(in) :: RFDY(
ja-1)
228 real(RP),
intent(in) :: PHI (
ka,
ia,
ja)
229 real(RP),
intent(in) :: GSQRT (
ka,
ia,
ja,7)
230 real(RP),
intent(in) :: J13G (
ka,
ia,
ja,7)
231 real(RP),
intent(in) :: J23G (
ka,
ia,
ja,7)
232 real(RP),
intent(in) :: J33G
233 real(RP),
intent(in) :: MAPF (
ia,
ja,2,4)
234 real(RP),
intent(in) :: REF_dens(
ka,
ia,
ja)
235 real(RP),
intent(in) :: REF_rhot(
ka,
ia,
ja)
237 logical,
intent(in) :: BND_W
238 logical,
intent(in) :: BND_E
239 logical,
intent(in) :: BND_S
240 logical,
intent(in) :: BND_N
242 real(RP),
intent(in) :: dtrk
243 logical,
intent(in) :: last
246 real(RP) :: VELZ (
ka,
ia,
ja)
247 real(RP) :: VELX (
ka,
ia,
ja)
248 real(RP) :: VELY (
ka,
ia,
ja)
249 real(RP) :: POTT (
ka,
ia,
ja)
250 real(RP) :: DPRES(
ka,
ia,
ja)
252 real(RP) :: qflx_J13(
ka,
ia,
ja)
253 real(RP) :: qflx_J23(
ka,
ia,
ja)
254 real(RP) :: pgf (
ka,
ia,
ja)
255 real(RP) :: buoy (
ka,
ia,
ja)
256 real(RP) :: cor (
ka,
ia,
ja)
259 real(RP) :: qflx_hi (
ka,
ia,
ja,3)
261 real(RP) :: qflx_lo (
ka,
ia,
ja,3)
262 real(RP) :: qflx_anti(
ka,
ia,
ja,3)
263 real(RP) :: tflx_lo (
ka,
ia,
ja,3)
264 real(RP) :: tflx_anti(
ka,
ia,
ja,3)
265 real(RP) :: DENS0_uvw(
ka,
ia,
ja)
266 real(RP) :: DENS_uvw (
ka,
ia,
ja)
273 real(RP) :: advch_t(
ka,
ia,
ja,5)
274 real(RP) :: advcv_t(
ka,
ia,
ja,5)
275 real(RP) :: wdmp_t(
ka,
ia,
ja)
276 real(RP) :: ddiv_t(
ka,
ia,
ja,3)
277 real(RP) :: pg_t(
ka,
ia,
ja,3)
278 real(RP) :: cf_t(
ka,
ia,
ja,2)
284 integer :: IFS_OFF, JFS_OFF
296 mflx_hi(:,:,:,:) = undef
297 tflx_hi(:,:,:,:) = undef
298 qflx_hi(:,:,:,:) = undef
301 qflx_lo(:,:,:,:) = undef
302 qflx_anti(:,:,:,:) = undef
303 tflx_lo(:,:,:,:) = undef
304 tflx_anti(:,:,:,:) = undef
308 #if defined DEBUG || defined QUICKDEBUG 309 dens_rk( 1:
ks-1,:,:) = undef
310 dens_rk(
ke+1:
ka ,:,:) = undef
311 momz_rk( 1:
ks-1,:,:) = undef
312 momz_rk(
ke+1:
ka ,:,:) = undef
313 momx_rk( 1:
ks-1,:,:) = undef
314 momx_rk(
ke+1:
ka ,:,:) = undef
315 momy_rk( 1:
ks-1,:,:) = undef
316 momy_rk(
ke+1:
ka ,:,:) = undef
317 rhot_rk( 1:
ks-1,:,:) = undef
318 rhot_rk(
ke+1:
ka ,:,:) = undef
319 prog_rk( 1:
ks-1,:,:,:) = undef
320 prog_rk(
ke+1:
ka ,:,:,:) = undef
336 if ( bnd_w ) ifs_off = 0
337 if ( bnd_s ) jfs_off = 0
352 call check( __line__, dpres0(k,i,j) )
353 call check( __line__, rt2p(k,i,j) )
354 call check( __line__, rhot(k,i,j) )
355 call check( __line__, ref_rhot(k,i,j) )
357 dpres(k,i,j) = dpres0(k,i,j) + rt2p(k,i,j) * ( rhot(k,i,j) - ref_rhot(k,i,j) )
359 dpres(
ks-1,i,j) = dpres0(
ks-1,i,j) - dens(
ks,i,j) * ( phi(
ks-1,i,j) - phi(
ks+1,i,j) )
360 dpres(
ke+1,i,j) = dpres0(
ke+1,i,j) - dens(
ke,i,j) * ( phi(
ke+1,i,j) - phi(
ke-1,i,j) )
364 k = iundef; i = iundef; j = iundef
371 call check( __line__, rhot(k,i,j) )
372 call check( __line__, dens(k,i,j) )
374 pott(k,i,j) = rhot(k,i,j) / dens(k,i,j)
379 k = iundef; i = iundef; j = iundef
386 if ( flag_fct_momentum )
then 393 call check( __line__, momz0(k,i,j) )
394 call check( __line__, dens0(k ,i,j) )
395 call check( __line__, dens0(k+1,i,j) )
397 velz(k,i,j) = 2.0_rp * momz0(k,i,j) / ( dens0(k+1,i,j)+dens0(k,i,j) )
402 k = iundef; i = iundef; j = iundef
407 velz(
ke,i,j) = 0.0_rp
411 k = iundef; i = iundef; j = iundef
419 call check( __line__, momx0(k,i,j) )
420 call check( __line__, dens0(k,i ,j) )
421 call check( __line__, dens0(k,i+1,j) )
423 velx(k,i,j) = 2.0_rp * momx0(k,i,j) / ( dens0(k,i+1,j)+dens0(k,i,j) )
428 k = iundef; i = iundef; j = iundef
436 call check( __line__, momy0(k,i,j) )
437 call check( __line__, dens0(k,i,j ) )
438 call check( __line__, dens0(k,i,j+1) )
440 vely(k,i,j) = 2.0_rp * momy0(k,i,j) / ( dens0(k,i,j+1)+dens0(k,i,j) )
445 k = iundef; i = iundef; j = iundef
447 call comm_vars8( velz(:,:,:), 4 )
448 call comm_vars8( velx(:,:,:), 5 )
449 call comm_vars8( vely(:,:,:), 6 )
471 call check( __line__, momz(k+1,i,j) )
472 call check( __line__, momz(k ,i,j) )
473 call check( __line__, momz(k-1,i,j) )
476 mflx_hi(k,i,j,
zdir) = j33g * momz(k,i,j) / ( mapf(i,j,1,
i_xy)*mapf(i,j,2,
i_xy) ) &
477 + j13g(k,i,j,
i_xyw) * 0.25_rp * ( momx(k+1,i,j)+momx(k+1,i-1,j) &
478 + momx(k ,i,j)+momx(k ,i-1,j) ) &
480 + j23g(k,i,j,
i_xyw) * 0.25_rp * ( momy(k+1,i,j)+momy(k+1,i,j-1) &
481 + momy(k ,i,j)+momy(k ,i,j-1) ) &
483 + gsqrt(k,i,j,
i_xyw) * num_diff(k,i,j,
i_dens,
zdir) / ( mapf(i,j,1,
i_xy)*mapf(i,j,2,
i_xy) )
488 k = iundef; i = iundef; j = iundef
494 mflx_hi(
ks-1,i,j,
zdir) = 0.0_rp
495 mflx_hi(
ke ,i,j,
zdir) = 0.0_rp
499 k = iundef; i = iundef; j = iundef
506 do i = iis-ifs_off, min(iie,
ieh)
509 call check( __line__, momx(k,i+1,j) )
510 call check( __line__, momx(k,i ,j) )
511 call check( __line__, momx(k,i-1,j) )
514 mflx_hi(k,i,j,
xdir) = gsqrt(k,i,j,
i_uyz) / mapf(i,j,2,
i_uy) &
515 * ( momx(k,i,j) + num_diff(k,i,j,
i_dens,
xdir) )
520 k = iundef; i = iundef; j = iundef
526 do j = jjs-jfs_off, min(jje,
jeh)
530 call check( __line__, momy(k,i,j+1) )
531 call check( __line__, momy(k,i,j ) )
532 call check( __line__, momy(k,i,j-1) )
535 mflx_hi(k,i,j,
ydir) = gsqrt(k,i,j,
i_xvz) / mapf(i,j,1,
i_xv) &
536 * ( momy(k,i,j) + num_diff(k,i,j,
i_dens,
ydir) )
541 k = iundef; i = iundef; j = iundef
551 call check( __line__, dens0(k,i,j) )
552 call check( __line__, mflx_hi(k ,i ,j ,
zdir) )
553 call check( __line__, mflx_hi(k-1,i ,j ,
zdir) )
554 call check( __line__, mflx_hi(k ,i ,j ,
xdir) )
555 call check( __line__, mflx_hi(k ,i-1,j ,
xdir) )
556 call check( __line__, mflx_hi(k ,i ,j ,
ydir) )
557 call check( __line__, mflx_hi(k ,i ,j-1,
ydir) )
558 call check( __line__, dens_t(k,i,j) )
560 advcv = - ( mflx_hi(k,i,j,
zdir)-mflx_hi(k-1,i, j,
zdir) ) * rcdz(k)
561 advch = - ( mflx_hi(k,i,j,
xdir)-mflx_hi(k ,i-1,j,
xdir) ) * rcdx(i) &
562 - ( mflx_hi(k,i,j,
ydir)-mflx_hi(k ,i, j-1,
ydir) ) * rcdy(j)
563 dens_rk(k,i,j) = dens0(k,i,j) &
564 + dtrk * ( ( advcv + advch ) * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy) / gsqrt(k,i,j,
i_xyz) &
568 advcv_t(k,i,j,
i_dens) = advcv * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy) / gsqrt(k,i,j,
i_xyz)
569 advch_t(k,i,j,
i_dens) = advch * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy) / gsqrt(k,i,j,
i_xyz)
576 k = iundef; i = iundef; j = iundef
590 gsqrt(:,:,:,
i_xyz), j33g, &
596 gsqrt(:,:,:,
i_xyz), j13g(:,:,:,
i_xyz), mapf(:,:,:,
i_xy), &
601 gsqrt(:,:,:,
i_xyz), j23g(:,:,:,
i_xyz), mapf(:,:,:,
i_xy), &
627 pgf(k,i,j) = j33g * ( dpres(k+1,i,j)-dpres(k,i,j) ) * rfdz(k)
638 buoy(k,i,j) = grav * gsqrt(k,i,j,
i_xyw) &
639 * ( f2h(k,1,
i_xyz) * ( dens(k+1,i,j)-ref_dens(k+1,i,j) ) &
640 + f2h(k,2,
i_xyz) * ( dens(k ,i,j)-ref_dens(k ,i,j) ) )
652 call check( __line__, qflx_hi(k ,i ,j ,
zdir) )
653 call check( __line__, qflx_hi(k-1,i ,j ,
zdir) )
654 call check( __line__, qflx_hi(k ,i ,j ,
xdir) )
655 call check( __line__, qflx_hi(k ,i-1,j ,
xdir) )
656 call check( __line__, qflx_hi(k ,i ,j ,
ydir) )
657 call check( __line__, qflx_hi(k ,i ,j-1,
ydir) )
658 call check( __line__, ddiv(k ,i,j) )
659 call check( __line__, ddiv(k+1,i,j) )
660 call check( __line__, momz0(k,i,j) )
661 call check( __line__, momz_t(k,i,j) )
663 advcv = - ( qflx_hi(k,i,j,
zdir) - qflx_hi(k-1,i ,j ,
zdir) &
664 + qflx_j13(k,i,j) - qflx_j13(k-1,i,j) &
665 + qflx_j23(k,i,j) - qflx_j23(k-1,i,j) ) * rfdz(k)
666 advch = - ( ( qflx_hi(k,i,j,
xdir) - qflx_hi(k,i-1,j,
xdir) ) * rcdx(i) &
667 + ( qflx_hi(k,i,j,
ydir) - qflx_hi(k,i,j-1,
ydir) ) * rcdy(j) ) &
668 * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy)
669 wdamp = - wdamp_coef(k) * momz0(k,i,j)
670 div = divdmp_coef / dtrk * fdz(k) * ( ddiv(k+1,i,j)-ddiv(k,i,j) )
671 momz_rk(k,i,j) = momz0(k,i,j) &
672 + dtrk * ( ( advcv + advch &
675 ) / gsqrt(k,i,j,
i_xyw) &
683 pg_t(k,i,j,1) = ( - pgf(k,i,j) - buoy(k,i,j) ) / gsqrt(k,i,j,
i_xyw)
684 wdmp_t(k,i,j) = wdamp
685 ddiv_t(k,i,j,1) = div
692 k = iundef; i = iundef; j = iundef
698 momz_rk(
ks-1,i,j) = 0.0_rp
699 momz_rk(
ke ,i,j) = 0.0_rp
704 pg_t(
ke,i,j,1) = 0.0_rp
705 wdmp_t(
ke,i,j) = 0.0_rp
706 ddiv_t(
ke,i,j,1) = 0.0_rp
712 k = iundef; i = iundef; j = iundef
716 if ( flag_fct_momentum )
then 723 gsqrt(:,:,:,
i_xyz), j33g, &
726 iis-1, iie+1, jjs-1, jje+1 )
733 iis-1, iie+1, jjs-1, jje+1 )
740 iis-1, iie+1, jjs-1, jje+1 )
746 if ( flag_fct_momentum )
then 748 call comm_vars8( dens_rk, 1 )
749 call comm_wait ( dens_rk, 1, .false. )
754 qflx_hi(k,i,j,
zdir) = qflx_hi(k,i,j,
zdir) / ( mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy) ) &
755 + qflx_j13(k,i,j) + qflx_j23(k,i,j)
763 dens0_uvw(k,i,j) = 0.5_rp * ( dens0(k,i,j) + dens0(k+1,i,j) )
764 dens_uvw(k,i,j) = 0.5_rp * ( dens_rk(k,i,j) + dens_rk(k+1,i,j) )
771 dens_uvw(
ke,i,j) = dens_uvw(
ke-1,i,j)
772 dens0_uvw(
ke,i,j) = dens0_uvw(
ke-1,i,j)
776 call comm_wait ( velz(:,:,:), 4 )
779 velz, dens0_uvw, dens_uvw, &
783 gsqrt(:,:,:,
i_xyw), &
784 mapf(:,:,:,
i_xy), dtrk, &
785 flag_fct_along_stream )
797 momz_rk(k,i,j) = momz_rk(k,i,j) &
798 + dtrk * ( ( qflx_anti(k,i,j,
zdir) - qflx_anti(k-1,i ,j ,
zdir) ) * rfdz(k) &
799 + ( ( qflx_anti(k,i,j,
xdir) - qflx_anti(k ,i-1,j ,
xdir) ) * rcdx(i) &
800 + ( qflx_anti(k,i,j,
ydir) - qflx_anti(k ,i ,j-1,
ydir) ) * rcdy(j) ) &
801 * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy) ) &
813 qflx_hi(:,:,:,:) = undef
831 gsqrt(:,:,:,
i_uyw), j33g, &
837 gsqrt(:,:,:,
i_uyz), j13g(:,:,:,
i_uyw), mapf(:,:,:,
i_uy), &
842 gsqrt(:,:,:,
i_uyz), j23g(:,:,:,
i_uyw), mapf(:,:,:,
i_uy), &
868 pgf(k,i,j) = ( ( gsqrt(k,i+1,j,
i_xyz) * dpres(k,i+1,j) &
869 - gsqrt(k,i ,j,
i_xyz) * dpres(k,i ,j) &
871 + ( j13g(k ,i,j,
i_uyw) &
872 * 0.5_rp * ( f2h(k,1,
i_uyz) * ( dpres(k+1,i+1,j)+dpres(k+1,i,j) ) &
873 + f2h(k,2,
i_uyz) * ( dpres(k ,i+1,j)+dpres(k ,i,j) ) ) &
874 - j13g(k-1,i,j,
i_uyw) &
875 * 0.5_rp * ( f2h(k,1,
i_uyz) * ( dpres(k ,i+1,j)+dpres(k ,i,j) ) &
876 + f2h(k,2,
i_uyz) * ( dpres(k-1,i+1,j)+dpres(k-1,i,j) ) ) &
890 call check( __line__, momy(k,i ,j ) )
891 call check( __line__, momy(k,i+1,j ) )
892 call check( __line__, momy(k,i ,j-1) )
893 call check( __line__, momy(k,i+1,j-1) )
895 cor(k,i,j) = 0.125_rp * ( corioli(1,i+1,j )+corioli(1,i,j ) ) &
896 * ( momy(k,i+1,j )+momy(k,i,j ) &
897 + momy(k,i+1,j-1)+momy(k,i,j-1) ) &
898 + 0.25_rp * mapf(i,j,1,
i_uy) * mapf(i,j,2,
i_uy) &
899 * ( momy(k,i,j) + momy(k,i,j-1) + momy(k,i+1,j) + momy(k,i+1,j-1) ) &
900 * ( ( momy(k,i,j) + momy(k,i,j-1) + momy(k,i+1,j) + momy(k,i+1,j-1) ) * 0.25_rp &
901 * ( 1.0_rp/mapf(i+1,j,2,
i_xy) - 1.0_rp/mapf(i,j,2,
i_xy) ) * rfdx(i) &
903 * ( 1.0_rp/mapf(i,j,1,
i_uv) - 1.0_rp/mapf(i,j-1,1,
i_uv) ) * rcdy(j) ) &
904 * 2.0_rp / ( dens(k,i+1,j) + dens(k,i,j) )
913 do i = iis, min(iie,
ieh)
916 call check( __line__, qflx_hi(k ,i ,j ,
zdir) )
917 call check( __line__, qflx_hi(k-1,i ,j ,
zdir) )
918 call check( __line__, qflx_hi(k ,i ,j ,
xdir) )
919 call check( __line__, qflx_hi(k ,i-1,j ,
xdir) )
920 call check( __line__, qflx_hi(k ,i ,j ,
ydir) )
921 call check( __line__, qflx_hi(k ,i ,j-1,
ydir) )
922 call check( __line__, ddiv(k,i+1,j) )
923 call check( __line__, ddiv(k,i ,j) )
924 call check( __line__, momx0(k,i,j) )
927 advcv = - ( qflx_hi(k,i,j,
zdir) - qflx_hi(k-1,i ,j ,
zdir) &
928 + qflx_j13(k,i,j) - qflx_j13(k-1,i,j) &
929 + qflx_j23(k,i,j) - qflx_j23(k-1,i,j) ) * rcdz(k)
930 advch = - ( ( qflx_hi(k,i,j,
xdir) - qflx_hi(k ,i-1,j ,
xdir) ) * rfdx(i) &
931 + ( qflx_hi(k,i,j,
ydir) - qflx_hi(k ,i ,j-1,
ydir) ) * rcdy(j) ) &
932 * mapf(i,j,1,
i_uy) * mapf(i,j,2,
i_uy)
933 div = divdmp_coef / dtrk * fdx(i) * ( ddiv(k,i+1,j)-ddiv(k,i,j) )
934 momx_rk(k,i,j) = momx0(k,i,j) &
935 + dtrk * ( ( advcv + advch &
937 ) / gsqrt(k,i,j,
i_uyz) &
945 pg_t(k,i,j,2) = - pgf(k,i,j) / gsqrt(k,i,j,
i_uyz)
946 cf_t(k,i,j,1) = cor(k,i,j)
947 ddiv_t(k,i,j,2) = div
954 k = iundef; i = iundef; j = iundef
958 if ( flag_fct_momentum )
then 962 gsqrt(:,:,:,
i_uyw), j33g, &
965 iis-1, iie+1, jjs-1, jje+1 )
973 iis-1, iie+1, jjs-1, jje+1 )
980 iis-1, iie+1, jjs-1, jje+1 )
986 if ( flag_fct_momentum )
then 991 qflx_hi(k,i,j,
zdir) = qflx_hi(k,i,j,
zdir) / ( mapf(i,j,1,
i_uy) * mapf(i,j,2,
i_uy) )&
992 + qflx_j13(k,i,j) + qflx_j23(k,i,j)
1000 dens0_uvw(k,i,j) = 0.5_rp * ( dens0(k,i,j) + dens0(k,i+1,j) )
1001 dens_uvw(k,i,j) = 0.5_rp * ( dens_rk(k,i,j) + dens_rk(k,i+1,j) )
1006 call comm_wait ( velx(:,:,:), 5 )
1009 velx, dens0_uvw, dens_uvw, &
1013 gsqrt(:,:,:,
i_uyz), &
1014 mapf(:,:,:,
i_uy), dtrk, &
1015 flag_fct_along_stream )
1025 do i = iis, min(iie,
ieh)
1028 call check( __line__, momx_rk(k,i,j) )
1029 call check( __line__, qflx_anti(k ,i ,j ,
zdir) )
1030 call check( __line__, qflx_anti(k-1,i ,j ,
zdir) )
1031 call check( __line__, qflx_anti(k ,i ,j ,
xdir) )
1032 call check( __line__, qflx_anti(k ,i-1,j ,
xdir) )
1033 call check( __line__, qflx_anti(k ,i ,j ,
ydir) )
1034 call check( __line__, qflx_anti(k ,i ,j-1,
ydir) )
1036 momx_rk(k,i,j) = momx_rk(k,i,j) &
1037 + dtrk * ( ( ( qflx_anti(k,i,j,
zdir) - qflx_anti(k-1,i ,j ,
zdir) ) * rcdz(k) &
1038 + ( qflx_anti(k,i,j,
xdir) - qflx_anti(k ,i-1,j ,
xdir) ) * rfdx(i) &
1039 + ( qflx_anti(k,i,j,
ydir) - qflx_anti(k ,i ,j-1,
ydir) ) * rcdy(j) ) ) &
1040 * mapf(i,j,1,
i_uy) * mapf(i,j,2,
i_uy) &
1041 / gsqrt(k,i,j,
i_uyz)
1046 k = iundef; i = iundef; j = iundef
1053 qflx_lo(:,:,:,:) = undef
1054 qflx_anti(:,:,:,:) = undef
1060 qflx_hi(:,:,:,:) = undef
1078 gsqrt(:,:,:,
i_xvw), j33g, &
1081 iis, iie, jjs, jje )
1084 gsqrt(:,:,:,
i_xvz), j13g(:,:,:,
i_xvw), mapf(:,:,:,
i_xv), &
1086 iis, iie, jjs, jje )
1089 gsqrt(:,:,:,
i_xvz), j23g(:,:,:,
i_xvw), mapf(:,:,:,
i_xv), &
1091 iis, iie, jjs, jje )
1099 iis, iie, jjs, jje )
1108 iis, iie, jjs, jje )
1116 pgf(k,i,j) = ( ( gsqrt(k,i,j+1,
i_xyz) * dpres(k,i,j+1) &
1117 - gsqrt(k,i,j ,
i_xyz) * dpres(k,i,j ) &
1119 + ( j23g(k ,i,j,
i_xvw) &
1120 * 0.5_rp * ( f2h(k ,1,
i_xvz) * ( dpres(k+1,i,j+1)+dpres(k+1,i,j) ) &
1121 + f2h(k ,2,
i_xvz) * ( dpres(k ,i,j+1)+dpres(k ,i,j) ) ) &
1122 - j23g(k-1,i,j,
i_xvw) &
1123 * 0.5_rp * ( f2h(k-1,1,
i_xvz) * ( dpres(k ,i,j+1)+dpres(k ,i,j) ) &
1124 + f2h(k-1,2,
i_xvz) * ( dpres(k-1,i,j+1)+dpres(k-1,i,j) ) ) &
1138 call check( __line__, momx(k,i ,j ) )
1139 call check( __line__, momx(k,i ,j+1) )
1140 call check( __line__, momx(k,i-1,j ) )
1141 call check( __line__, momx(k,i-1,j+1) )
1143 cor(k,i,j) = - 0.125_rp * ( corioli(1,i ,j+1)+corioli(1,i ,j) ) &
1144 * ( momx(k,i ,j+1)+momx(k,i ,j) &
1145 + momx(k,i-1,j+1)+momx(k,i-1,j) ) &
1146 - 0.25_rp * mapf(i,j,1,
i_xv) * mapf(i,j,2,
i_xv) &
1147 * ( momx(k,i,j) + momx(k,i-1,j) + momx(k,i,j+1) + momx(k,i-1,j+1) )&
1149 * ( 1.0_rp/mapf(i,j,2,
i_uv) - 1.0_rp/mapf(i-1,j,2,
i_uv) ) * rcdx(i) &
1150 - 0.25_rp * ( momx(k,i,j)+momx(k,i-1,j)+momx(k,i,j+1)+momx(k,i-1,j+1) ) &
1151 * ( 1.0_rp/mapf(i,j+1,1,
i_xy) - 1.0_rp/mapf(i,j,1,
i_xy) ) * rfdy(j) ) &
1152 * 2.0_rp / ( dens(k,i,j) + dens(k,i,j+1) )
1160 do j = jjs, min(jje,
jeh)
1164 call check( __line__, qflx_hi(k ,i ,j ,
zdir) )
1165 call check( __line__, qflx_hi(k-1,i ,j ,
zdir) )
1166 call check( __line__, qflx_hi(k ,i ,j ,
xdir) )
1167 call check( __line__, qflx_hi(k ,i-1,j ,
xdir) )
1168 call check( __line__, qflx_hi(k ,i ,j ,
ydir) )
1169 call check( __line__, qflx_hi(k ,i ,j-1,
ydir) )
1170 call check( __line__, ddiv(k,i,j+1) )
1171 call check( __line__, ddiv(k,i,j ) )
1172 call check( __line__, momy_t(k,i,j) )
1173 call check( __line__, momy0(k,i,j) )
1176 advcv = - ( qflx_hi(k,i,j,
zdir) - qflx_hi(k-1,i ,j ,
zdir) &
1177 + qflx_j13(k,i,j) - qflx_j13(k-1,i,j) &
1178 + qflx_j23(k,i,j) - qflx_j23(k-1,i,j) ) * rcdz(k)
1179 advch = - ( ( qflx_hi(k,i,j,
xdir) - qflx_hi(k ,i-1,j ,
xdir) ) * rcdx(i) &
1180 + ( qflx_hi(k,i,j,
ydir) - qflx_hi(k ,i ,j-1,
ydir) ) * rfdy(j) ) &
1181 * mapf(i,j,1,
i_xv) * mapf(i,j,2,
i_xv)
1182 div = divdmp_coef / dtrk * fdy(j) * ( ddiv(k,i,j+1)-ddiv(k,i,j) )
1183 momy_rk(k,i,j) = momy0(k,i,j) &
1184 + dtrk * ( ( advcv + advch &
1186 ) / gsqrt(k,i,j,
i_xvz) &
1192 advcv_t(k,i,j,
i_momy) = advcv / gsqrt(k,i,j,
i_uyz)
1193 advch_t(k,i,j,
i_momy) = advch / gsqrt(k,i,j,
i_uyz)
1194 pg_t(k,i,j,3) = - pgf(k,i,j) / gsqrt(k,i,j,
i_uyz)
1195 cf_t(k,i,j,2) = cor(k,i,j)
1196 ddiv_t(k,i,j,3) = div
1203 k = iundef; i = iundef; j = iundef
1207 if ( flag_fct_momentum )
then 1212 momz, momy0, dens, &
1213 gsqrt(:,:,:,
i_xvz), j33g, &
1216 iis-1, iie+1, jjs-1, jje+1 )
1220 momx, momy0, dens, &
1224 iis-1, iie+1, jjs-1, jje+1 )
1229 momy, momy0, dens, &
1233 iis-1, iie+1, jjs-1, jje+1 )
1239 if ( flag_fct_momentum )
then 1244 qflx_hi(k,i,j,
zdir) = qflx_hi(k,i,j,
zdir) / ( mapf(i,j,1,
i_xv) * mapf(i,j,2,
i_xv) ) &
1245 + qflx_j13(k,i,j) + qflx_j23(k,i,j)
1253 dens0_uvw(k,i,j) = 0.5_rp * ( dens0(k,i,j) + dens0(k,i,j+1) )
1254 dens_uvw(k,i,j) = 0.5_rp * ( dens_rk(k,i,j) + dens_rk(k,i,j+1) )
1259 call comm_wait ( vely(:,:,:), 6 )
1262 vely, dens0_uvw, dens_uvw, &
1266 gsqrt(:,:,:,
i_xvz), &
1267 mapf(:,:,:,
i_xv), dtrk, &
1268 flag_fct_along_stream )
1277 do j = jjs, min(jje,
jeh)
1281 call check( __line__, momy_rk(k,i,j) )
1282 call check( __line__, qflx_anti(k ,i ,j ,
zdir) )
1283 call check( __line__, qflx_anti(k-1,i ,j ,
zdir) )
1284 call check( __line__, qflx_anti(k ,i ,j ,
xdir) )
1285 call check( __line__, qflx_anti(k ,i-1,j ,
xdir) )
1286 call check( __line__, qflx_anti(k ,i ,j ,
ydir) )
1287 call check( __line__, qflx_anti(k ,i ,j-1,
ydir) )
1289 momy_rk(k,i,j) = momy_rk(k,i,j) &
1290 + dtrk * ( ( ( qflx_anti(k,i,j,
zdir) - qflx_anti(k-1,i ,j ,
zdir) ) * rcdz(k) &
1291 + ( qflx_anti(k,i,j,
xdir) - qflx_anti(k ,i-1,j ,
xdir) ) * rcdx(i) &
1292 + ( qflx_anti(k,i,j,
ydir) - qflx_anti(k ,i ,j-1,
ydir) ) * rfdy(j) ) ) &
1293 * mapf(i,j,1,
i_xv) * mapf(i,j,2,
i_xv) &
1294 / gsqrt(k,i,j,
i_xvz)
1299 k = iundef; i = iundef; j = iundef
1306 qflx_lo(:,:,:,:) = undef
1307 qflx_anti(:,:,:,:) = undef
1312 qflx_hi(
ks:,:,:,:) = undef
1329 mflx_hi(:,:,:,
zdir), pott, gsqrt(:,:,:,
i_xyw), &
1332 iis, iie, jjs, jje )
1336 mflx_hi(:,:,:,
xdir), pott, gsqrt(:,:,:,
i_uyz), &
1339 iis, iie, jjs, jje )
1343 mflx_hi(:,:,:,
ydir), pott, gsqrt(:,:,:,
i_xvz), &
1346 iis, iie, jjs, jje )
1355 call check( __line__, tflx_hi(k ,i ,j ,
zdir) )
1356 call check( __line__, tflx_hi(k-1,i ,j ,
zdir) )
1357 call check( __line__, tflx_hi(k ,i ,j ,
xdir) )
1358 call check( __line__, tflx_hi(k ,i-1,j ,
xdir) )
1359 call check( __line__, tflx_hi(k ,i ,j ,
ydir) )
1360 call check( __line__, tflx_hi(k ,i ,j-1,
ydir) )
1361 call check( __line__, rhot_t(k,i,j) )
1362 call check( __line__, rhot0(k,i,j) )
1364 advcv = - ( tflx_hi(k,i,j,
zdir) - tflx_hi(k-1,i ,j ,
zdir) ) * rcdz(k)
1365 advch = - ( tflx_hi(k,i,j,
xdir) - tflx_hi(k ,i-1,j ,
xdir) ) * rcdx(i) &
1366 - ( tflx_hi(k,i,j,
ydir) - tflx_hi(k ,i ,j-1,
ydir) ) * rcdy(j)
1367 rhot_rk(k,i,j) = rhot0(k,i,j) &
1368 + dtrk * ( ( advcv + advch ) * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy) / gsqrt(k,i,j,
i_xyz) &
1372 advcv_t(k,i,j,
i_rhot) = advcv * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy)/ gsqrt(k,i,j,
i_xyz)
1373 advch_t(k,i,j,
i_rhot) = advch * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy)/ gsqrt(k,i,j,
i_xyz)
1380 k = iundef; i = iundef; j = iundef
1388 if ( flag_fct_t )
then 1390 call comm_vars8( mflx_hi(:,:,:,
zdir), 1 )
1391 call comm_vars8( mflx_hi(:,:,:,
xdir), 2 )
1392 call comm_vars8( mflx_hi(:,:,:,
ydir), 3 )
1393 call comm_wait ( mflx_hi(:,:,:,
zdir), 1, .false. )
1394 call comm_wait ( mflx_hi(:,:,:,
xdir), 2, .false. )
1395 call comm_wait ( mflx_hi(:,:,:,
ydir), 3, .false. )
1397 if ( .NOT. flag_fct_momentum )
then 1398 call comm_vars8( dens_rk, 1 )
1399 call comm_wait ( dens_rk, 1, .false. )
1406 pott(k,i,j) = rhot0(k,i,j) / dens0(k,i,j)
1419 mflx_hi(:,:,:,
zdir), pott, gsqrt(:,:,:,
i_xyz), &
1422 iis-1, iie+1, jjs-1, jje+1 )
1426 mflx_hi(:,:,:,
xdir), pott, gsqrt(:,:,:,
i_uyz), &
1429 iis-1, iie+1, jjs-1, jje+1 )
1433 mflx_hi(:,:,:,
ydir), pott, gsqrt(:,:,:,
i_xvz), &
1436 iis-1, iie+1, jjs-1, jje+1 )
1442 pott, dens0, dens_rk, &
1446 gsqrt(:,:,:,
i_xyz), &
1447 mapf(:,:,:,
i_xy), dtrk, &
1448 flag_fct_along_stream )
1461 call check( __line__, rhot_rk(k,i,j) )
1462 call check( __line__, tflx_anti(k ,i ,j ,
zdir) )
1463 call check( __line__, tflx_anti(k-1,i ,j ,
zdir) )
1464 call check( __line__, tflx_anti(k ,i ,j ,
xdir) )
1465 call check( __line__, tflx_anti(k ,i-1,j ,
xdir) )
1466 call check( __line__, tflx_anti(k ,i ,j ,
ydir) )
1467 call check( __line__, tflx_anti(k ,i ,j-1,
ydir) )
1469 rhot_rk(k,i,j) = rhot_rk(k,i,j) &
1470 + dtrk * ( ( tflx_anti(k,i,j,
zdir) - tflx_anti(k-1,i ,j ,
zdir) ) * rcdz(k) &
1471 + ( tflx_anti(k,i,j,
xdir) - tflx_anti(k ,i-1,j ,
xdir) ) * rcdx(i) &
1472 + ( tflx_anti(k,i,j,
ydir) - tflx_anti(k ,i ,j-1,
ydir) ) * rcdy(j) ) &
1473 * mapf(i,j,1,
i_xy) * mapf(i,j,2,
i_xy) &
1474 / gsqrt(k,i,j,
i_xyz)
1479 k = iundef; i = iundef; j = iundef
1488 call file_history_in(advcv_t(:,:,:,
i_dens),
'DENS_t_advcv',
'tendency of density (vert. advection) (w/ HIST_TEND)',
'kg/m3/s' )
1489 call file_history_in(advcv_t(:,:,:,
i_momz),
'MOMZ_t_advcv',
'tendency of momentum z (vert. advection) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZHXY')
1490 call file_history_in(advcv_t(:,:,:,
i_momx),
'MOMX_t_advcv',
'tendency of momentum x (vert. advection) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXHY')
1491 call file_history_in(advcv_t(:,:,:,
i_momy),
'MOMY_t_advcv',
'tendency of momentum y (vert. advection) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXYH')
1492 call file_history_in(advcv_t(:,:,:,
i_rhot),
'RHOT_t_advcv',
'tendency of rho*theta (vert. advection) (w/ HIST_TEND)',
'K kg/m3/s' )
1494 call file_history_in(advch_t(:,:,:,
i_dens),
'DENS_t_advch',
'tendency of density (horiz. advection) (w/ HIST_TEND)',
'kg/m3/s' )
1495 call file_history_in(advch_t(:,:,:,
i_momz),
'MOMZ_t_advch',
'tendency of momentum z (horiz. advection) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZHXY')
1496 call file_history_in(advch_t(:,:,:,
i_momx),
'MOMX_t_advch',
'tendency of momentum x (horiz. advection) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXHY')
1497 call file_history_in(advch_t(:,:,:,
i_momy),
'MOMY_t_advch',
'tendency of momentum y (horiz. advection) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXYH')
1498 call file_history_in(advch_t(:,:,:,
i_rhot),
'RHOT_t_advch',
'tendency of rho*theta (horiz. advection) (w/ HIST_TEND)',
'K kg/m3/s' )
1500 call file_history_in(pg_t(:,:,:,1),
'MOMZ_t_pg',
'tendency of momentum z (pressure gradient) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZHXY')
1501 call file_history_in(pg_t(:,:,:,2),
'MOMX_t_pg',
'tendency of momentum x (pressure gradient) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXHY')
1502 call file_history_in(pg_t(:,:,:,3),
'MOMY_t_pg',
'tendency of momentum y (pressure gradient) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXYH')
1504 call file_history_in(wdmp_t(:,:,:),
'MOMZ_t_wdamp',
'tendency of momentum z (Raileight damping) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZHXY')
1506 call file_history_in(ddiv_t(:,:,:,1),
'MOMZ_t_ddiv',
'tendency of momentum z (divergence damping) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZHXY')
1507 call file_history_in(ddiv_t(:,:,:,2),
'MOMX_t_ddiv',
'tendency of momentum x (divergence damping) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXHY')
1508 call file_history_in(ddiv_t(:,:,:,3),
'MOMY_t_ddiv',
'tendency of momentum y (divergence damping) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXYH')
1510 call file_history_in(cf_t(:,:,:,1),
'MOMX_t_cf',
'tendency of momentum x (coliolis force) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXHY')
1511 call file_history_in(cf_t(:,:,:,2),
'MOMY_t_cf',
'tendency of momentum y (coliolis force) (w/ HIST_TEND)',
'kg/m2/s2', dim_type=
'ZXYH')
integer, parameter, public i_rhot
subroutine, public atmos_dyn_fvm_fluxx_xyw_ud1(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYW
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_fvm_fluxy_xyw_ud1(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XYW
integer, public ihalo
of halo cells: x
subroutine, public atmos_dyn_fvm_fluxz_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XYZ
procedure(flux_mom), pointer, public atmos_dyn_fvm_fluxx_xvz
procedure(flux_j), pointer, public atmos_dyn_fvm_fluxj23_uyz
integer, public jhalo
of halo cells: y
integer, public ia
of whole cells: x, local, with HALO
integer, parameter, public i_momx
subroutine, public atmos_dyn_fvm_fluxy_xvz_ud1(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XV
integer, parameter, public i_momz
procedure(flux_j), pointer, public atmos_dyn_fvm_fluxj23_xyw
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxx_xyz
integer, public iblock
block size for cache blocking: x
procedure(flux_j), pointer, public atmos_dyn_fvm_fluxj13_xyw
integer, public ja
of whole cells: y, local, with HALO
subroutine, public atmos_dyn_tstep_short_fvm_heve(DENS_RK, MOMZ_RK, MOMX_RK, MOMY_RK, RHOT_RK, PROG_RK, mflx_hi, tflx_hi, DENS0, MOMZ0, MOMX0, MOMY0, RHOT0, DENS, MOMZ, MOMX, MOMY, RHOT, DENS_t, MOMZ_t, MOMX_t, MOMY_t, RHOT_t, PROG0, PROG, DPRES0, RT2P, CORIOLI, num_diff, wdamp_coef, divdmp_coef, DDIV, FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_ALONG_STREAM, CDZ, FDZ, FDX, FDY, RCDZ, RCDX, RCDY, RFDZ, RFDX, RFDY, PHI, GSQRT, J13G, J23G, J33G, MAPF, REF_dens, REF_rhot, BND_W, BND_E, BND_S, BND_N, dtrk, last)
subroutine, public check(current_line, v)
Undefined value checker.
integer, parameter, public i_dens
integer, parameter, public i_momy
real(rp), public const_undef
procedure(flux_mom), pointer, public atmos_dyn_fvm_fluxx_xyw
integer, public is
start point of inner domain: x, local
procedure(flux_mom), pointer, public atmos_dyn_fvm_fluxy_xyw
integer, public ie
end point of inner domain: x, local
subroutine, public atmos_dyn_fvm_fluxx_uyz_ud1(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at UY
procedure(flux_z), pointer, public atmos_dyn_fvm_fluxz_xvz
integer, parameter, public ydir
module Atmosphere / Dynamics RK
subroutine, public atmos_dyn_fvm_fluxz_xvz_ud1(flux, mom, val, DENS, GSQRT, J33G, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XV
module atmosphere / grid / cartesC index
integer, public ke
end point of inner domain: z, local
subroutine, public atmos_dyn_tstep_short_fvm_heve_setup
Setup.
real(rp), public const_pre00
pressure reference [Pa]
integer, public je
end point of inner domain: y, local
integer, public ieh
end point of inner domain: x, local (half level)
subroutine, public atmos_dyn_fvm_fluxz_uyz_ud1(flux, mom, val, DENS, GSQRT, J33G, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at UY
real(rp), public const_grav
standard acceleration of gravity [m/s2]
integer, parameter, public const_undef2
undefined value (INT2)
module Atmosphere / Dynamics common
integer, public ks
start point of inner domain: z, local
subroutine, public atmos_dyn_fvm_fluxy_uyz_ud1(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at UY
integer, public jblock
block size for cache blocking: y
subroutine, public prc_abort
Abort Process.
subroutine, public atmos_dyn_fvm_fluxx_xvz_ud1(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XV
integer, public js
start point of inner domain: y, local
integer, parameter, public xdir
procedure(flux_j), pointer, public atmos_dyn_fvm_fluxj13_xvz
real(rp), public const_eps
small number
procedure(flux_z), pointer, public atmos_dyn_fvm_fluxz_uyz
subroutine, public atmos_dyn_tstep_short_fvm_heve_regist(ATMOS_DYN_TYPE, VA_out, VAR_NAME, VAR_DESC, VAR_UNIT)
Register.
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.
procedure(flux_j), pointer, public atmos_dyn_fvm_fluxj13_uyz
procedure(flux_j), pointer, public atmos_dyn_fvm_fluxj23_xvz
integer, public jeh
end point of inner domain: y, local (half level)
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxz_xyz
integer, parameter, public zdir
procedure(flux_mom), pointer, public atmos_dyn_fvm_fluxx_uyz
subroutine, public atmos_dyn_fvm_fluxz_xyw_ud1(flux, mom, val, DENS, GSQRT, J33G, num_diff, CDZ, FDZ, dtrk, IIS, IIE, JJS, JJE)
calculation z-flux at XYW
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxy_xyz
procedure(flux_mom), pointer, public atmos_dyn_fvm_fluxy_uyz
subroutine, public atmos_dyn_fvm_fluxx_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYZ
procedure(flux_wz), pointer, public atmos_dyn_fvm_fluxz_xyw
module scale_atmos_dyn_fvm_flux_ud1
procedure(flux_mom), pointer, public atmos_dyn_fvm_fluxy_xvz