21 #if defined DEBUG || defined QUICKDEBUG
56 KA, KS, KE, IA, IS, IE, JA, JS, JE, &
63 matrix_solver_tridiagonal
66 integer,
intent(in) :: ka, ks, ke
67 integer,
intent(in) :: ia, is, ie
68 integer,
intent(in) :: ja, js, je
70 real(
rp),
intent(in) :: dens (ka,ia,ja)
71 real(
rp),
intent(in) :: qtrc (ka,ia,ja)
72 real(
rp),
intent(in) :: sflx_q( ia,ja)
73 real(
rp),
intent(in) :: kh (ka,ia,ja)
74 real(
rp),
intent(in) :: mass
75 real(
rp),
intent(in) :: cz ( ka,ia,ja)
76 real(
rp),
intent(in) :: fz (0:ka,ia,ja)
77 real(
rp),
intent(in) :: f2h(ka,2,ia,ja)
78 real(
dp),
intent(in) :: ddt
79 character(len=*),
intent(in) :: tracer_name
81 real(
rp),
intent(out) :: rhoq_t(ka,ia,ja)
83 real(
rp) :: qtrc_n(ka)
85 real(
rp) :: rhokh (ka)
94 real(
rp) :: flx(ka,ia,ja)
105 real(
rp) :: work(ks:ke,4)
107 dt = real( ddt, kind=
rp )
127 do k = ke-2, ks+1, -1
128 if ( kh(k,i,j) > 0.0_rp )
then
136 cdz(k) = fz(k ,i,j) - fz(k-1,i,j)
137 fdz(k) = cz(k+1,i,j) - cz(k ,i,j)
140 sf_t = sflx_q(i,j) / cdz(ks)
142 rho(ks) = dens(ks,i,j) + dt * sf_t * mass
149 rho_h = f2h(k,1,i,j) * dens(k+1,i,j) + f2h(k,2,i,j) * dens(k,i,j)
150 rhokh(k) = rho_h * kh(k,i,j)
153 d(ks) = ( qtrc(ks,i,j) * dens(ks,i,j) + dt * sf_t ) / rho(ks)
160 ap = - dt * rhokh(k) / fdz(k)
161 a(k) = ap / ( rho(k) * cdz(k) )
164 b(k) = - a(k) + 1.0_rp
166 b(k) = - a(k) + dt * rhokh(k-1) / ( fdz(k-1) * rho(k) * cdz(k) ) + 1.0_rp
169 b(k) = - a(k) - c(k) + 1.0_rp
171 c(k+1) = ap / ( rho(k+1) * cdz(k+1) )
174 b(ke_pbl) = - c(ke_pbl) + 1.0_rp
176 call matrix_solver_tridiagonal( &
181 a(:), b(:), c(:), d(:), &
184 rhoq_t(ks,i,j) = ( qtrc_n(ks) * rho(ks) - qtrc(ks,i,j) * dens(ks,i,j) ) / dt - sf_t
186 rhoq_t(k,i,j) = ( qtrc_n(k) - qtrc(k,i,j) ) * rho(k) / dt
189 rhoq_t(k,i,j) = 0.0_rp
193 flx(k,i,j) = - rhokh(k) * ( qtrc_n(k+1) - qtrc_n(k) ) / fdz(k)
200 call file_history_in(flx(:,:,:),
'ZFLX_'//trim(tracer_name)//
'_BL',
'Z FLUX of DENS * '//trim(tracer_name)//
' (PBL)',
'kg/m2/s', fill_halo=.true.)
module atmosphere / physics / pbl / common
subroutine, public atmos_phy_bl_tendency_tracer(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, QTRC, SFLX_Q, Kh, MASS, CZ, FZ, F2H, DDT, TRACER_NAME, RHOQ_t)
ATMOS_PHY_BL_tendency_tracer calculate tendency of tracers by the eddy viscosity.
integer, parameter, public const_undef2
undefined value (INT2)
real(rp), public const_undef
subroutine, public check(current_line, v)
Undefined value checker.
integer, parameter, public dp
integer, parameter, public rp