61 real(RP),
private,
parameter :: C1 = 0.19_rp
62 real(RP),
private,
parameter :: C2 = 0.51_rp
64 real(RP),
private,
parameter :: OneOverThree = 1.0_rp / 3.0_rp
65 real(RP),
private,
parameter :: TwoOverThree = 2.0_rp / 3.0_rp
66 real(RP),
private,
parameter :: FourOverThree = 4.0_rp / 3.0_rp
68 real(RP),
private,
allocatable :: delta(:,:,:)
70 integer,
private :: I_TKE
72 real(RP),
private :: ATMOS_PHY_TB_D1980_Km_MAX = 1000.0_rp
73 logical,
private :: ATMOS_PHY_TB_D1980_implicit = .false.
88 character(len=*),
intent(in) :: type_tb
89 integer,
intent(out) :: i_tke_out
93 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[Turbulence Tracer] / Categ[ATMOS PHYSICS] / Origin[SCALElib]' 94 if(
io_l )
write(
io_fid_log,*)
'*** Tracers for Deardorff (1980) 1.5th TKE Model' 96 if ( type_tb /=
'D1980' )
then 97 write(*,*)
'xxx ATMOS_PHY_TB_TYPE is not D1980. Check!' 104 (/
'turbulent kinetic energy (D1980)' /), &
120 real(RP),
intent(in) :: cdz(
ka)
121 real(RP),
intent(in) :: cdx(
ia)
122 real(RP),
intent(in) :: cdy(
ja)
123 real(RP),
intent(in) :: cz (
ka,
ia,
ja)
125 namelist / param_atmos_phy_tb_d1980 / &
126 atmos_phy_tb_d1980_km_max, &
127 atmos_phy_tb_d1980_implicit
134 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[Turbulence] / Categ[ATMOS PHYSICS] / Origin[SCALElib]' 135 if(
io_l )
write(
io_fid_log,*)
'*** Deardorff (1980) 1.5th TKE Model' 139 read(
io_fid_conf,nml=param_atmos_phy_tb_d1980,iostat=ierr)
141 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 142 elseif( ierr > 0 )
then 143 write(*,*)
'xxx Not appropriate names in namelist PARAM_ATMOS_PHY_TB_D1980. Check!' 148 allocate( delta(
ka,
ia,
ja) )
156 delta(k,i,j) = ( cdz(k) * cdx(i) * cdy(j) )**(1.0_rp/3.0_rp)
166 qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, &
167 qflx_sgs_rhot, qflx_sgs_rhoq, &
170 MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, N2, &
171 SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_Q, &
172 GSQRT, J13G, J23G, J33G, MAPF, dt )
204 real(RP),
intent(out) :: qflx_sgs_momz(
ka,
ia,
ja,3)
205 real(RP),
intent(out) :: qflx_sgs_momx(
ka,
ia,
ja,3)
206 real(RP),
intent(out) :: qflx_sgs_momy(
ka,
ia,
ja,3)
207 real(RP),
intent(out) :: qflx_sgs_rhot(
ka,
ia,
ja,3)
208 real(RP),
intent(out) :: qflx_sgs_rhoq(
ka,
ia,
ja,3,
qa)
210 real(RP),
intent(inout) :: rhoq_t (
ka,
ia,
ja,
qa)
212 real(RP),
intent(out) :: km (
ka,
ia,
ja)
213 real(RP),
intent(out) :: ri (
ka,
ia,
ja)
214 real(RP),
intent(out) :: pr (
ka,
ia,
ja)
216 real(RP),
intent(in) :: momz (
ka,
ia,
ja)
217 real(RP),
intent(in) :: momx (
ka,
ia,
ja)
218 real(RP),
intent(in) :: momy (
ka,
ia,
ja)
219 real(RP),
intent(in) :: rhot (
ka,
ia,
ja)
220 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
221 real(RP),
intent(in) :: qtrc (
ka,
ia,
ja,
qa)
222 real(RP),
intent(in) :: n2 (
ka,
ia,
ja)
224 real(RP),
intent(in) :: sflx_mw (
ia,
ja)
225 real(RP),
intent(in) :: sflx_mu (
ia,
ja)
226 real(RP),
intent(in) :: sflx_mv (
ia,
ja)
227 real(RP),
intent(in) :: sflx_sh (
ia,
ja)
228 real(RP),
intent(in) :: sflx_q (
ia,
ja,
qa)
230 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja,7)
231 real(RP),
intent(in) :: j13g (
ka,
ia,
ja,7)
232 real(RP),
intent(in) :: j23g (
ka,
ia,
ja,7)
233 real(RP),
intent(in) :: j33g
234 real(RP),
intent(in) :: mapf (
ia,
ja,2,4)
235 real(DP),
intent(in) :: dt
238 real(RP) :: pott (
ka,
ia,
ja)
241 real(RP) :: s33_c (
ka,
ia,
ja)
242 real(RP) :: s11_c (
ka,
ia,
ja)
243 real(RP) :: s22_c (
ka,
ia,
ja)
244 real(RP) :: s31_c (
ka,
ia,
ja)
245 real(RP) :: s12_c (
ka,
ia,
ja)
246 real(RP) :: s23_c (
ka,
ia,
ja)
247 real(RP) :: s12_z (
ka,
ia,
ja)
248 real(RP) :: s23_x (
ka,
ia,
ja)
249 real(RP) :: s31_y (
ka,
ia,
ja)
255 real(RP) :: qflx_tke(
ka,
ia,
ja,3)
257 real(RP) :: tend(
ka,
ia,
ja)
267 integer :: k, i, j, iq
270 if(
io_l )
write(
io_fid_log,*)
'*** Atmos physics step: Turbulence(D1980)' 273 qflx_sgs_momz(:,:,:,:) = undef
274 qflx_sgs_momx(:,:,:,:) = undef
275 qflx_sgs_momy(:,:,:,:) = undef
276 qflx_sgs_rhot(:,:,:,:) = undef
277 qflx_sgs_rhoq(:,:,:,:,:) = undef
292 call check( __line__, rhot(k,i,j) )
293 call check( __line__, dens(k,i,j) )
295 pott(k,i,j) = rhot(k,i,j) / dens(k,i,j)
300 i = iundef; j = iundef; k = iundef
305 call calc_strain_tensor( &
306 s33_c, s11_c, s22_c, &
307 s31_c, s12_c, s23_c, &
308 s12_z, s23_x, s31_y, &
310 dens, momz, momx, momy, &
311 gsqrt, j13g, j23g, j33g, mapf )
323 call check( __line__, pott(k+1,i,j) )
324 call check( __line__, pott(k,i,j) )
325 call check( __line__, pott(k-1,i,j) )
326 call check( __line__, fdz(k) )
327 call check( __line__, fdz(k-1) )
328 call check( __line__, s2(k,i,j) )
330 ri(k,i,j) = n2(k,i,j) / s2(k,i,j)
335 i = iundef; j = iundef; k = iundef
342 if ( n2(k,i,j) > 1e-10_rp )
then 343 l(k,i,j) = max( min( 0.76_rp * sqrt(qtrc(k,i,j,i_tke)/n2(k,i,j)), delta(k,i,j) ), 1e-10_rp )
345 l(k,i,j) = delta(k,i,j)
351 i = iundef; j = iundef; k = iundef
357 km(k,i,j) = min( 0.10_rp * l(k,i,j) * sqrt(qtrc(k,i,j,i_tke)), atmos_phy_tb_d1980_km_max )
358 pr(k,i,j) = 1.0_rp / ( 1.0_rp + 2.0_rp * l(k,i,j) / delta(k,i,j) )
359 kh(k,i,j) = km(k,i,j) / pr(k,i,j)
364 i = iundef; j = iundef; k = iundef
373 call check( __line__, dens(k,i,j) )
374 call check( __line__, km(k,i,j) )
375 call check( __line__, s33_c(k,i,j) )
377 qflx_sgs_momz(k,i,j,
zdir) = dens(k,i,j) * ( - 2.0_rp * km(k,i,j) * s33_c(k,i,j) )
382 i = iundef; j = iundef; k = iundef
386 qflx_sgs_momz(
ks,i,j,
zdir) = 0.0_rp
387 qflx_sgs_momz(
ke,i,j,
zdir) = 0.0_rp
391 i = iundef; j = iundef; k = iundef
398 call check( __line__, dens(k,i,j) )
399 call check( __line__, dens(k,i+1,j) )
400 call check( __line__, dens(k+1,i,j) )
401 call check( __line__, dens(k+1,i+1,j) )
402 call check( __line__, km(k,i,j) )
403 call check( __line__, km(k,i+1,j) )
404 call check( __line__, km(k+1,i,j) )
405 call check( __line__, km(k+1,i+1,j) )
406 call check( __line__, s31_y(k,i,j) )
408 qflx_sgs_momz(k,i,j,
xdir) = - 0.125_rp &
409 * ( dens(k,i,j)+dens(k+1,i,j)+dens(k,i+1,j)+dens(k+1,i+1,j) ) &
410 * ( km(k,i,j)+km(k+1,i,j)+km(k,i+1,j)+km(k+1,i+1,j)) &
416 i = iundef; j = iundef; k = iundef
423 call check( __line__, dens(k,i,j) )
424 call check( __line__, dens(k,i,j+1) )
425 call check( __line__, dens(k+1,i,j) )
426 call check( __line__, dens(k+1,i,j+1) )
427 call check( __line__, km(k,i,j) )
428 call check( __line__, km(k,i,j+1) )
429 call check( __line__, km(k+1,i,j) )
430 call check( __line__, km(k+1,i,j+1) )
431 call check( __line__, s23_x(k,i,j) )
433 qflx_sgs_momz(k,i,j,
ydir) = - 0.125_rp &
434 * ( dens(k,i,j)+dens(k+1,i,j)+dens(k,i,j+1)+dens(k+1,i,j+1) ) &
435 * ( km(k,i,j)+km(k+1,i,j)+km(k,i,j+1)+km(k+1,i,j+1) ) &
441 i = iundef; j = iundef; k = iundef
444 if ( atmos_phy_tb_d1980_implicit )
then 445 call calc_tend_momz( tend, &
447 gsqrt, j13g, j23g, j33g, mapf, &
453 ap = - fouroverthree * dt &
454 * dens(
ks+1,i,j)*km(
ks+1,i,j) &
458 b(
ks,i,j) = - a(
ks,i,j) + 0.5_rp * ( dens(
ks,i,j)+dens(
ks+1,i,j) )
460 c(k,i,j) = ap * rfdz(k+1) / gsqrt(k+1,i,j,
i_xyw)
461 ap = - fouroverthree * dt &
462 * dens(k+1,i,j)*km(k+1,i,j) &
463 * rcdz(k+1) / gsqrt(k+1,i,j,
i_xyz)
464 a(k,i,j) = ap * rfdz(k) / gsqrt(k,i,j,
i_xyw)
465 b(k,i,j) = - a(k,i,j) - c(k,i,j) + 0.5_rp * ( dens(k,i,j)+dens(k+1,i,j) )
469 b(
ke-1,i,j) = - c(
ke-1,i,j) + 0.5_rp * ( dens(
ke-1,i,j)+dens(
ke,i,j) )
475 call diffusion_solver( &
477 a(:,i,j), b(:,i,j), c(:,i,j), d, &
481 qflx_sgs_momz(k,i,j,
zdir) = qflx_sgs_momz(k,i,j,
zdir) &
482 - fouroverthree * dens(k,i,j) * km(k,i,j) * dt &
483 * ( tend(k,i,j) - tend(k-1,i,j) ) * rcdz(k) / gsqrt(k,i,j,
i_xyz)
497 call check( __line__, dens(k,i,j) )
498 call check( __line__, dens(k,i+1,j) )
499 call check( __line__, dens(k+1,i,j) )
500 call check( __line__, dens(k+1,i+1,j) )
501 call check( __line__, km(k,i,j) )
502 call check( __line__, km(k,i+1,j) )
503 call check( __line__, km(k+1,i,j) )
504 call check( __line__, km(k+1,i+1,j) )
505 call check( __line__, s31_y(k,i,j) )
507 qflx_sgs_momx(k,i,j,
zdir) = - 0.125_rp &
508 * ( dens(k,i,j)+dens(k+1,i,j)+dens(k,i+1,j)+dens(k+1,i+1,j) ) &
509 * ( km(k,i,j)+km(k+1,i,j)+km(k,i+1,j)+km(k+1,i+1,j) ) &
515 i = iundef; j = iundef; k = iundef
519 qflx_sgs_momx(
ks-1,i,j,
zdir) = 0.0_rp
520 qflx_sgs_momx(
ke ,i,j,
zdir) = 0.0_rp
524 i = iundef; j = iundef; k = iundef
531 call check( __line__, dens(k,i,j) )
532 call check( __line__, km(k,i,j) )
533 call check( __line__, s11_c(k,i,j) )
535 qflx_sgs_momx(k,i,j,
xdir) = dens(k,i,j) * ( - 2.0_rp * km(k,i,j) * s11_c(k,i,j) )
540 i = iundef; j = iundef; k = iundef
547 call check( __line__, dens(k,i,j) )
548 call check( __line__, dens(k,i+1,j) )
549 call check( __line__, dens(k,i,j+1) )
550 call check( __line__, dens(k,i+1,j+1) )
551 call check( __line__, km(k,i,j) )
552 call check( __line__, km(k,i+1,j) )
553 call check( __line__, km(k,i,j+1) )
554 call check( __line__, km(k,i+1,j+1) )
555 call check( __line__, s12_z(k,i,j) )
557 qflx_sgs_momx(k,i,j,
ydir) = - 0.125_rp &
558 * ( dens(k,i,j)+dens(k,i+1,j)+dens(k,i,j+1)+dens(k,i+1,j+1) ) &
559 * ( km(k,i,j)+km(k,i+1,j)+km(k,i,j+1)+km(k,i+1,j+1) ) &
565 i = iundef; j = iundef; k = iundef
568 if ( atmos_phy_tb_d1980_implicit )
then 569 call calc_tend_momx( tend, &
571 gsqrt, j13g, j23g, j33g, mapf, &
577 ap = - dt * 0.25_rp * ( dens(
ks ,i ,j)*km(
ks ,i ,j) &
578 + dens(
ks+1,i ,j)*km(
ks+1,i ,j) &
579 + dens(
ks ,i+1,j)*km(
ks ,i+1,j) &
580 + dens(
ks+1,i+1,j)*km(
ks+1,i+1,j) ) &
584 b(
ks,i,j) = - a(
ks,i,j) + 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i+1,j) )
586 c(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_uyz)
587 ap = - dt * 0.25_rp * ( dens(k ,i ,j)*km(k ,i ,j) &
588 + dens(k+1,i ,j)*km(k+1,i ,j) &
589 + dens(k ,i+1,j)*km(k ,i+1,j) &
590 + dens(k+1,i+1,j)*km(k+1,i+1,j) ) &
591 * rfdz(k) / gsqrt(k,i,j,
i_uyw)
592 a(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_uyz)
593 b(k,i,j) = - a(k,i,j) - c(k,i,j) + 0.5_rp * ( dens(k,i,j)+dens(k,i+1,j) )
597 b(
ke,i,j) = - c(
ke,i,j) + 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i+1,j) )
603 call diffusion_solver( &
605 a(:,i,j), b(:,i,j), c(:,i,j), d, &
609 qflx_sgs_momx(k,i,j,
zdir) = qflx_sgs_momx(k,i,j,
zdir) &
610 - 0.25_rp * ( dens(k ,i ,j)*km(k ,i ,j) &
611 + dens(k+1,i ,j)*km(k+1,i ,j) &
612 + dens(k ,i+1,j)*km(k ,i+1,j) &
613 + dens(k+1,i+1,j)*km(k+1,i+1,j) ) &
614 * dt * ( tend(k+1,i,j) - tend(k,i,j) ) * rfdz(k) / gsqrt(k,i,j,
i_uyw)
628 call check( __line__, dens(k,i,j) )
629 call check( __line__, dens(k,i,j+1) )
630 call check( __line__, dens(k+1,i,j) )
631 call check( __line__, dens(k+1,i,j+1) )
632 call check( __line__, km(k,i,j) )
633 call check( __line__, km(k,i,j+1) )
634 call check( __line__, km(k+1,i,j) )
635 call check( __line__, km(k+1,i,j+1) )
636 call check( __line__, s23_x(k,i,j) )
638 qflx_sgs_momy(k,i,j,
zdir) = - 0.125_rp &
639 * ( dens(k,i,j)+dens(k+1,i,j)+dens(k,i,j+1)+dens(k+1,i,j+1) ) &
640 * ( km(k,i,j)+km(k+1,i,j)+km(k,i,j+1)+km(k+1,i,j+1) ) &
646 i = iundef; j = iundef; k = iundef
650 qflx_sgs_momy(
ks-1,i,j,
zdir) = 0.0_rp
651 qflx_sgs_momy(
ke ,i,j,
zdir) = 0.0_rp
655 i = iundef; j = iundef; k = iundef
663 call check( __line__, dens(k,i,j) )
664 call check( __line__, dens(k,i+1,j) )
665 call check( __line__, dens(k,i,j+1) )
666 call check( __line__, dens(k,i+1,j+1) )
667 call check( __line__, km(k,i,j) )
668 call check( __line__, km(k,i+1,j) )
669 call check( __line__, km(k,i,j+1) )
670 call check( __line__, km(k,i+1,j+1) )
671 call check( __line__, s12_z(k,i,j) )
673 qflx_sgs_momy(k,i,j,
xdir) = - 0.125_rp &
674 * ( dens(k,i,j)+dens(k,i+1,j)+dens(k,i,j+1)+dens(k,i+1,j+1) ) &
675 * ( km(k,i,j)+km(k,i+1,j)+km(k,i,j+1)+km(k,i+1,j+1) ) &
681 i = iundef; j = iundef; k = iundef
689 call check( __line__, dens(k,i,j) )
690 call check( __line__, km(k,i,j) )
691 call check( __line__, s22_c(k,i,j) )
693 qflx_sgs_momy(k,i,j,
ydir) = dens(k,i,j) * ( - 2.0_rp * km(k,i,j) * s22_c(k,i,j) )
698 i = iundef; j = iundef; k = iundef
701 if ( atmos_phy_tb_d1980_implicit )
then 702 call calc_tend_momy( tend, &
704 gsqrt, j13g, j23g, j33g, mapf, &
710 ap = - dt * 0.25_rp * ( dens(
ks ,i,j )*km(
ks ,i,j ) &
711 + dens(
ks+1,i,j )*km(
ks+1,i,j ) &
712 + dens(
ks ,i,j+1)*km(
ks ,i,j+1) &
713 + dens(
ks+1,i,j+1)*km(
ks+1,i,j+1) ) &
717 b(
ks,i,j) = - a(
ks,i,j) + 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i,j+1) )
719 c(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_xvz)
720 ap = - dt * 0.25_rp * ( dens(k ,i,j )*km(k ,i,j ) &
721 + dens(k+1,i,j )*km(k+1,i,j ) &
722 + dens(k ,i,j+1)*km(k ,i,j+1) &
723 + dens(k+1,i,j+1)*km(k+1,i,j+1) ) &
724 * rfdz(k) / gsqrt(k,i,j,
i_xvw)
725 a(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_xvz)
726 b(k,i,j) = - a(k,i,j) - c(k,i,j) + 0.5_rp * ( dens(k,i,j)+dens(k,i,j+1) )
730 b(
ke,i,j) = - c(
ke,i,j) + 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i,j+1) )
736 call diffusion_solver( &
738 a(:,i,j), b(:,i,j), c(:,i,j), d, &
742 qflx_sgs_momy(k,i,j,
zdir) = qflx_sgs_momy(k,i,j,
zdir) &
743 - 0.25_rp * ( dens(k ,i,j )*km(k ,i,j ) &
744 + dens(k+1,i,j )*km(k+1,i,j ) &
745 + dens(k ,i,j+1)*km(k ,i,j+1) &
746 + dens(k+1,i,j+1)*km(k+1,i,j+1) ) &
747 * dt * ( tend(k+1,i,j) - tend(k,i,j) ) * rfdz(k) / gsqrt(k,i,j,
i_xvw)
757 if ( atmos_phy_tb_d1980_implicit )
then 762 ap = - dt * 0.25_rp * ( dens(
ks,i,j)+dens(
ks+1,i,j) ) &
763 * ( kh(
ks,i,j)+kh(
ks+1,i,j) ) &
767 b(
ks,i,j) = - a(
ks,i,j) + dens(
ks,i,j)
769 c(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_xyz)
770 ap = - dt * 0.25_rp * ( dens(k,i,j)+dens(k+1,i,j) ) &
771 * ( kh(k,i,j)+kh(k+1,i,j) ) &
772 * rfdz(k) / gsqrt(k,i,j,
i_xyw)
773 a(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_xyz)
774 b(k,i,j) = - a(k,i,j) - c(k,i,j) + dens(k,i,j)
778 b(
ke,i,j) = - c(
ke,i,j) + dens(
ke,i,j)
785 call calc_flux_phi( &
787 dens, pott, kh, 1.0_rp, &
788 gsqrt, j13g, j23g, j33g, mapf, &
790 atmos_phy_tb_d1980_implicit, &
800 if ( iq == i_tke )
then 801 qflx_sgs_rhoq(:,:,:,:,iq) = 0.0_rp
811 call calc_flux_phi( &
812 qflx_sgs_rhoq(:,:,:,:,iq), &
813 dens, qtrc(:,:,:,iq), kh, 1.0_rp, &
814 gsqrt, j13g, j23g, j33g, mapf, &
816 atmos_phy_tb_d1980_implicit, &
822 iis = iundef; iie = iundef; jjs = iundef; jje = iundef
836 if ( atmos_phy_tb_d1980_implicit )
then 841 ap = - dt * 0.25_rp * ( dens(
ks,i,j)+dens(
ks+1,i,j) ) &
842 * 2.0_rp * ( km(
ks,i,j)+km(
ks+1,i,j) ) &
846 b(
ks,i,j) = - a(
ks,i,j) + dens(
ks,i,j)
848 c(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_xyz)
849 ap = - dt * 0.25_rp * ( dens(k,i,j)+dens(k+1,i,j) ) &
850 * 2.0_rp * ( km(k,i,j)+km(k+1,i,j) ) &
851 * rfdz(k) / gsqrt(k,i,j,
i_xyw)
852 a(k,i,j) = ap * rcdz(k) / gsqrt(k,i,j,
i_xyz)
853 b(k,i,j) = - a(k,i,j) - c(k,i,j) + dens(k,i,j)
857 b(
ke,i,j) = - c(
ke,i,j) + dens(
ke,i,j)
864 call calc_flux_phi( &
866 dens, qtrc(:,:,:,i_tke), km, 2.0_rp, &
867 gsqrt, j13g, j23g, j33g, mapf, &
869 atmos_phy_tb_d1980_implicit, &
872 call calc_tend_phi( rhoq_t(:,:,:,i_tke), &
874 gsqrt, j13g, j23g, j33g, mapf, &
879 rhoq_t(k,i,j,i_tke) = max( &
880 rhoq_t(k,i,j,i_tke) &
881 + ( km(k,i,j) * s2(k,i,j) &
882 - kh(k,i,j) * n2(k,i,j) &
883 - ( c1 + c2*l(k,i,j)/delta(k,i,j) ) * qtrc(k,i,j,i_tke)**(1.5_rp) / l(k,i,j) ) * dens(k,i,j), &
884 - qtrc(k,i,j,i_tke) * dens(k,i,j) /
real(dt,kind=RP) )
889 i = iundef; j = iundef; k = iundef
integer, public is
start point of inner domain: x, local
subroutine, public atmos_phy_tb_calc_tend_momz(MOMZ_t_TB, QFLX_MOMZ, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
integer, public je
end point of inner domain: y, local
real(rp), dimension(:), allocatable, public grid_rcdy
reciprocal of center-dy
subroutine, public prc_mpistop
Abort MPI.
subroutine, public atmos_phy_tb_d1980(qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, qflx_sgs_rhot, qflx_sgs_rhoq, RHOQ_t, Km, Ri, Pr, MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, N2, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_Q, GSQRT, J13G, J23G, J33G, MAPF, dt)
subroutine, public atmos_phy_tb_diffusion_solver(phi, a, b, c, d, KE_TB)
subroutine, public atmos_phy_tb_calc_flux_phi(qflx_phi, DENS, PHI, Kh, FACT, GSQRT, J13G, J23G, J33G, MAPF, a, b, c, dt, implicit, IIS, IIE, JJS, JJE)
integer, public iblock
block size for cache blocking: x
subroutine, public atmos_phy_tb_calc_tend_momy(MOMY_t_TB, QFLX_MOMY, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
logical, public io_l
output log or not? (this process)
real(rp), dimension(:), allocatable, public grid_rcdx
reciprocal of center-dx
integer, parameter, public zdir
subroutine, public atmos_phy_tb_d1980_config(TYPE_TB, I_TKE_out)
Config.
integer, parameter, public ydir
integer, public ke
end point of inner domain: z, local
integer, parameter, public xdir
logical, dimension(qa_max), public tracer_advc
real(rp), dimension(:), allocatable, public grid_rfdy
reciprocal of face-dy
subroutine, public check(current_line, v)
Undefined value checker.
real(rp), dimension(:), allocatable, public grid_rcdz
reciprocal of center-dz
real(rp), public const_undef
subroutine, public atmos_phy_tb_calc_tend_phi(phi_t_TB, QFLX_phi, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
logical, public io_nml
output log or not? (for namelist, this process)
integer, public ia
of whole cells: x, local, with HALO
subroutine, public atmos_phy_tb_calc_tend_momx(MOMX_t_TB, QFLX_MOMX, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
module ATMOSPHERE / Physics Turbulence
real(rp), dimension(:), allocatable, public grid_fdz
z-length of grid(k+1) to grid(k) [m]
integer, public ka
of whole cells: z, local, with HALO
integer, public jblock
block size for cache blocking: y
real(rp), public const_grav
standard acceleration of gravity [m/s2]
integer, public js
start point of inner domain: y, local
subroutine, public atmos_phy_tb_calc_strain_tensor(S33_C, S11_C, S22_C, S31_C, S12_C, S23_C, S12_Z, S23_X, S31_Y, S2, DENS, MOMZ, MOMX, MOMY, GSQRT, J13G, J23G, J33G, MAPF)
integer, parameter, public const_undef2
undefined value (INT2)
integer, public ks
start point of inner domain: z, local
module ATMOSPHERE / Physics Turbulence
integer, public ie
end point of inner domain: x, local
subroutine, public atmos_phy_tb_d1980_setup(CDZ, CDX, CDY, CZ)
Setup.
real(rp), dimension(:), allocatable, public grid_rfdx
reciprocal of face-dx
real(rp), dimension(:), allocatable, public grid_rfdz
reciprocal of face-dz
integer, public io_fid_conf
Config file ID.
subroutine, public tracer_regist(QS, NQ, NAME, DESC, UNIT, CV, CP, R, ADVC, MASS)
Regist tracer.
integer, public io_fid_log
Log file ID.
integer, public io_fid_nml
Log file ID (only for output namelist)
integer, public ja
of whole cells: y, local, with HALO