Go to the documentation of this file.
46 integer,
private :: monit_west
47 integer,
private :: monit_east
48 integer,
private :: monit_south
49 integer,
private :: monit_north
73 log_info(
"ATMOS_PHY_TB_driver_tracer_setup",*)
'Setup'
87 log_error(
"ATMOS_PHY_TB_driver_tracer_setup",*)
'ATMOS_PHY_TB_TYPE is invalid: ',
atmos_phy_tb_type
123 logical :: horizontal = .false.
129 log_info(
"ATMOS_PHY_TB_driver_setup",*)
'Setup'
136 momz_t_tb(
ks-1,i,j) = 0.0_rp
137 momz_t_tb(
ke ,i,j) = 0.0_rp
144 case(
'SMAGORINSKY' )
155 call monitor_reg(
"QTOTFLX_TB_WEST",
"water mass flux at the western boundary",
"kg", &
157 dim_type=
"ZY-W", is_tendency=.true. )
158 call monitor_reg(
"QTOTFLX_TB_EAST",
"water mass flux at the eastern boundary",
"kg", &
160 dim_type=
"ZY-E", is_tendency=.true. )
161 call monitor_reg(
"QTOTFLX_TB_SOUTH",
"water mass flux at the southern boundary",
"kg", &
163 dim_type=
"ZX-S", is_tendency=.true. )
164 call monitor_reg(
"QTOTFLX_TB_NORTH",
"water mass flux at the northern boundary",
"kg", &
166 dim_type=
"ZX-N", is_tendency=.true. )
186 log_info(
"ATMOS_PHY_TB_driver_finalize",*)
'Finalize'
191 case(
'SMAGORINSKY' )
255 atmos_vars_get_diagnostic, &
283 logical,
intent(in) :: update_flag
307 integer ::
k, i, j, iq
313 if ( update_flag )
then
319 call atmos_vars_get_diagnostic(
"N2", n2 )
322 case(
'SMAGORINSKY' )
324 qflx_rhot, qflx_rhoq, &
325 momz_t_tb, momx_t_tb, momy_t_tb, &
326 rhot_t_tb, rhoq_t_tb, &
329 fz, fdz, rcdz, rfdz, cdx, fdx, cdy, fdy, &
330 gsqrt, j13g, j23g, j33g, mapf, &
334 momz_t_tb(:,:,:) = 0.0_rp
335 momx_t_tb(:,:,:) = 0.0_rp
336 momy_t_tb(:,:,:) = 0.0_rp
337 rhot_t_tb(:,:,:) = 0.0_rp
341 qflx_rhot, qflx_rhoq, &
345 sflx_mw, sflx_mu, sflx_mv, &
347 gsqrt, j13g, j23g, j33g, mapf, &
352 momz_t_tb(:,:,:) = 0.0_rp
353 momx_t_tb(:,:,:) = 0.0_rp
354 momy_t_tb(:,:,:) = 0.0_rp
355 rhot_t_tb(:,:,:) = 0.0_rp
358 qflx_rhot, qflx_rhoq, &
362 sflx_mw, sflx_mu, sflx_mv, &
364 fz, fdz, rcdz, rfdz, cdx, fdx, cdy, fdy, &
365 gsqrt, j13g, j23g, j33g, mapf, &
375 call calc_tend_momz( tend(:,:,:), &
377 gsqrt, j13g, j23g, j33g, mapf, &
384 momz_t_tb(
k,i,j) = momz_t_tb(
k,i,j) + tend(
k,i,j)
390 call calc_tend_momx( tend(:,:,:), &
392 gsqrt, j13g, j23g, j33g, mapf, &
399 momx_t_tb(
k,i,j) = momx_t_tb(
k,i,j) + tend(
k,i,j)
405 call calc_tend_momy( tend(:,:,:), &
407 gsqrt, j13g, j23g, j33g, mapf, &
414 momy_t_tb(
k,i,j) = momy_t_tb(
k,i,j) + tend(
k,i,j)
420 call calc_tend_phi ( tend(:,:,:), &
422 gsqrt, j13g, j23g, j33g, mapf, &
429 rhot_t_tb(
k,i,j) = rhot_t_tb(
k,i,j) + tend(
k,i,j)
438 call calc_tend_phi( tend(:,:,:), &
439 qflx_rhoq(:,:,:,:,iq), &
440 gsqrt, j13g, j23g, j33g, mapf, &
448 rhoq_t_tb(
k,i,j,iq) = rhoq_t_tb(
k,i,j,iq) + tend(
k,i,j)
460 call file_history_in( nu(:,:,:),
'NU',
'eddy viscosity',
'm2/s' , fill_halo=.true. )
461 call file_history_in( ri(:,:,:),
'Ri',
'Richardson number',
'NIL' , fill_halo=.true. )
462 call file_history_in( pr(:,:,:),
'Pr',
'Prantle number',
'NIL' , fill_halo=.true. )
464 call file_history_in( momz_t_tb(:,:,:),
'MOMZ_t_TB',
'MOMZ tendency (TB)',
'kg/m2/s2', fill_halo=.true. )
465 call file_history_in( momx_t_tb(:,:,:),
'MOMX_t_TB',
'MOMX tendency (TB)',
'kg/m2/s2', fill_halo=.true. )
466 call file_history_in( momy_t_tb(:,:,:),
'MOMY_t_TB',
'MOMY tendency (TB)',
'kg/m2/s2', fill_halo=.true. )
467 call file_history_in( rhot_t_tb(:,:,:),
'RHOT_t_TB',
'RHOT tendency (TB)',
'K.kg/m3/s', fill_halo=.true. )
470 call file_history_in( rhoq_t_tb(:,:,:,iq), trim(
tracer_name(iq))//
'_t_TB', &
471 'tendency rho*'//trim(
tracer_name(iq))//
' in TB',
'kg/m3/s', fill_halo=.true. )
474 call file_history_in( qflx_momz(:,:,:,
zdir),
'SGS_ZFLX_MOMZ',
'SGS Z FLUX of MOMZ',
'kg/m/s2', &
476 call file_history_in( qflx_momz(:,:,:,
xdir),
'SGS_XFLX_MOMZ',
'SGS X FLUX of MOMZ',
'kg/m/s2', &
477 dim_type=
'ZHXHY', fill_halo=.true.)
478 call file_history_in( qflx_momz(:,:,:,
ydir),
'SGS_YFLX_MOMZ',
'SGS Y FLUX of MOMZ',
'kg/m/s2', &
479 dim_type=
'ZHXYH', fill_halo=.true.)
481 call file_history_in( qflx_momx(:,:,:,
zdir),
'SGS_ZFLX_MOMX',
'SGS Z FLUX of MOMX',
'kg/m/s2', &
482 dim_type=
'ZHXHY', fill_halo=.true.)
483 call file_history_in( qflx_momx(:,:,:,
xdir),
'SGS_XFLX_MOMX',
'SGS X FLUX of MOMX',
'kg/m/s2', &
485 call file_history_in( qflx_momx(:,:,:,
ydir),
'SGS_YFLX_MOMX',
'SGS Y FLUX of MOMX',
'kg/m/s2', &
486 dim_type=
'ZXHYH', fill_halo=.true.)
488 call file_history_in( qflx_momy(:,:,:,
zdir),
'SGS_ZFLX_MOMY',
'SGS Z FLUX of MOMY',
'kg/m/s2', &
489 dim_type=
'ZHXYH', fill_halo=.true.)
490 call file_history_in( qflx_momy(:,:,:,
xdir),
'SGS_XFLX_MOMY',
'SGS X FLUX of MOMY',
'kg/m/s2', &
491 dim_type=
'ZXHYH', fill_halo=.true.)
492 call file_history_in( qflx_momy(:,:,:,
ydir),
'SGS_YFLX_MOMY',
'SGS Y FLUX of MOMY',
'kg/m/s2', &
495 call file_history_in( qflx_rhot(:,:,:,
zdir),
'SGS_ZFLX_RHOT',
'SGS Z FLUX of RHOT',
'K*kg/m2/s', &
496 dim_type=
'ZHXY', fill_halo=.true.)
497 call file_history_in( qflx_rhot(:,:,:,
xdir),
'SGS_XFLX_RHOT',
'SGS X FLUX of RHOT',
'K*kg/m2/s', &
498 dim_type=
'ZXHY', fill_halo=.true.)
499 call file_history_in( qflx_rhot(:,:,:,
ydir),
'SGS_YFLX_RHOT',
'SGS Y FLUX of RHOT',
'K*kg/m2/s', &
500 dim_type=
'ZXYH', fill_halo=.true.)
506 call file_history_in( qflx_rhoq(:,:,:,
zdir,iq), &
508 dim_type=
'ZHXY', fill_halo=.true.)
509 call file_history_in( qflx_rhoq(:,:,:,
xdir,iq), &
511 dim_type=
'ZXHY', fill_halo=.true.)
512 call file_history_in( qflx_rhoq(:,:,:,
ydir,iq), &
514 dim_type=
'ZXYH', fill_halo=.true.)
520 momz_t_tb(:,:,:),
'MOMZ_t_TB', &
524 momx_t_tb(:,:,:),
'MOMX_t_TB', &
528 momy_t_tb(:,:,:),
'MOMY_t_TB', &
532 rhot_t_tb(:,:,:),
'RHOT_t_TB', &
550 rhoq_t_tb(:,:,:,iq), trim(
tracer_name(iq))//
'_t_TB', &
567 momz_t(
k,i,j) = momz_t(
k,i,j) + momz_t_tb(
k,i,j)
568 momx_t(
k,i,j) = momx_t(
k,i,j) + momx_t_tb(
k,i,j)
569 momy_t(
k,i,j) = momy_t(
k,i,j) + momy_t_tb(
k,i,j)
570 rhot_t(
k,i,j) = rhot_t(
k,i,j) + rhot_t_tb(
k,i,j)
586 rhoq_t(
k,i,j,iq) = rhoq_t(
k,i,j,iq) + rhoq_t_tb(
k,i,j,iq)
596 if ( monit_west > 0 )
then
606 qflx_x(
k,j) = qflx_x(
k,j) + qflx_rhoq(
k,
is-1,j,
xdir,iq)
614 call monitor_put( monit_west, qflx_x(:,:) )
616 if ( monit_east > 0 )
then
626 qflx_x(
k,j) = qflx_x(
k,j) + qflx_rhoq(
k,
ie,j,
xdir,iq)
634 call monitor_put( monit_east, qflx_x(:,:) )
636 if ( monit_south > 0 )
then
646 qflx_y(
k,i) = qflx_y(
k,i) + qflx_rhoq(
k,i,
js-1,
ydir,iq)
654 call monitor_put( monit_south, qflx_y(:,:) )
656 if ( monit_north > 0 )
then
666 qflx_y(
k,i) = qflx_y(
k,i) + qflx_rhoq(
k,i,
je,
ydir,iq)
674 call monitor_put( monit_north, qflx_y(:,:) )
real(rp), dimension(:,:,:), pointer, public momz_av
real(dp), public time_dtsec_atmos_phy_tb
time interval of physics(turbulence ) [sec]
integer, public ke
end point of inner domain: z, local
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mu
subroutine, public prc_abort
Abort Process.
logical, public atmos_sw_phy_tb
module ATMOSPHERE / Physics Turbulence
real(rp), dimension(:,:,:), pointer, public momx_av
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdz
z-length of control volume [m]
real(rp), public atmos_grid_cartesc_real_totvolzxv
total volume (zxv, local) [m3]
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
real(rp), dimension(:,:,:), allocatable, target, public pott
real(rp), dimension(qa_max), public tracer_mass
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volwxy
control volume (wxy) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_momz_t
logical, public prc_has_s
real(rp), dimension(:,:,:,:), pointer, public qtrc_av
integer, public jblock
block size for cache blocking: y
logical, dimension(qa_max), public tracer_advc
real(rp), public atmos_grid_cartesc_real_totvolwxy
total volume (wxy, local) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_momx_t
module Atmosphere Grid CartesianC metirc
subroutine, public atmos_phy_tb_calc_tend_momx(MOMX_t_TB, QFLX_MOMX, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
real(rp), dimension(:,:,:), pointer, public rhot_av
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)
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdy
y-length of control volume [m]
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mv
subroutine, public atmos_phy_tb_smg_finalize
finalize
subroutine, public atmos_phy_tb_dns_setup(CDZ, CDX, CDY, CZ)
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdy
y-length of grid(j+1) to grid(j) [m]
subroutine, public atmos_phy_tb_dns_config(TYPE_TB, I_TKE_out)
Config.
module ATMOSPHERIC Surface Variables
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mw
subroutine, public atmos_phy_tb_d1980_config(TYPE_TB, I_TKE_out)
Config.
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdz
reciprocal of center-dz
real(rp), dimension(:,:,:), allocatable, target, public rhot
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzuy
control volume (zuy) [m3]
logical, public prc_has_n
subroutine, public atmos_phy_tb_d1980_finalize
finalize
logical, public prc_has_e
subroutine, public atmos_phy_tb_dns(qflx_sgs_MOMZ, qflx_sgs_MOMX, qflx_sgs_MOMY, qflx_sgs_rhot, qflx_sgs_rhoq, RHOQ_t, nu, Ri, Pr, MOMZ, MOMX, MOMY, POTT, DENS, QTRC, N2, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_Q, FZ, FDZ, RCDZ, RFDZ, CDX, FDX, CDY, FDY, GSQRT, J13G, J23G, J33G, MAPF, dt)
subroutine, public atmos_phy_tb_driver_calc_tendency(update_flag)
calclate tendency
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)
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_mapf
map factor
integer, parameter, public rp
integer, public ie
end point of inner domain: x, local
real(rp), dimension(:,:,:), allocatable, target, public dens
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzxv
control volume (zxv) [m3]
module atmosphere / grid / cartesC index
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_vol
control volume (zxy) [m3]
real(rp), dimension(:,:,:), allocatable, target, public momz
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_gsqrt
transformation metrics from Z to Xi, {G}^1/2
integer, parameter, public zdir
module Atmosphere / Physics Turbulence
real(rp), dimension(:,:,:), pointer, public momy_av
subroutine, public atmos_phy_tb_driver_tracer_setup
Tracer setup.
character(len=h_short), dimension(qa_max), public tracer_name
real(rp), dimension(:,:,:), allocatable, public momz_tp
real(rp), dimension(:,:,:), allocatable, target, public momx
integer, public is
start point of inner domain: x, local
module ATMOSPHERE / Physics Turbulence
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_j23g
(2,3) element of Jacobian matrix * {G}^1/2
subroutine, public monitor_reg(name, desc, unit, itemid, ndims, dim_type, is_tendency)
Search existing item, or matching check between requested and registered item.
real(rp), public atmos_grid_cartesc_real_totvolzuy
total volume (zuy, local) [m3]
real(rp), dimension(:,:,:), allocatable, target, public momy
subroutine, public atmos_phy_tb_driver_setup
Setup.
real(rp), dimension(:,:,:), allocatable, target, public atmos_phy_sf_sflx_qtrc
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdx
x-length of grid(i+1) to grid(i) [m]
subroutine, public atmos_phy_tb_calc_tend_phi(phi_t_TB, QFLX_phi, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
integer, parameter, public xdir
subroutine, public atmos_phy_tb_d1980_setup(CDZ, CDX, CDY, CZ)
Setup.
real(rp), dimension(:,:,:), pointer, public dens_av
integer, public ks
start point of inner domain: z, local
logical, public statistics_checktotal
calc&report variable totals to logfile?
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_momy_t
module ATMOSPHERE / Physics Turbulence
module ATMOSPHERIC Variables
real(rp), dimension(:,:,:), allocatable, public rhot_tp
subroutine, public atmos_phy_tb_smg_setup(FZ, CZ, CDX, CDY, MAPF, horizontal)
Setup.
integer, public js
start point of inner domain: y, local
integer, parameter, public ydir
real(rp), dimension(:,:,:), allocatable, public momy_tp
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_sh
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdz
reciprocal of face-dz
logical, public atmos_sw_phy_bl
real(rp), dimension(:,:,:), allocatable, public momx_tp
real(rp), public atmos_grid_cartesc_metric_j33g
(3,3) element of Jacobian matrix * {G}^1/2
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdx
x-length of control volume [m]
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_grid_cartesc_real_fz
geopotential height [m] (wxy)
real(rp), public atmos_grid_cartesc_real_totvol
total volume (zxy, local) [m3]
module atmosphere / grid / cartesC
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_tb_rhoq_t
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdz
z-length of grid(i+1) to grid(i) [m]
module ATMOSPHERE / Physics Turbulence
subroutine, public atmos_phy_tb_calc_tend_momz(MOMZ_t_TB, QFLX_MOMZ, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
module ATMOSPHERE / Physics Turbulence
logical, public prc_has_w
integer, public je
end point of inner domain: y, local
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_rhot_t
character(len=h_short), public atmos_phy_tb_type
subroutine, public atmos_phy_tb_smg(qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, qflx_sgs_rhot, qflx_sgs_rhoq, MOMZ_t, MOMX_t, MOMY_t, RHOT_t, RHOQ_t, Nu, Ri, Pr, MOMZ, MOMX, MOMY, POTT, DENS, QTRC, N2, FZ, FDZ, RCDZ, RFDZ, CDX, FDX, CDY, FDY, GSQRT, J13G, J23G, J33G, MAPF, dt)
subroutine, public atmos_phy_tb_driver_finalize
finalize