SCALE-RM
Data Types | Functions/Subroutines | Variables
scale_atmos_phy_tb Module Reference

module ATMOSPHERE / Physics Turbulence More...

Functions/Subroutines

subroutine, public atmos_phy_tb_setup (TB_TYPE, CDZ, CDX, CDY, CZ)
 

Variables

procedure(tb), pointer, public atmos_phy_tb => NULL()
 

Detailed Description

module ATMOSPHERE / Physics Turbulence

Description
Sub-grid scale turbulence process
Author
Team SCALE
History
  • 2013-12-05 (S.Nishizawa) [new]
  • 2014-03-30 (A.Noda) [mod] add DNS

Function/Subroutine Documentation

◆ atmos_phy_tb_setup()

subroutine, public scale_atmos_phy_tb::atmos_phy_tb_setup ( character(len=*), intent(in)  TB_TYPE,
real(rp), dimension(ka), intent(in)  CDZ,
real(rp), dimension(ia), intent(in)  CDX,
real(rp), dimension(ja), intent(in)  CDY,
real(rp), dimension (ka,ia,ja), intent(in)  CZ 
)

Definition at line 103 of file scale_atmos_phy_tb.F90.

References atmos_phy_tb, scale_atmos_phy_tb_d1980::atmos_phy_tb_d1980(), scale_atmos_phy_tb_d1980::atmos_phy_tb_d1980_setup(), scale_atmos_phy_tb_dns::atmos_phy_tb_dns(), scale_atmos_phy_tb_dns::atmos_phy_tb_dns_setup(), scale_atmos_phy_tb_dummy::atmos_phy_tb_dummy(), scale_atmos_phy_tb_dummy::atmos_phy_tb_dummy_setup(), scale_atmos_phy_tb_hybrid::atmos_phy_tb_hybrid(), scale_atmos_phy_tb_hybrid::atmos_phy_tb_hybrid_setup(), scale_atmos_phy_tb_mynn::atmos_phy_tb_mynn(), scale_atmos_phy_tb_mynn::atmos_phy_tb_mynn_setup(), scale_atmos_phy_tb_smg::atmos_phy_tb_smg(), scale_atmos_phy_tb_smg::atmos_phy_tb_smg_setup(), and scale_process::prc_mpistop().

Referenced by mod_atmos_phy_tb_driver::atmos_phy_tb_driver_setup().

103  use scale_process, only: &
105 #define EXTM(pre, name, post) pre ## name ## post
106 #define NAME(pre, name, post) EXTM(pre, name, post)
107 #ifdef TB
108  use name(scale_atmos_phy_tb_, tb,), only: &
109  name(atmos_phy_tb_, tb, _setup), &
110  name(atmos_phy_tb_, tb,)
111 #else
112  use scale_atmos_phy_tb_smg, only: &
115  use scale_atmos_phy_tb_d1980, only: &
118  use scale_atmos_phy_tb_dns, only: &
121  use scale_atmos_phy_tb_mynn, only: &
124  use scale_atmos_phy_tb_hybrid, only: &
127  use scale_atmos_phy_tb_dummy, only: &
130 #endif
131  implicit none
132 
133  character(len=*), intent(in) :: tb_type
134 
135  real(RP), intent(in) :: cdz(ka)
136  real(RP), intent(in) :: cdx(ia)
137  real(RP), intent(in) :: cdy(ja)
138  real(RP), intent(in) :: cz (ka,ia,ja)
139  !---------------------------------------------------------------------------
140 
141 #ifdef TB
142  call name(atmos_phy_tb_, tb, _setup)( &
143  tb_type, &
144  cdz, cdx, cdy, &
145  cz )
146  atmos_phy_tb => name(atmos_phy_tb_, tb, )
147 #else
148  select case( tb_type )
149  case ( 'SMAGORINSKY' )
150  call atmos_phy_tb_smg_setup( &
151  tb_type, &
152  cdz, cdx, cdy, &
153  cz )
155 
156  case ( 'D1980' )
158  tb_type, &
159  cdz, cdx, cdy, &
160  cz )
162 
163  case ( 'DNS' )
164  call atmos_phy_tb_dns_setup( &
165  tb_type, &
166  cdz, cdx, cdy, &
167  cz )
169 
170  case ( 'MYNN' )
172  tb_type, &
173  cdz, cdx, cdy, &
174  cz )
176 
177  case ('HYBRID')
179  tb_type, &
180  cdz, cdx, cdy, &
181  cz )
183 
184  case ('OFF')
185 
186  ! do nothing
187 
188  case default
189 
190  write(*,*) 'xxx ATMOS_PHY_TB_TYPE is invalid'
191  call prc_mpistop
192 
193  end select
194 #endif
195 
196  return
module ATMOSPHERE / Physics Turbulence
subroutine, public prc_mpistop
Abort MPI.
subroutine, public atmos_phy_tb_d1980_setup(TYPE_TB, CDZ, CDX, CDY, CZ)
procedure(tb), pointer, public atmos_phy_tb
subroutine, public atmos_phy_tb_mynn(qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, qflx_sgs_rhot, qflx_sgs_rhoq, tke, tke_t, Nu, Ri, Pr, N2, MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_QV, GSQRT, J13G, J23G, J33G, MAPF, dt)
subroutine, public atmos_phy_tb_d1980(qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, qflx_sgs_rhot, qflx_sgs_rhoq, tke, tke_t, Km, Ri, Pr, N2, MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_QV, GSQRT, J13G, J23G, J33G, MAPF, dt)
subroutine, public atmos_phy_tb_dns(qflx_sgs_MOMZ, qflx_sgs_MOMX, qflx_sgs_MOMY, qflx_sgs_rhot, qflx_sgs_rhoq, tke, tke_t, nu, Ri, Pr, N2, MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_QV, GSQRT, J13G, J23G, J33G, MAPF, dt)
subroutine, public atmos_phy_tb_mynn_setup(TYPE_TB, CDZ, CDX, CDY, CZ)
module ATMOSPHERE / Physics Turbulence
integer, public ia
of x whole cells (local, with HALO)
module ATMOSPHERE / Physics Turbulence
integer, public ka
of z whole cells (local, with HALO)
subroutine, public atmos_phy_tb_dns_setup(TYPE_TB, CDZ, CDX, CDY, CZ)
subroutine, public atmos_phy_tb_smg(qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, qflx_sgs_rhot, qflx_sgs_rhoq, tke, tke_t, nu, Ri, Pr, N2, MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_QV, GSQRT, J13G, J23G, J33G, MAPF, dt)
subroutine, public atmos_phy_tb_smg_setup(TYPE_TB, CDZ, CDX, CDY, CZ)
subroutine, public atmos_phy_tb_dummy_setup(TYPE_TB, CDZ, CDX, CDY, CZ)
module ATMOSPHERE / Physics Turbulence
module PROCESS
subroutine, public atmos_phy_tb_hybrid_setup(TB_TYPE, CDZ, CDX, CDY, CZ)
module ATMOSPHERE / Physics Turbulence
subroutine, public atmos_phy_tb_hybrid(qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, qflx_sgs_rhot, qflx_sgs_rhoq, tke, tke_t, Nu, Ri, Pr, N2, MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_QV, GSQRT, J13G, J23G, J33G, MAPF, dt)
module ATMOSPHERE / Physics Turbulence
subroutine, public atmos_phy_tb_dummy(qflx_sgs_momz, qflx_sgs_momx, qflx_sgs_momy, qflx_sgs_rhot, qflx_sgs_rhoq, tke, tke_t, nu_C, Ri, Pr, N2, MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, sflx_mw, sflx_mu, sflx_mv, sflx_sh, sflx_qv, GSQRT, J13G, J23G, J33G, MAPF, dt)
integer, public ja
of y whole cells (local, with HALO)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ atmos_phy_tb

procedure(tb), pointer, public scale_atmos_phy_tb::atmos_phy_tb => NULL()

Definition at line 93 of file scale_atmos_phy_tb.F90.

Referenced by mod_atmos_phy_tb_driver::atmos_phy_tb_driver(), and atmos_phy_tb_setup().

93  procedure(tb), pointer :: atmos_phy_tb => null()
procedure(tb), pointer, public atmos_phy_tb