Go to the documentation of this file.
62 character(len=*),
intent(in) :: type
64 if (
type /=
'FVM-HEVE' ) then
65 log_error(
"ATMOS_DYN_Tstep_tracer_fvm_heve_setup",*)
'Tstep_tracer_type is not "FVM-HEVE"!'
75 qtrc, qtrc0, rhoq_t, &
79 cdz, rcdz, rcdx, rcdy, &
83 flag_fct_along_stream )
95 real(
rp),
intent(inout) :: qtrco (
ka,
ia,
ja)
96 real(
rp),
intent(out) :: qflx_hi (
ka,
ia,
ja,3)
97 real(
rp),
intent(in) :: qtrc (
ka,
ia,
ja)
98 real(
rp),
intent(in) :: qtrc0 (
ka,
ia,
ja)
99 real(
rp),
intent(in) :: rhoq_t (
ka,
ia,
ja)
100 real(
rp),
intent(in) :: dens0 (
ka,
ia,
ja)
101 real(
rp),
intent(in) :: dens (
ka,
ia,
ja)
102 real(
rp),
intent(in) :: mflx_hi (
ka,
ia,
ja,3)
103 real(
rp),
intent(in) :: num_diff(
ka,
ia,
ja,3)
104 real(
rp),
intent(in) :: gsqrt (
ka,
ia,
ja,7)
105 real(
rp),
intent(in) :: mapf (
ia,
ja,2)
106 real(
rp),
intent(in) :: cdz(
ka)
107 real(
rp),
intent(in) :: rcdz(
ka)
108 real(
rp),
intent(in) :: rcdx(
ia)
109 real(
rp),
intent(in) :: rcdy(
ja)
110 logical,
intent(in) :: twod
111 real(
rp),
intent(in) :: dtl
112 logical,
intent(in) :: flag_fct_tracer
113 logical,
intent(in) :: flag_fct_along_stream
122 integer :: iis0, jjs0
134 qflx_hi(:,:,:,:) = undef
135 qflx_lo(:,:,:,:) = undef
146 mflx_hi(:,:,:,
zdir), qtrc, gsqrt(:,:,:,
i_xyw), &
147 num_diff(:,:,:,
zdir), &
154 mflx_hi(:,:,:,
xdir), qtrc, gsqrt(:,:,:,
i_uyz), &
155 num_diff(:,:,:,
xdir), &
161 mflx_hi(:,:,:,
ydir), qtrc, gsqrt(:,:,:,
i_xvz), &
162 num_diff(:,:,:,
ydir), &
166 if ( flag_fct_tracer )
then
169 mflx_hi(:,:,:,
zdir), qtrc0, gsqrt(:,:,:,
i_xyw), &
170 num_diff(:,:,:,
zdir), &
172 iis-1, iie+1, jjs-1, jje+1 )
176 mflx_hi(:,:,:,
xdir), qtrc0, gsqrt(:,:,:,
i_uyz), &
177 num_diff(:,:,:,
xdir), &
179 iis-1, iie+1, jjs-1, jje+1 )
182 mflx_hi(:,:,:,
ydir), qtrc0, gsqrt(:,:,:,
i_xvz), &
183 num_diff(:,:,:,
ydir), &
185 iis-1, iie+1, jjs-1, jje+1 )
191 if ( flag_fct_tracer )
then
194 qtrc0, dens0, dens, &
198 gsqrt(:,:,:,
i_xyz), &
200 flag_fct_along_stream )
216 if ( .not. twod )
then
217 if ( iis ==
is )
then
232 if ( jjs ==
js )
then
251 qtrco(
k,
is,j) = ( qtrc0(
k,
is,j) * dens0(
k,
is,j) &
252 + dtl * ( - ( ( qflx_hi(
k,
is,j,
zdir) - qflx_hi(
k-1,
is,j ,
zdir) ) * rcdz(
k) &
255 + rhoq_t(
k,
is,j) ) ) / dens(
k,
is,j)
263 qtrco(
k,i,j) = ( qtrc0(
k,i,j) * dens0(
k,i,j) &
264 + dtl * ( - ( ( qflx_hi(
k,i,j,
zdir) - qflx_hi(
k-1,i ,j ,
zdir) ) * rcdz(
k) &
265 + ( qflx_hi(
k,i,j,
xdir) - qflx_hi(
k ,i-1,j ,
xdir) ) * rcdx(i) &
266 + ( qflx_hi(
k,i,j,
ydir) - qflx_hi(
k ,i ,j-1,
ydir) ) * rcdy(j) &
267 ) * mapf(i,j,1) * mapf(i,j,2) / gsqrt(
k,i,j,
i_xyz) &
268 + rhoq_t(
k,i,j) ) ) / dens(
k,i,j)
291 qtrco(
k,
is,j) = ( qtrc0(
k,
is,j) * dens0(
k,
is,j) &
292 + dtl * ( - ( ( qflx_hi(
k,
is,j,
zdir) - qflx_hi(
k-1,
is,j ,
zdir) ) * rcdz(
k) &
295 + rhoq_t(
k,
is,j) ) ) / dens(
k,
is,j)
307 qtrco(
k,i,j) = ( qtrc0(
k,i,j) * dens0(
k,i,j) &
308 + dtl * ( - ( ( qflx_hi(
k,i,j,
zdir) - qflx_hi(
k-1,i ,j ,
zdir) ) * rcdz(
k) &
309 + ( qflx_hi(
k,i,j,
xdir) - qflx_hi(
k ,i-1,j ,
xdir) ) * rcdx(i) &
310 + ( qflx_hi(
k,i,j,
ydir) - qflx_hi(
k ,i ,j-1,
ydir) ) * rcdy(j) &
311 ) * mapf(i,j,1) * mapf(i,j,2) / gsqrt(
k,i,j,
i_xyz) &
312 + rhoq_t(
k,i,j) ) ) / dens(
k,i,j)
integer, public ke
end point of inner domain: z, local
subroutine, public prc_abort
Abort Process.
subroutine, public atmos_dyn_fvm_fct(qflx_anti, phi_in, DENS0, DENS, qflx_hi, qflx_lo, mflx_hi, rdz, rdx, rdy, GSQRT, MAPF, TwoD, dt, flag_vect)
Setup.
integer, parameter, public const_undef2
undefined value (INT2)
module scale_atmos_dyn_fvm_flux
integer, public jblock
block size for cache blocking: y
integer, public iblock
block size for cache blocking: x
subroutine, public atmos_dyn_fvm_fluxx_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYZ
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxy_xyz_tracer
subroutine, public atmos_dyn_fvm_fluxy_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XYZ
integer, parameter, public rp
integer, public ie
end point of inner domain: x, local
subroutine, public atmos_dyn_fvm_fluxz_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XYZ
module atmosphere / grid / cartesC index
subroutine, public check(current_line, v)
Undefined value checker.
module scale_atmos_dyn_fvm_flux_ud1
integer, parameter, public zdir
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxz_xyz_tracer
subroutine, public atmos_dyn_tstep_tracer_fvm_heve(QTRCo, qflx_hi, QTRC, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, TwoD, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxx_xyz_tracer
integer, public is
start point of inner domain: x, local
integer, parameter, public xdir
integer, public ks
start point of inner domain: z, local
subroutine, public atmos_dyn_tstep_tracer_fvm_heve_setup(type)
Setup.
integer, public js
start point of inner domain: y, local
module Atmosphere / Dynamics
integer, parameter, public ydir
real(rp), public const_undef
module Atmosphere / Dynamics common
integer, public je
end point of inner domain: y, local