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"!' 74 qtrc, qtrc0, rhoq_t, &
78 cdz, rcdz, rcdx, rcdy, &
81 flag_fct_along_stream )
93 real(RP),
intent(inout) :: QTRCo (
ka,
ia,
ja)
94 real(RP),
intent(in) :: QTRC (
ka,
ia,
ja)
95 real(RP),
intent(in) :: QTRC0 (
ka,
ia,
ja)
96 real(RP),
intent(in) :: RHOQ_t (
ka,
ia,
ja)
97 real(RP),
intent(in) :: DENS0 (
ka,
ia,
ja)
98 real(RP),
intent(in) :: DENS (
ka,
ia,
ja)
99 real(RP),
intent(in) :: mflx_hi (
ka,
ia,
ja,3)
100 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja,3)
101 real(RP),
intent(in) :: GSQRT (
ka,
ia,
ja,7)
102 real(RP),
intent(in) :: MAPF (
ia,
ja,2)
103 real(RP),
intent(in) :: CDZ(
ka)
104 real(RP),
intent(in) :: RCDZ(
ka)
105 real(RP),
intent(in) :: RCDX(
ia)
106 real(RP),
intent(in) :: RCDY(
ja)
107 real(RP),
intent(in) :: dtl
108 logical,
intent(in) :: FLAG_FCT_TRACER
109 logical,
intent(in) :: FLAG_FCT_ALONG_STREAM
113 real(RP) :: qflx_hi (
ka,
ia,
ja,3)
114 real(RP) :: qflx_lo (
ka,
ia,
ja,3)
115 real(RP) :: qflx_anti(
ka,
ia,
ja,3)
123 qflx_hi(:,:,:,:) = undef
124 qflx_lo(:,:,:,:) = undef
134 mflx_hi(:,:,:,
zdir), qtrc, gsqrt(:,:,:,
i_xyw), &
135 num_diff(:,:,:,
zdir), &
141 mflx_hi(:,:,:,
xdir), qtrc, gsqrt(:,:,:,
i_uyz), &
142 num_diff(:,:,:,
xdir), &
148 mflx_hi(:,:,:,
ydir), qtrc, gsqrt(:,:,:,
i_xvz), &
149 num_diff(:,:,:,
ydir), &
153 if ( flag_fct_tracer )
then 156 mflx_hi(:,:,:,
zdir), qtrc0, gsqrt(:,:,:,
i_xyw), &
157 num_diff(:,:,:,
zdir), &
159 iis-1, iie+1, jjs-1, jje+1 )
162 mflx_hi(:,:,:,
xdir), qtrc0, gsqrt(:,:,:,
i_uyz), &
163 num_diff(:,:,:,
xdir), &
165 iis-1, iie+1, jjs-1, jje+1 )
168 mflx_hi(:,:,:,
ydir), qtrc0, gsqrt(:,:,:,
i_xvz), &
169 num_diff(:,:,:,
ydir), &
171 iis-1, iie+1, jjs-1, jje+1 )
177 if ( flag_fct_tracer )
then 180 qtrc0, dens0, dens, &
184 gsqrt(:,:,:,
i_xyz), &
186 flag_fct_along_stream )
197 qtrco(k,i,j) = ( qtrc0(k,i,j) * dens0(k,i,j) &
198 + dtl * ( - ( ( qflx_hi(k ,i ,j ,
zdir) - qflx_anti(k ,i ,j ,
zdir) &
199 - qflx_hi(k-1,i ,j ,
zdir) + qflx_anti(k-1,i ,j ,
zdir) ) * rcdz(k) &
200 + ( qflx_hi(k ,i ,j ,
xdir) - qflx_anti(k ,i ,j ,
xdir) &
201 - qflx_hi(k ,i-1,j ,
xdir) + qflx_anti(k ,i-1,j ,
xdir) ) * rcdx(i) &
202 + ( qflx_hi(k ,i ,j ,
ydir) - qflx_anti(k ,i ,j ,
ydir) &
203 - qflx_hi(k ,i ,j-1,
ydir) + qflx_anti(k ,i ,j-1,
ydir) ) * rcdy(j) &
204 ) * mapf(i,j,1) * mapf(i,j,2) / gsqrt(k,i,j,
i_xyz) &
205 + rhoq_t(k,i,j) ) ) / dens(k,i,j)
226 qtrco(k,i,j) = ( qtrc0(k,i,j) * dens0(k,i,j) &
227 + dtl * ( - ( ( qflx_hi(k,i,j,
zdir) - qflx_hi(k-1,i ,j ,
zdir) ) * rcdz(k) &
228 + ( qflx_hi(k,i,j,
xdir) - qflx_hi(k ,i-1,j ,
xdir) ) * rcdx(i) &
229 + ( qflx_hi(k,i,j,
ydir) - qflx_hi(k ,i ,j-1,
ydir) ) * rcdy(j) &
230 ) * mapf(i,j,1) * mapf(i,j,2) / gsqrt(k,i,j,
i_xyz) &
231 + rhoq_t(k,i,j) ) ) / dens(k,i,j)
subroutine, public atmos_dyn_fvm_fluxy_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XYZ
subroutine, public atmos_dyn_tstep_tracer_fvm_heve(QTRCo, QTRC, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
subroutine, public atmos_dyn_fvm_fluxz_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XYZ
integer, public ia
of whole cells: x, local, with HALO
integer, public iblock
block size for cache blocking: x
integer, public ja
of whole cells: y, local, with HALO
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxy_xyz_tracer
subroutine, public check(current_line, v)
Undefined value checker.
real(rp), public const_undef
integer, public is
start point of inner domain: x, local
integer, public ie
end point of inner domain: x, local
integer, parameter, public ydir
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxx_xyz_tracer
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
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxz_xyz_tracer
integer, parameter, public const_undef2
undefined value (INT2)
module Atmosphere / Dynamics common
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.
subroutine, public atmos_dyn_tstep_tracer_fvm_heve_setup(type)
Setup.
integer, public js
start point of inner domain: y, local
integer, parameter, public xdir
module scale_atmos_dyn_fvm_flux
module Atmosphere / Dynamics
integer, public ka
of whole cells: z, local, with HALO
subroutine, public atmos_dyn_fct(qflx_anti, phi_in, DENS0, DENS, qflx_hi, qflx_lo, mflx_hi, rdz, rdx, rdy, GSQRT, MAPF, dt, flag_vect)
Flux Correction Transport Limiter.
integer, parameter, public zdir
subroutine, public atmos_dyn_fvm_fluxx_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYZ
module scale_atmos_dyn_fvm_flux_ud1