2 SUBROUTINE ana_sponge (ng, tile, model)
73 integer,
intent(in) :: ng, tile, model
77 character (len=*),
parameter :: MyFile = &
82 CALL ana_sponge_tile (ng, tile, model, &
83 & lbi, ubi, lbj, ubj, &
84 & imins, imaxs, jmins, jmaxs)
97 END SUBROUTINE ana_sponge
100 SUBROUTINE ana_sponge_tile (ng, tile, model, &
101 & LBi, UBi, LBj, UBj, &
102 & IminS, ImaxS, JminS, JmaxS)
120 integer,
intent(in) :: ng, tile, model
121 integer,
intent(in) :: LBi, UBi, LBj, UBj
122 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
126 integer :: i, itrc, j
128 real(r8) :: cff, innerF, outerF, val, width
130 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: factor
132#include "set_bounds.h"
149 factor(imins:imaxs,jmins:jmaxs)=0.0_r8
152 DO j=jstrt,min(int(width),jendt)
153 factor(i,j)=1.0_r8+(cff-1.0_r8)*(width-real(j,r8))/width
161 mixing(ng) % visc2_r(i,j)=abs(factor(i,j))* &
162 &
mixing(ng) % visc2_r(i,j)
167 mixing(ng) % visc2_p(i,j)=0.25_r8*abs(factor(i-1,j-1)+ &
171 &
mixing(ng) % visc2_p(i,j)
182 mixing(ng) % diff2(i,j,itrc)=abs(factor(i,j)* &
183 &
mixing(ng) % diff2(i,j,itrc)
207 DO j=jstrt,min(int(width),jendt)
208 val=innerf+(outerf-innerf)*(width-real(j,r8))/width
210 mixing(ng)%visc2_r(i,j)=max(min(val,outerf),innerf)
211 mixing(ng)%visc2_p(i,j)=max(min(val,outerf),innerf)
217 DO j=max(jstrt,
mm(ng)+1-int(width)),jendt
218 val=outerf+(innerf-outerf)*real(
mm(ng)+1-j,r8)/width
220 mixing(ng) % visc2_r(i,j)=max(min(val,outerf),innerf)
221 mixing(ng) % visc2_p(i,j)=max(min(val,outerf),innerf)
227 DO i=istrt,min(int(width),iendt)
228 DO j=max(jstrt,i),min(
mm(ng)+1-i,jendt)
229 val=innerf+(outerf-innerf)*(width-real(i,r8))/width
230 mixing(ng) % visc2_r(i,j)=max(min(val,outerf),innerf)
231 mixing(ng) % visc2_p(i,j)=max(min(val,outerf),innerf)
249 DO j=jstrt,min(int(width),jendt)
250 val=innerf+(outerf-innerf)*(width-real(j,r8))/width
252 mixing(ng) % diff2(i,j,itrc)=max(min(val,outerf),innerf)
258 DO j=max(jstrt,
mm(ng)+1-int(width)),jendt
259 val=outerf+(innerf-outerf)*real(
mm(ng)+1-j,r8)/width
261 mixing(ng) % diff2(i,j,itrc)=max(min(val,outerf),innerf)
267 DO i=istrt,min(int(width),iendt)
268 DO j=max(jstrt,i),min(
mm(ng)+1-i,jendt)
269 val=innerf+(outerf-innerf)*(width-real(i,r8))/width
270 mixing(ng) % diff2(i,j,itrc)=max(min(val,outerf),innerf)
289 & lbi, ubi, lbj, ubj, &
292 & lbi, ubi, lbj, ubj, &
302 & lbi, ubi, lbj, ubj, &
305 & lbi, ubi, lbj, ubj, &
317 & lbi, ubi, lbj, ubj, &
318 &
mixing(ng) % diff2(:,:,itrc))
329 & lbi, ubi, lbj, ubj, &
330 &
mixing(ng) % diff4(:,:,itrc))
342 & lbi, ubi, lbj, ubj, &
353 & lbi, ubi, lbj, ubj, &
365 & lbi, ubi, lbj, ubj, 1,
nt(ng), &
375 & lbi, ubi, lbj, ubj, 1,
nt(ng), &
385 END SUBROUTINE ana_sponge_tile
subroutine ana_sponge(ng, tile, model)
subroutine ana_sponge_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs)
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_p2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
type(t_mixing), dimension(:), allocatable mixing
character(len=256), dimension(39) ananame
integer, dimension(:), allocatable nt
integer, dimension(:), allocatable mm
real(r8), dimension(:,:), allocatable tnu2
logical, dimension(:), allocatable luvsponge
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
real(r8), dimension(:), allocatable user
logical, dimension(:,:), allocatable ltracersponge
real(r8), dimension(:), allocatable visc2
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)