SCALE-RM
Functions/Subroutines
mod_atmos_phy_tb_driver Module Reference

module ATMOSPHERE / Physics Turbulence More...

Functions/Subroutines

subroutine, public atmos_phy_tb_driver_tracer_setup
 Tracer setup. More...
 
subroutine, public atmos_phy_tb_driver_setup
 Setup. More...
 
subroutine, public atmos_phy_tb_driver_calc_tendency (update_flag)
 calclate tendency More...
 

Detailed Description

module ATMOSPHERE / Physics Turbulence

Description
Sub-grid scale turbulence process
Author
Team SCALE
NAMELIST
  • No namelist group
History Output
namedescriptionunitvariable
SGS_XFLX_{TRACER_NAME} SGS X FLUX of {TRACER_NAME};
{TRACER_NAME} depends on the physics schemes, e.g., QV, QC, QR.
kg/m2/s QFLX_RHOQ
SGS_YFLX_{TRACER_NAME} SGS Y FLUX of {TRACER_NAME};
{TRACER_NAME} depends on the physics schemes, e.g., QV, QC, QR.
kg/m2/s QFLX_RHOQ
SGS_ZFLX_{TRACER_NAME} SGS Z FLUX of {TRACER_NAME};
{TRACER_NAME} depends on the physics schemes, e.g., QV, QC, QR.
kg/m2/s QFLX_RHOQ
MOMX_t_TB MOMX tendency (TB) kg/m2/s2 MOMX_t_TB
MOMY_t_TB MOMY tendency (TB) kg/m2/s2 MOMY_t_TB
MOMZ_t_TB MOMZ tendency (TB) kg/m2/s2 MOMZ_t_TB
NU eddy viscosity m2/s NU
Pr Prantle number NIL Pr
RHOT_t_TB RHOT tendency (TB) K.kg/m3/s RHOT_t_TB
Ri Richardson number NIL Ri
SGS_XFLX_MOMX SGS X FLUX of MOMX kg/m/s2 QFLX_MOMX
SGS_XFLX_MOMY SGS X FLUX of MOMY kg/m/s2 QFLX_MOMY
SGS_XFLX_MOMZ SGS X FLUX of MOMZ kg/m/s2 QFLX_MOMZ
SGS_XFLX_RHOT SGS X FLUX of RHOT K*kg/m2/s QFLX_RHOT
SGS_YFLX_MOMX SGS Y FLUX of MOMX kg/m/s2 QFLX_MOMX
SGS_YFLX_MOMY SGS Y FLUX of MOMY kg/m/s2 QFLX_MOMY
SGS_YFLX_MOMZ SGS Y FLUX of MOMZ kg/m/s2 QFLX_MOMZ
SGS_YFLX_RHOT SGS Y FLUX of RHOT K*kg/m2/s QFLX_RHOT
SGS_ZFLX_MOMX SGS Z FLUX of MOMX kg/m/s2 QFLX_MOMX
SGS_ZFLX_MOMY SGS Z FLUX of MOMY kg/m/s2 QFLX_MOMY
SGS_ZFLX_MOMZ SGS Z FLUX of MOMZ kg/m/s2 QFLX_MOMZ
SGS_ZFLX_RHOT SGS Z FLUX of RHOT K*kg/m2/s QFLX_RHOT
{TRACER_NAME}_t_TB tendency rho*{TRACER_NAME} in TB;
{TRACER_NAME} depends on the physics schemes, e.g., QV, QC, QR.
kg/m3/s RHOQ_t_TB

Function/Subroutine Documentation

◆ atmos_phy_tb_driver_tracer_setup()

subroutine, public mod_atmos_phy_tb_driver::atmos_phy_tb_driver_tracer_setup ( )

Tracer setup.

Definition at line 50 of file mod_atmos_phy_tb_driver.F90.

References scale_atmos_phy_tb_d1980::atmos_phy_tb_d1980_config(), scale_atmos_phy_tb_dns::atmos_phy_tb_dns_config(), mod_atmos_admin::atmos_phy_tb_type, mod_atmos_admin::atmos_sw_phy_tb, mod_atmos_phy_tb_vars::i_tke, and scale_prc::prc_abort().

Referenced by mod_atmos_driver::atmos_driver_tracer_setup().

50  use scale_prc, only: &
51  prc_abort
52  use scale_atmos_phy_tb_d1980, only: &
54  use scale_atmos_phy_tb_dns, only: &
56  use mod_atmos_admin, only: &
59  use mod_atmos_phy_tb_vars, only: &
60  i_tke
61  implicit none
62  !---------------------------------------------------------------------------
63 
64  if ( .not. atmos_sw_phy_tb ) return
65 
66  log_newline
67  log_info("ATMOS_PHY_TB_driver_tracer_setup",*) 'Setup'
68 
69  select case( atmos_phy_tb_type )
70  case( 'SMAGORINSKY' )
71  i_tke = -1
72  case( 'D1980' )
74  i_tke ) ! [OUT]
75  case( 'DNS' )
77  i_tke ) ! [OUT]
78  case('OFF')
79  ! do nothing
80  case default
81  log_error("ATMOS_PHY_TB_driver_tracer_setup",*) 'ATMOS_PHY_TB_TYPE is invalid: ', atmos_phy_tb_type
82  call prc_abort
83  end select
84 
85  return
module ATMOS admin
subroutine, public atmos_phy_tb_d1980_config(TYPE_TB, I_TKE_out)
Config.
logical, public atmos_sw_phy_tb
module ATMOSPHERE / Physics Turbulence
module PROCESS
Definition: scale_prc.F90:11
subroutine, public atmos_phy_tb_dns_config(TYPE_TB, I_TKE_out)
Config.
module ATMOSPHERE / Physics Turbulence
module Atmosphere / Physics Turbulence
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:338
character(len=h_short), public atmos_phy_tb_type
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_tb_driver_setup()

subroutine, public mod_atmos_phy_tb_driver::atmos_phy_tb_driver_setup ( )

Setup.

Definition at line 91 of file mod_atmos_phy_tb_driver.F90.

References scale_atmos_grid_cartesc::atmos_grid_cartesc_cdx, scale_atmos_grid_cartesc::atmos_grid_cartesc_cdy, scale_atmos_grid_cartesc::atmos_grid_cartesc_cdz, scale_atmos_grid_cartesc_metric::atmos_grid_cartesc_metric_mapf, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_cz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_fz, scale_atmos_phy_tb_d1980::atmos_phy_tb_d1980_setup(), scale_atmos_phy_tb_dns::atmos_phy_tb_dns_setup(), mod_atmos_phy_tb_vars::atmos_phy_tb_momz_t, scale_atmos_phy_tb_smg::atmos_phy_tb_smg_setup(), mod_atmos_admin::atmos_phy_tb_type, mod_atmos_admin::atmos_sw_phy_tb, scale_atmos_grid_cartesc_index::i_xy, scale_atmos_grid_cartesc_index::ie, scale_atmos_grid_cartesc_index::is, scale_atmos_grid_cartesc_index::je, scale_atmos_grid_cartesc_index::js, scale_atmos_grid_cartesc_index::ke, and scale_atmos_grid_cartesc_index::ks.

Referenced by mod_atmos_driver::atmos_driver_setup().

91  use scale_atmos_grid_cartesc, only: &
92  cdz => atmos_grid_cartesc_cdz, &
93  cdx => atmos_grid_cartesc_cdx, &
96  real_cz => atmos_grid_cartesc_real_cz, &
100  use scale_atmos_phy_tb_smg, only: &
102  use scale_atmos_phy_tb_d1980, only: &
104  use scale_atmos_phy_tb_dns, only: &
106  use mod_atmos_admin, only: &
109  use mod_atmos_phy_tb_vars, only: &
110  momz_t_tb => atmos_phy_tb_momz_t
111  implicit none
112 
113  integer :: i, j
114  !---------------------------------------------------------------------------
115 
116  if ( .not. atmos_sw_phy_tb ) return
117 
118  log_newline
119  log_info("ATMOS_PHY_TB_driver_setup",*) 'Setup'
120 
121  ! initialize
122  !$omp parallel do
123  do j = js, je
124  do i = is, ie
125  momz_t_tb(ks-1,i,j) = 0.0_rp
126  momz_t_tb(ke ,i,j) = 0.0_rp
127  enddo
128  enddo
129 
130  ! setup library component
131  select case( atmos_phy_tb_type )
132  case( 'SMAGORINSKY' )
133  call atmos_phy_tb_smg_setup( real_fz, real_cz, cdx, cdy, mapf(:,:,:,i_xy) ) ! [IN]
134  case( 'D1980' )
135  call atmos_phy_tb_d1980_setup( cdz, cdx, cdy, real_cz ) ! [IN]
136  case( 'DNS' )
137  call atmos_phy_tb_dns_setup( cdz, cdx, cdy, real_cz ) ! [IN]
138  end select
139 
140  return
module ATMOS admin
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdy
y-length of control volume [m]
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdx
x-length of control volume [m]
subroutine, public atmos_phy_tb_smg_setup(FZ, CZ, CDX, CDY, MAPF)
Setup.
module Atmosphere Grid CartesianC metirc
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_fz
geopotential height [m] (wxy)
logical, public atmos_sw_phy_tb
module ATMOSPHERE / Physics Turbulence
subroutine, public atmos_phy_tb_dns_setup(CDZ, CDX, CDY, CZ)
module ATMOSPHERE / Physics Turbulence
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdz
z-length of control volume [m]
module atmosphere / grid / cartesC
module ATMOSPHERE / Physics Turbulence
module Atmosphere / Physics Turbulence
character(len=h_short), public atmos_phy_tb_type
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_mapf
map factor
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
subroutine, public atmos_phy_tb_d1980_setup(CDZ, CDX, CDY, CZ)
Setup.
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_momz_t
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_tb_driver_calc_tendency()

subroutine, public mod_atmos_phy_tb_driver::atmos_phy_tb_driver_calc_tendency ( logical, intent(in)  update_flag)

calclate tendency

Definition at line 146 of file mod_atmos_phy_tb_driver.F90.

References scale_atmos_grid_cartesc::atmos_grid_cartesc_cdx, scale_atmos_grid_cartesc::atmos_grid_cartesc_cdy, scale_atmos_grid_cartesc::atmos_grid_cartesc_fdx, scale_atmos_grid_cartesc::atmos_grid_cartesc_fdy, scale_atmos_grid_cartesc::atmos_grid_cartesc_fdz, scale_atmos_grid_cartesc_metric::atmos_grid_cartesc_metric_gsqrt, scale_atmos_grid_cartesc_metric::atmos_grid_cartesc_metric_j13g, scale_atmos_grid_cartesc_metric::atmos_grid_cartesc_metric_j23g, scale_atmos_grid_cartesc_metric::atmos_grid_cartesc_metric_j33g, scale_atmos_grid_cartesc_metric::atmos_grid_cartesc_metric_mapf, scale_atmos_grid_cartesc::atmos_grid_cartesc_rcdz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_fz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_totvol, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_totvolwxy, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_totvolzuy, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_totvolzxv, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_vol, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_volwxy, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_volzuy, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_volzxv, scale_atmos_grid_cartesc::atmos_grid_cartesc_rfdz, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_mu, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_mv, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_mw, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_qtrc, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_sh, scale_atmos_phy_tb_common::atmos_phy_tb_calc_tend_momx(), scale_atmos_phy_tb_common::atmos_phy_tb_calc_tend_momy(), scale_atmos_phy_tb_common::atmos_phy_tb_calc_tend_momz(), scale_atmos_phy_tb_common::atmos_phy_tb_calc_tend_phi(), scale_atmos_phy_tb_d1980::atmos_phy_tb_d1980(), scale_atmos_phy_tb_dns::atmos_phy_tb_dns(), mod_atmos_phy_tb_vars::atmos_phy_tb_momx_t, mod_atmos_phy_tb_vars::atmos_phy_tb_momy_t, mod_atmos_phy_tb_vars::atmos_phy_tb_momz_t, mod_atmos_phy_tb_vars::atmos_phy_tb_rhoq_t, mod_atmos_phy_tb_vars::atmos_phy_tb_rhot_t, scale_atmos_phy_tb_smg::atmos_phy_tb_smg(), mod_atmos_admin::atmos_phy_tb_type, mod_atmos_vars::dens, mod_atmos_vars::dens_av, mod_atmos_phy_tb_vars::i_tke, scale_atmos_grid_cartesc_index::ia, scale_atmos_grid_cartesc_index::iblock, scale_atmos_grid_cartesc_index::ie, scale_atmos_grid_cartesc_index::is, scale_atmos_grid_cartesc_index::ja, scale_atmos_grid_cartesc_index::jblock, scale_atmos_grid_cartesc_index::je, scale_atmos_grid_cartesc_index::js, scale_atmos_grid_cartesc_index::ka, scale_atmos_grid_cartesc_index::ke, scale_atmos_grid_cartesc_index::ks, mod_atmos_vars::momx, mod_atmos_vars::momx_av, mod_atmos_vars::momx_tp, mod_atmos_vars::momy, mod_atmos_vars::momy_av, mod_atmos_vars::momy_tp, mod_atmos_vars::momz, mod_atmos_vars::momz_av, mod_atmos_vars::momz_tp, mod_atmos_vars::pott, scale_tracer::qa, mod_atmos_vars::qtrc, mod_atmos_vars::qtrc_av, mod_atmos_vars::rhoq_tp, mod_atmos_vars::rhot, mod_atmos_vars::rhot_av, mod_atmos_vars::rhot_tp, scale_statistics::statistics_checktotal, scale_time::time_dtsec_atmos_phy_tb, scale_tracer::tracer_advc, scale_tracer::tracer_name, scale_atmos_grid_cartesc_index::xdir, scale_atmos_grid_cartesc_index::ydir, and scale_atmos_grid_cartesc_index::zdir.

Referenced by mod_atmos_driver::atmos_driver_calc_tendency().

146  use scale_statistics, only: &
148  statistics_total
149  use scale_atmos_grid_cartesc, only: &
150  fdz => atmos_grid_cartesc_fdz, &
151  rcdz => atmos_grid_cartesc_rcdz, &
152  rfdz => atmos_grid_cartesc_rfdz, &
153  cdx => atmos_grid_cartesc_cdx, &
154  fdx => atmos_grid_cartesc_fdx, &
155  cdy => atmos_grid_cartesc_cdy, &
157  use scale_atmos_grid_cartesc_real, only: &
173  use scale_file_history, only: &
174  file_history_in
175  use scale_time, only: &
176  dt_tb => time_dtsec_atmos_phy_tb
177  use scale_atmos_phy_tb_smg, only: &
179  use scale_atmos_phy_tb_d1980, only: &
181  use scale_atmos_phy_tb_dns, only: &
183  use scale_atmos_phy_tb_common, only: &
184  calc_tend_momz => atmos_phy_tb_calc_tend_momz, &
185  calc_tend_momx => atmos_phy_tb_calc_tend_momx, &
186  calc_tend_momy => atmos_phy_tb_calc_tend_momy, &
187  calc_tend_phi => atmos_phy_tb_calc_tend_phi
188  use mod_atmos_admin, only: &
190  use mod_atmos_vars, only: &
191  atmos_vars_get_diagnostic, &
192  dens => dens_av, &
193  momz => momz_av, &
194  momx => momx_av, &
195  momy => momy_av, &
196  rhot => rhot_av, &
197  pott, &
198  qtrc => qtrc_av, &
199  momz_t => momz_tp, &
200  momx_t => momx_tp, &
201  momy_t => momy_tp, &
202  rhot_t => rhot_tp, &
203  rhoq_t => rhoq_tp
204  use mod_atmos_phy_tb_vars, only: &
205  i_tke, &
206  momz_t_tb => atmos_phy_tb_momz_t, &
207  momx_t_tb => atmos_phy_tb_momx_t, &
208  momy_t_tb => atmos_phy_tb_momy_t, &
209  rhot_t_tb => atmos_phy_tb_rhot_t, &
210  rhoq_t_tb => atmos_phy_tb_rhoq_t
211  use mod_atmos_phy_sf_vars, only: &
212  sflx_mw => atmos_phy_sf_sflx_mw, &
213  sflx_mu => atmos_phy_sf_sflx_mu, &
214  sflx_mv => atmos_phy_sf_sflx_mv, &
215  sflx_sh => atmos_phy_sf_sflx_sh, &
216  sflx_q => atmos_phy_sf_sflx_qtrc
217  implicit none
218 
219  logical, intent(in) :: update_flag
220 
221  ! eddy viscosity/diffusion flux
222  real(RP) :: qflx_momz(ka,ia,ja,3)
223  real(RP) :: qflx_momx(ka,ia,ja,3)
224  real(RP) :: qflx_momy(ka,ia,ja,3)
225  real(RP) :: qflx_rhot(ka,ia,ja,3)
226  real(RP) :: qflx_rhoq(ka,ia,ja,3,qa)
227 
228  real(RP) :: nu(ka,ia,ja) ! eddy viscosity
229  real(RP) :: ri(ka,ia,ja) ! Richardson number
230  real(RP) :: pr(ka,ia,ja) ! Prandtl number
231 
232  real(RP) :: n2(ka,ia,ja)
233 
234  real(RP) :: tend(ka,ia,ja)
235 
236  integer :: jjs, jje
237  integer :: iis, iie
238 
239  integer :: k, i, j, iq
240  !---------------------------------------------------------------------------
241 
242  if ( update_flag ) then
243 
244  call atmos_vars_get_diagnostic( "N2", n2 )
245 
246  select case( atmos_phy_tb_type )
247  case( 'SMAGORINSKY' )
248  call atmos_phy_tb_smg( qflx_momz, qflx_momx, qflx_momy, & ! [OUT]
249  qflx_rhot, qflx_rhoq, & ! [OUT]
250  momz_t_tb, momx_t_tb, momy_t_tb, & ! [OUT]
251  rhot_t_tb, rhoq_t_tb, & ! [OUT]
252  nu, ri, pr, & ! [OUT]
253  momz, momx, momy, pott, dens, qtrc, n2, & ! [IN]
254  fz, fdz, rcdz, rfdz, cdx, fdx, cdy, fdy, & ! [IN]
255  gsqrt, j13g, j23g, j33g, mapf, & ! [IN]
256  dt_tb ) ! [IN]
257  case( 'D1980' )
258  momz_t_tb(:,:,:) = 0.0_rp
259  momx_t_tb(:,:,:) = 0.0_rp
260  momy_t_tb(:,:,:) = 0.0_rp
261  rhot_t_tb(:,:,:) = 0.0_rp
262  call atmos_phy_tb_d1980( qflx_momz, qflx_momx, qflx_momy, & ! [OUT]
263  qflx_rhot, qflx_rhoq, & ! [OUT]
264  rhoq_t_tb, & ! [OUT]
265  nu, ri, pr, & ! [OUT]
266  momz, momx, momy, rhot, dens, qtrc, n2, & ! [IN]
267  sflx_mw, sflx_mu, sflx_mv, & ! [IN]
268  sflx_sh, sflx_q, & ! [IN]
269  gsqrt, j13g, j23g, j33g, mapf, & ! [IN]
270  dt_tb ) ! [IN]
271  case( 'DNS' )
272  momz_t_tb(:,:,:) = 0.0_rp
273  momx_t_tb(:,:,:) = 0.0_rp
274  momy_t_tb(:,:,:) = 0.0_rp
275  rhot_t_tb(:,:,:) = 0.0_rp
276  call atmos_phy_tb_dns( qflx_momz, qflx_momx, qflx_momy, & ! [OUT]
277  qflx_rhot, qflx_rhoq, & ! [OUT]
278  rhoq_t_tb, & ! [OUT]
279  nu, ri, pr, & ! [OUT]
280  momz, momx, momy, rhot, dens, qtrc, n2, & ! [IN]
281  sflx_mw, sflx_mu, sflx_mv, & ! [IN]
282  sflx_sh, sflx_q, & ! [IN]
283  gsqrt, j13g, j23g, j33g, mapf, & ! [IN]
284  dt_tb ) ! [IN]
285  end select
286 
287 
288  do jjs = js, je, jblock
289  jje = jjs+jblock-1
290  do iis = is, ie, iblock
291  iie = iis+iblock-1
292 
293  call calc_tend_momz( tend(:,:,:), & ! (out)
294  qflx_momz, & ! (in)
295  gsqrt, j13g, j23g, j33g, mapf, & ! (in)
296  iis, iie, jjs, jje ) ! (in)
297  !$omp parallel do
298  do j = jjs, jje
299  do i = iis, iie
300  do k = ks, ke-1
301  momz_t_tb(k,i,j) = momz_t_tb(k,i,j) + tend(k,i,j)
302  end do
303  end do
304  end do
305 
306  call calc_tend_momx( tend(:,:,:), & ! (out)
307  qflx_momx, & ! (in)
308  gsqrt, j13g, j23g, j33g, mapf, & ! (in)
309  iis, iie, jjs, jje ) ! (in)
310  !$omp parallel do
311  do j = jjs, jje
312  do i = iis, iie
313  do k = ks, ke
314  momx_t_tb(k,i,j) = momx_t_tb(k,i,j) + tend(k,i,j)
315  end do
316  end do
317  end do
318 
319  call calc_tend_momy( tend(:,:,:), & ! (out)
320  qflx_momy, & ! (in)
321  gsqrt, j13g, j23g, j33g, mapf, & ! (in)
322  iis, iie, jjs, jje ) ! (in)
323  !$omp parallel do
324  do j = jjs, jje
325  do i = iis, iie
326  do k = ks, ke
327  momy_t_tb(k,i,j) = momy_t_tb(k,i,j) + tend(k,i,j)
328  end do
329  end do
330  end do
331 
332  call calc_tend_phi ( tend(:,:,:), & ! (out)
333  qflx_rhot, & ! (in)
334  gsqrt, j13g, j23g, j33g, mapf, & ! (in)
335  iis, iie, jjs, jje ) ! (in)
336  !$omp parallel do
337  do j = jjs, jje
338  do i = iis, iie
339  do k = ks, ke
340  rhot_t_tb(k,i,j) = rhot_t_tb(k,i,j) + tend(k,i,j)
341  end do
342  end do
343  end do
344 
345  do iq = 1, qa
346  if ( iq == i_tke .or. .not. tracer_advc(iq) ) cycle
347 
348  call calc_tend_phi( tend(:,:,:), & ! (out)
349  qflx_rhoq(:,:,:,:,iq), & ! (in)
350  gsqrt, j13g, j23g, j33g, mapf, & ! (in)
351  iis, iie, jjs, jje ) ! (in)
352 
353  !$omp parallel do
354  do j = jjs, jje
355  do i = iis, iie
356  do k = ks, ke
357  rhoq_t_tb(k,i,j,iq) = rhoq_t_tb(k,i,j,iq) + tend(k,i,j)
358  end do
359  end do
360  end do
361 
362  end do
363 
364  end do
365  end do
366 
367 
368  call file_history_in( nu(:,:,:), 'NU', 'eddy viscosity', 'm2/s' , fill_halo=.true. )
369  call file_history_in( ri(:,:,:), 'Ri', 'Richardson number', 'NIL' , fill_halo=.true. )
370  call file_history_in( pr(:,:,:), 'Pr', 'Prantle number', 'NIL' , fill_halo=.true. )
371 
372  call file_history_in( momz_t_tb(:,:,:), 'MOMZ_t_TB', 'MOMZ tendency (TB)', 'kg/m2/s2', fill_halo=.true. )
373  call file_history_in( momx_t_tb(:,:,:), 'MOMX_t_TB', 'MOMX tendency (TB)', 'kg/m2/s2', fill_halo=.true. )
374  call file_history_in( momy_t_tb(:,:,:), 'MOMY_t_TB', 'MOMY tendency (TB)', 'kg/m2/s2', fill_halo=.true. )
375  call file_history_in( rhot_t_tb(:,:,:), 'RHOT_t_TB', 'RHOT tendency (TB)', 'K.kg/m3/s', fill_halo=.true. )
376 
377  do iq = 1, qa
378  call file_history_in( rhoq_t_tb(:,:,:,iq), trim(tracer_name(iq))//'_t_TB', &
379  'tendency rho*'//trim(tracer_name(iq))//' in TB', 'kg/m3/s', fill_halo=.true. )
380  enddo
381 
382  call file_history_in( qflx_momz(:,:,:,zdir), 'SGS_ZFLX_MOMZ', 'SGS Z FLUX of MOMZ', 'kg/m/s2', &
383  fill_halo=.true.)
384  call file_history_in( qflx_momz(:,:,:,xdir), 'SGS_XFLX_MOMZ', 'SGS X FLUX of MOMZ', 'kg/m/s2', &
385  dim_type='ZHXHY', fill_halo=.true.)
386  call file_history_in( qflx_momz(:,:,:,ydir), 'SGS_YFLX_MOMZ', 'SGS Y FLUX of MOMZ', 'kg/m/s2', &
387  dim_type='ZHXYH', fill_halo=.true.)
388 
389  call file_history_in( qflx_momx(:,:,:,zdir), 'SGS_ZFLX_MOMX', 'SGS Z FLUX of MOMX', 'kg/m/s2', &
390  dim_type='ZHXHY', fill_halo=.true.)
391  call file_history_in( qflx_momx(:,:,:,xdir), 'SGS_XFLX_MOMX', 'SGS X FLUX of MOMX', 'kg/m/s2', &
392  fill_halo=.true.)
393  call file_history_in( qflx_momx(:,:,:,ydir), 'SGS_YFLX_MOMX', 'SGS Y FLUX of MOMX', 'kg/m/s2', &
394  dim_type='ZXHYH', fill_halo=.true.)
395 
396  call file_history_in( qflx_momy(:,:,:,zdir), 'SGS_ZFLX_MOMY', 'SGS Z FLUX of MOMY', 'kg/m/s2', &
397  dim_type='ZHXYH', fill_halo=.true.)
398  call file_history_in( qflx_momy(:,:,:,xdir), 'SGS_XFLX_MOMY', 'SGS X FLUX of MOMY', 'kg/m/s2', &
399  dim_type='ZXHYH', fill_halo=.true.)
400  call file_history_in( qflx_momy(:,:,:,ydir), 'SGS_YFLX_MOMY', 'SGS Y FLUX of MOMY', 'kg/m/s2', &
401  fill_halo=.true.)
402 
403  call file_history_in( qflx_rhot(:,:,:,zdir), 'SGS_ZFLX_RHOT', 'SGS Z FLUX of RHOT', 'K*kg/m2/s', &
404  dim_type='ZHXY', fill_halo=.true.)
405  call file_history_in( qflx_rhot(:,:,:,xdir), 'SGS_XFLX_RHOT', 'SGS X FLUX of RHOT', 'K*kg/m2/s', &
406  dim_type='ZXHY', fill_halo=.true.)
407  call file_history_in( qflx_rhot(:,:,:,ydir), 'SGS_YFLX_RHOT', 'SGS Y FLUX of RHOT', 'K*kg/m2/s', &
408  dim_type='ZXYH', fill_halo=.true.)
409 
410 
411  do iq = 1, qa
412  if ( iq == i_tke .or. .not. tracer_advc(iq) ) cycle
413 
414  call file_history_in( qflx_rhoq(:,:,:,zdir,iq), &
415  'SGS_ZFLX_'//trim(tracer_name(iq)), 'SGS Z FLUX of '//trim(tracer_name(iq)), 'kg/m2/s', &
416  dim_type='ZHXY', fill_halo=.true.)
417  call file_history_in( qflx_rhoq(:,:,:,xdir,iq), &
418  'SGS_XFLX_'//trim(tracer_name(iq)), 'SGS X FLUX of '//trim(tracer_name(iq)), 'kg/m2/s', &
419  dim_type='ZXHY', fill_halo=.true.)
420  call file_history_in( qflx_rhoq(:,:,:,ydir,iq), &
421  'SGS_YFLX_'//trim(tracer_name(iq)), 'SGS Y FLUX of '//trim(tracer_name(iq)), 'kg/m2/s', &
422  dim_type='ZXYH', fill_halo=.true.)
423  end do
424 
425  if ( statistics_checktotal ) then
426  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
427  momz_t_tb(:,:,:), 'MOMZ_t_TB', &
430  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
431  momx_t_tb(:,:,:), 'MOMX_t_TB', &
434  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
435  momy_t_tb(:,:,:), 'MOMY_t_TB', &
438  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
439  rhot_t_tb(:,:,:), 'RHOT_t_TB', &
442  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
443  nu(:,:,:), 'Nu', &
446  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
447  ri(:,:,:), 'Ri', &
450  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
451  pr(:,:,:), 'Pr', &
454 
455  do iq = 1, qa
456  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
457  rhoq_t_tb(:,:,:,iq), trim(tracer_name(iq))//'_t_TB', &
460  enddo
461  endif
462 
463  endif
464 
465  !$omp parallel do default(none) private(i,j,k) OMP_SCHEDULE_ collapse(2) &
466  !$omp shared(JS,JE,IS,IE,KS,KE,MOMZ_t,MOMZ_t_TB,MOMX_t,MOMX_t_TB,MOMY_t,MOMY_t_TB,RHOT_t,RHOT_t_TB)
467  do j = js, je
468  do i = is, ie
469  do k = ks, ke
470  momz_t(k,i,j) = momz_t(k,i,j) + momz_t_tb(k,i,j)
471  momx_t(k,i,j) = momx_t(k,i,j) + momx_t_tb(k,i,j)
472  momy_t(k,i,j) = momy_t(k,i,j) + momy_t_tb(k,i,j)
473  rhot_t(k,i,j) = rhot_t(k,i,j) + rhot_t_tb(k,i,j)
474  enddo
475  enddo
476  enddo
477 
478  do iq = 1, qa
479 
480  if ( .not. ( iq == i_tke .or. tracer_advc(iq) ) ) cycle
481 
482  !$omp parallel do private(i,j,k) OMP_SCHEDULE_ collapse(2)
483  do j = js, je
484  do i = is, ie
485  do k = ks, ke
486  rhoq_t(k,i,j,iq) = rhoq_t(k,i,j,iq) + rhoq_t_tb(k,i,j,iq)
487  enddo
488  enddo
489  enddo
490 
491  enddo
492 
493  return
module ATMOS admin
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, target, public momz
subroutine, public atmos_phy_tb_calc_tend_momz(MOMZ_t_TB, QFLX_MOMZ, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_momx_t
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdx
x-length of control volume [m]
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_rhot_t
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_phy_sf_sflx_mw
real(rp), dimension(:,:,:), allocatable, target, public rhot
real(rp), dimension(:,:,:), allocatable, public momy_tp
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, 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_calc_tend_momy(MOMY_t_TB, QFLX_MOMY, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
module Atmosphere Grid CartesianC metirc
module ATMOSPHERIC Variables
real(rp), dimension(:,:,:,:), pointer, public qtrc_av
real(rp), dimension(:,:,:), allocatable, target, public momx
real(rp), public atmos_grid_cartesc_real_totvolzxv
total volume (zxv, local) [m3]
real(rp), dimension(:,:,:), allocatable, public rhot_tp
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_vol
control volume (zxy) [m3]
real(rp), public atmos_grid_cartesc_real_totvol
total volume (zxy, local) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_fz
geopotential height [m] (wxy)
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzxv
control volume (zxv) [m3]
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_phy_sf_sflx_mv
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdy
y-length of grid(j+1) to grid(j) [m]
logical, public statistics_checktotal
calc&report variable totals to logfile?
real(rp), public atmos_grid_cartesc_real_totvolzuy
total volume (zuy, local) [m3]
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdz
reciprocal of face-dz
subroutine, public atmos_phy_tb_calc_tend_phi(phi_t_TB, QFLX_phi, GSQRT, J13G, J23G, J33G, MAPF, IIS, IIE, JJS, JJE)
module ATMOSPHERIC Surface Variables
real(rp), dimension(:,:,:), pointer, public momx_av
module ATMOSPHERE / Physics Turbulence
real(rp), public atmos_grid_cartesc_metric_j33g
(3,3) element of Jacobian matrix * {G}^1/2
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(:), allocatable, public atmos_grid_cartesc_rcdz
reciprocal of center-dz
module ATMOSPHERE / Physics Turbulence
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdx
x-length of grid(i+1) to grid(i) [m]
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volwxy
control volume (wxy) [m3]
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
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)
module TIME
Definition: scale_time.F90:16
real(rp), dimension(:,:,:), allocatable, target, public atmos_phy_sf_sflx_qtrc
module atmosphere / grid / cartesC
module ATMOSPHERE / Physics Turbulence
real(dp), public time_dtsec_atmos_phy_tb
time interval of physics(turbulence ) [sec]
Definition: scale_time.F90:46
real(rp), dimension(:,:,:), allocatable, target, public pott
module Atmosphere / Physics Turbulence
real(rp), dimension(:,:,:), pointer, public dens_av
character(len=h_short), public atmos_phy_tb_type
module ATMOSPHERE / Physics Turbulence
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_momy_t
real(rp), public atmos_grid_cartesc_real_totvolwxy
total volume (wxy, local) [m3]
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, public momz_tp
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_sh
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_j13g
(1,3) element of Jacobian matrix * {G}^1/2
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_tb_rhoq_t
real(rp), dimension(:,:,:), pointer, public momz_av
module Statistics
real(rp), dimension(:,:,:), pointer, public rhot_av
real(rp), dimension(:,:,:), pointer, public momy_av
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mu
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzuy
control volume (zuy) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_phy_tb_momz_t
module file_history
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
Here is the call graph for this function:
Here is the caller graph for this function: