53 real(RP),
private :: atmos_phy_tb_dns_nu = 1.512e-5_rp
55 real(RP),
private :: atmos_phy_tb_dns_mu = 1.512e-5_rp
68 character(len=*),
intent(in) :: TYPE_TB
69 integer,
intent(out) :: I_TKE_out
73 log_info(
"ATMOS_PHY_TB_dns_config",*)
'Setup' 74 log_info(
"ATMOS_PHY_TB_dns_config",*)
'Tracers for Deardorff (1980) 1.5th TKE Model' 76 if ( type_tb /=
'DNS' )
then 77 log_error(
"ATMOS_PHY_TB_dns_config",*)
'ATMOS_PHY_TB_TYPE is not DNS. Check!' 92 real(RP),
intent(in) :: CDZ(
ka)
93 real(RP),
intent(in) :: CDX(
ia)
94 real(RP),
intent(in) :: CDY(
ja)
95 real(RP),
intent(in) :: CZ (
ka,
ia,
ja)
97 namelist / param_atmos_phy_tb_dns / &
98 atmos_phy_tb_dns_nu, &
105 log_info(
"ATMOS_PHY_TB_dns_setup",*)
'Setup' 106 log_info(
"ATMOS_PHY_TB_dns_setup",*)
'Eddy Viscocity Model for DNS' 110 read(
io_fid_conf,nml=param_atmos_phy_tb_dns,iostat=ierr)
112 log_info(
"ATMOS_PHY_TB_dns_setup",*)
'Not found namelist. Default used.' 113 elseif( ierr > 0 )
then 114 log_error(
"ATMOS_PHY_TB_dns_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_PHY_TB_DNS. Check!' 117 log_nml(param_atmos_phy_tb_dns)
124 qflx_sgs_MOMZ, qflx_sgs_MOMX, qflx_sgs_MOMY, &
125 qflx_sgs_rhot, qflx_sgs_rhoq, &
126 RHOQ_t, nu, Ri, Pr, &
127 MOMZ, MOMX, MOMY, RHOT, DENS, QTRC, N2, &
128 SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_Q, &
129 GSQRT, J13G, J23G, J33G, MAPF, dt )
144 real(RP),
intent(out) :: qflx_sgs_MOMZ(
ka,
ia,
ja,3)
145 real(RP),
intent(out) :: qflx_sgs_MOMX(
ka,
ia,
ja,3)
146 real(RP),
intent(out) :: qflx_sgs_MOMY(
ka,
ia,
ja,3)
147 real(RP),
intent(out) :: qflx_sgs_rhot(
ka,
ia,
ja,3)
148 real(RP),
intent(out) :: qflx_sgs_rhoq(
ka,
ia,
ja,3,
qa)
150 real(RP),
intent(inout) :: RHOQ_t(
ka,
ia,
ja,
qa)
152 real(RP),
intent(out) :: nu(
ka,
ia,
ja)
153 real(RP),
intent(out) :: Ri(
ka,
ia,
ja)
154 real(RP),
intent(out) :: Pr(
ka,
ia,
ja)
156 real(RP),
intent(in) :: MOMZ(
ka,
ia,
ja)
157 real(RP),
intent(in) :: MOMX(
ka,
ia,
ja)
158 real(RP),
intent(in) :: MOMY(
ka,
ia,
ja)
159 real(RP),
intent(in) :: RHOT(
ka,
ia,
ja)
160 real(RP),
intent(in) :: DENS(
ka,
ia,
ja)
161 real(RP),
intent(in) :: QTRC(
ka,
ia,
ja,
qa)
162 real(RP),
intent(in) :: N2(
ka,
ia,
ja)
164 real(RP),
intent(in) :: SFLX_MW(
ia,
ja)
165 real(RP),
intent(in) :: SFLX_MU(
ia,
ja)
166 real(RP),
intent(in) :: SFLX_MV(
ia,
ja)
167 real(RP),
intent(in) :: SFLX_SH(
ia,
ja)
168 real(RP),
intent(in) :: SFLX_Q (
ia,
ja,
qa)
170 real(RP),
intent(in) :: GSQRT (
ka,
ia,
ja,7)
171 real(RP),
intent(in) :: J13G (
ka,
ia,
ja,7)
172 real(RP),
intent(in) :: J23G (
ka,
ia,
ja,7)
173 real(RP),
intent(in) :: J33G
174 real(RP),
intent(in) :: MAPF (
ia,
ja,2,4)
175 real(DP),
intent(in) :: dt
177 real(RP) :: POTT(
ka,
ia,
ja)
182 integer :: k, i, j, iq
185 log_progress(*)
'atmosphere / physics / turbulence / DNS' 188 qflx_sgs_momz(:,:,:,:) = undef
189 qflx_sgs_momx(:,:,:,:) = undef
190 qflx_sgs_momy(:,:,:,:) = undef
191 qflx_sgs_rhot(:,:,:,:) = undef
192 qflx_sgs_rhoq(:,:,:,:,:) = undef
205 pott(k,i,j) = rhot(k,i,j) / dens(k,i,j)
221 qflx_sgs_momz(k,i,j,
zdir) = -atmos_phy_tb_dns_nu * ( momz(k,i,j)-momz(k-1,i,j) ) * rcdz(k)
228 qflx_sgs_momz(
ks,i,j,
zdir) = 0.0_rp
229 qflx_sgs_momz(
ke,i,j,
zdir) = 0.0_rp
237 qflx_sgs_momz(k,i,j,
xdir) = -atmos_phy_tb_dns_nu * ( momz(k,i+1,j)-momz(k,i,j) ) * rfdx(i) * mapf(i,j,1,
i_xy)
246 qflx_sgs_momz(k,i,j,
ydir) = -atmos_phy_tb_dns_nu * ( momz(k,i,j+1)-momz(k,i,j) ) * rfdy(j) * mapf(i,j,2,
i_xy)
256 qflx_sgs_momx(k,i,j,
zdir) = -atmos_phy_tb_dns_nu * ( momx(k+1,i,j)-momx(k,i,j) ) * rfdz(k)
263 qflx_sgs_momx(
ks-1,i,j,
zdir) = 0.0_rp
264 qflx_sgs_momx(
ke ,i,j,
zdir) = 0.0_rp
272 qflx_sgs_momx(k,i,j,
xdir) = -atmos_phy_tb_dns_nu * ( momx(k,i,j)-momx(k,i-1,j) ) * rcdx(i) * mapf(i,j,1,
i_uy)
281 qflx_sgs_momx(k,i,j,
ydir) = -atmos_phy_tb_dns_nu * ( momx(k,i,j+1)-momx(k,i,j) ) * rfdy(j) * mapf(i,j,2,
i_uy)
292 qflx_sgs_momy(k,i,j,
zdir) = -atmos_phy_tb_dns_nu * ( momy(k+1,i,j)-momy(k,i,j) ) * rfdz(k)
299 qflx_sgs_momy(
ks-1,i,j,
zdir) = 0.0_rp
300 qflx_sgs_momy(
ke ,i,j,
zdir) = 0.0_rp
308 qflx_sgs_momy(k,i,j,
xdir) = -atmos_phy_tb_dns_nu * ( momy(k,i+1,j)-momy(k,i,j) ) * rfdx(i) * mapf(i,j,1,
i_xv)
317 qflx_sgs_momy(k,i,j,
ydir) = -atmos_phy_tb_dns_nu * ( momy(k,i,j)-momy(k,i,j-1) ) * rcdy(j) * mapf(i,j,2,
i_xv)
328 qflx_sgs_rhot(k,i,j,
zdir) = -0.5_rp * ( dens(k+1,i,j)+dens(k,i,j) ) &
329 * atmos_phy_tb_dns_mu * ( pott(k+1,i,j)-pott(k,i,j) ) * rfdz(k)
336 qflx_sgs_rhot(
ks-1,i,j,
zdir) = 0.0_rp
337 qflx_sgs_rhot(
ke ,i,j,
zdir) = 0.0_rp
345 qflx_sgs_rhot(k,i,j,
xdir) = -0.5_rp * ( dens(k,i+1,j)+dens(k,i,j) ) &
346 * atmos_phy_tb_dns_mu * ( pott(k,i+1,j)-pott(k,i,j) ) * rfdx(i) * mapf(i,j,1,
i_xy)
355 qflx_sgs_rhot(k,i,j,
ydir) = -0.5_rp * ( dens(k,i,j+1)+dens(k,i,j) ) &
356 * atmos_phy_tb_dns_mu * ( pott(k,i,j+1)-pott(k,i,j) ) * rfdy(j) * mapf(i,j,2,
i_xy)
378 qflx_sgs_rhoq(k,i,j,
zdir,iq) = -0.5_rp * ( dens(k+1,i,j)+dens(k,i,j) ) &
379 * atmos_phy_tb_dns_mu * ( qtrc(k+1,i,j,iq)-qtrc(k,i,j,iq) ) * rfdz(k)
385 qflx_sgs_rhoq(
ks-1,i,j,
zdir,iq) = 0.0_rp
386 qflx_sgs_rhoq(
ke ,i,j,
zdir,iq) = 0.0_rp
394 qflx_sgs_rhoq(k,i,j,
xdir,iq) = -0.5_rp * ( dens(k,i+1,j)+dens(k,i,j) ) &
395 * atmos_phy_tb_dns_mu * ( qtrc(k,i+1,j,iq)-qtrc(k,i,j,iq) ) * rfdx(i) * mapf(i,j,1,
i_xy)
404 qflx_sgs_rhoq(k,i,j,
ydir,iq) = -0.5_rp * ( dens(k,i,j+1)+dens(k,i,j) ) &
405 * atmos_phy_tb_dns_mu * ( qtrc(k,i,j+1,iq)-qtrc(k,i,j,iq) ) * rfdy(j) * mapf(i,j,2,
i_xy)
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)
integer, public ia
of whole cells: x, local, with HALO
integer, public iblock
block size for cache blocking: x
logical, dimension(qa_max), public tracer_advc
integer, public ja
of whole cells: y, local, with HALO
integer, public io_fid_conf
Config file ID.
subroutine, public check(current_line, v)
Undefined value checker.
real(rp), public const_undef
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdy
reciprocal of center-dy
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdz
reciprocal of face-dz
integer, public is
start point of inner domain: x, local
integer, public ie
end point of inner domain: x, local
subroutine, public atmos_phy_tb_dns_setup(CDZ, CDX, CDY, CZ)
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdz
reciprocal of center-dz
integer, parameter, public ydir
module atmosphere / grid / cartesC index
integer, public ke
end point of inner domain: z, local
integer, public je
end point of inner domain: y, local
real(rp), public const_grav
standard acceleration of gravity [m/s2]
subroutine, public atmos_phy_tb_dns_config(TYPE_TB, I_TKE_out)
Config.
integer, parameter, public const_undef2
undefined value (INT2)
module atmosphere / grid / cartesC
module ATMOSPHERE / Physics Turbulence
integer, public ks
start point of inner domain: z, local
integer, public jblock
block size for cache blocking: y
subroutine, public prc_abort
Abort Process.
integer, public js
start point of inner domain: y, local
integer, parameter, public xdir
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdx
reciprocal of center-dx
integer, public ka
of whole cells: z, local, with HALO
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdy
reciprocal of face-dy
integer, parameter, public zdir
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdx
reciprocal of face-dx