40 integer,
intent(in) :: ng, tile, model
45 real(r8) :: diffusion2(
mt), diffusion4(
mt)
47 real(r8) :: viscosity2, viscosity4
52 & lbi, ubi, lbj, ubj, &
53 & imins, imaxs, jmins, jmaxs, &
54 &
grid(ng) % grdscl, &
72 & diffusion2, diffusion4, &
74 & viscosity2, viscosity4)
81 & LBi, UBi, LBj, UBj, &
82 & IminS, ImaxS, JminS, JmaxS, &
101 & diffusion2, diffusion4, &
103 & viscosity2, viscosity4)
120 integer,
intent(in) :: ng, tile, model
121 integer,
intent(in) :: LBi, UBi, LBj, UBj
122 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
125 real(r8),
intent(out) :: diffusion2(MT), diffusion4(MT)
127 real(r8),
intent(out) :: viscosity2, viscosity4
130 real(r8),
intent(in) :: grdscl(LBi:,LBj:)
133 real(r8),
intent(inout) :: diff2(LBi:,LBj:,:)
136 real(r8),
intent(inout) :: diff4(LBi:,LBj:,:)
140 real(r8),
intent(inout) :: visc2_p(LBi:,LBj:)
141 real(r8),
intent(inout) :: visc2_r(LBi:,LBj:)
144 real(r8),
intent(inout) :: visc4_p(LBi:,LBj:)
145 real(r8),
intent(inout) :: visc4_r(LBi:,LBj:)
148 real(r8),
intent(in) :: grdscl(LBi:UBi,LBj:UBj)
151 real(r8),
intent(inout) :: diff2(LBi:UBi,LBj:UBj,NT(ng))
154 real(r8),
intent(inout) :: diff4(LBi:UBi,LBj:UBj,NT(ng))
158 real(r8),
intent(inout) :: visc2_p(LBi:UBi,LBj:UBj)
159 real(r8),
intent(inout) :: visc2_r(LBi:UBi,LBj:UBj)
162 real(r8),
intent(inout) :: visc4_p(LBi:UBi,LBj:UBj)
163 real(r8),
intent(inout) :: visc4_r(LBi:UBi,LBj:UBj)
169 integer :: Imin, Imax, Jmin, Jmax
176#include "set_bounds.h"
182 IF (model.eq.
inlm)
THEN
187 diffusion2(itrc)=
nl_tnu2(itrc,ng)
188 diffusion4(itrc)=
nl_tnu4(itrc,ng)
191#if defined TANGENT || defined TL_IOMS
192 ELSE IF ((model.eq.
itlm).or.(model.eq.
irpm))
THEN
197 diffusion2(itrc)=
tl_tnu2(itrc,ng)
198 diffusion4(itrc)=
tl_tnu4(itrc,ng)
203 ELSE IF (model.eq.
iadm)
THEN
208 diffusion2(itrc)=
ad_tnu2(itrc,ng)
209 diffusion4(itrc)=
ad_tnu4(itrc,ng)
217 IF (
domain(ng)%SouthWest_Test(tile))
THEN
222 tnu2(itrc,ng)=diffusion2(itrc)
223 tnu4(itrc,ng)=diffusion4(itrc)
228#if defined UV_VIS2 || defined UV_VIS4 || \
229 ((defined ts_dif2 || defined ts_dif4) && defined solve3d)
236 IF (
domain(ng)%Western_Edge(tile))
THEN
241 IF (
domain(ng)%Eastern_Edge(tile))
THEN
246 IF (
domain(ng)%Southern_Edge(tile))
THEN
251 IF (
domain(ng)%Northern_Edge(tile))
THEN
266 visc2_p(i,j)=viscosity2
267 visc2_r(i,j)=viscosity2
274 visc4_p(i,j)=viscosity4
275 visc4_r(i,j)=viscosity4
284 diff2(i,j,itrc)=diffusion2(itrc)
293 diff4(i,j,itrc)=diffusion4(itrc)
312 visc2_r(i,j)=cff*grdscl(i,j)
318 visc2_p(i,j)=cff*(grdscl(i-1,j-1)+grdscl(i,j-1)+ &
319 & grdscl(i-1,j )+grdscl(i,j ))
324 cff=viscosity4/(
grdmax(ng)**3)
327 visc4_r(i,j)=cff*grdscl(i,j)**3
333 visc4_p(i,j)=cff*(grdscl(i,j )**3+grdscl(i-1,j )**3+ &
334 & grdscl(i,j-1)**3+grdscl(i-1,j-1)**3)
340#if defined DIFF_GRID && defined SOLVE3D
348 cff=diffusion2(itrc)/
grdmax(ng)
351 diff2(i,j,itrc)=cff*grdscl(i,j)
358 cff=diffusion4(itrc)/(
grdmax(ng)**3)
361 diff4(i,j,itrc)=cff*grdscl(i,j)**3
368#if !defined ANA_SPONGE && \
369 ( defined uv_vis2 || defined uv_vis4 || \
370 ((defined ts_dif2 || defined ts_dif4) && defined solve3d))
381 visc2_r(i,j)=abs(
mixing(ng)%visc_factor(i,j))* &
387 visc2_p(i,j)=0.25_r8* &
388 & abs(
mixing(ng)%visc_factor(i-1,j-1)+ &
389 &
mixing(ng)%visc_factor(i ,j-1)+ &
390 &
mixing(ng)%visc_factor(i-1,j )+ &
391 &
mixing(ng)%visc_factor(i ,j ))* &
399 visc4_r(i,j)=abs(
mixing(ng)%visc_factor(i,j))* &
405 visc4_p(i,j)=0.25_r8* &
406 & abs(
mixing(ng)%visc_factor(i-1,j-1)+ &
407 &
mixing(ng)%visc_factor(i ,j-1)+ &
408 &
mixing(ng)%visc_factor(i-1,j )+ &
409 &
mixing(ng)%visc_factor(i ,j ))* &
422 diff2(i,j,itrc)=abs(
mixing(ng)%diff_factor(i,j))* &
434 diff4(i,j,itrc)=abs(
mixing(ng)%diff_factor(i,j))* &
451 & lbi, ubi, lbj, ubj, &
454 & lbi, ubi, lbj, ubj, &
461 & lbi, ubi, lbj, ubj, &
464 & lbi, ubi, lbj, ubj, &
474 & lbi, ubi, lbj, ubj, &
483 & lbi, ubi, lbj, ubj, &
493 & lbi, ubi, lbj, ubj, &
500 & lbi, ubi, lbj, ubj, &
508 & lbi, ubi, lbj, ubj, 1, nt(ng), &
515 & lbi, ubi, lbj, ubj, 1, nt(ng), &
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_p2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine ini_hmixcoef_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, grdscl, diff2, diff4, visc2_p, visc2_r, visc4_p, visc4_r, diffusion2, diffusion4, viscosity2, viscosity4)
subroutine, public ini_hmixcoef(ng, tile, model)
type(t_grid), dimension(:), allocatable grid
type(t_mixing), dimension(:), allocatable mixing
type(t_bounds), dimension(:), allocatable bounds
type(t_domain), dimension(:), allocatable domain
real(r8), dimension(:,:), allocatable tl_tnu2
real(r8), dimension(:,:), allocatable tnu2
logical, dimension(:), allocatable luvsponge
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
real(r8), dimension(:,:), allocatable nl_tnu2
logical, dimension(:,:), allocatable ltracersponge
real(r8), dimension(:,:), allocatable tl_tnu4
real(r8), dimension(:), allocatable visc2
real(r8), dimension(:), allocatable ad_visc4
real(r8), dimension(:), allocatable visc4
real(r8), dimension(:), allocatable tl_visc4
real(dp), dimension(:), allocatable grdmax
real(r8), dimension(:,:), allocatable ad_tnu2
real(r8), dimension(:), allocatable nl_visc4
real(r8), dimension(:), allocatable ad_visc2
real(r8), dimension(:,:), allocatable ad_tnu4
real(r8), dimension(:), allocatable tl_visc2
real(r8), dimension(:,:), allocatable nl_tnu4
real(r8), dimension(:), allocatable nl_visc2
real(r8), dimension(:,:), allocatable tnu4
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine mp_exchange3d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, nghost, ew_periodic, ns_periodic, a, b, c, d)