4#if defined ICE_MOMENTUM && defined ICE_EVP
37 SUBROUTINE ice_evp (ng, tile, model)
44 integer,
intent(in) :: ng, tile, model
48 character (len=*),
parameter :: MyFile = &
54 CALL wclock_on (ng, model, 42, __line__, myfile)
56 CALL ice_evp_tile (ng, tile, model, &
57 & lbi, ubi, lbj, ubj, &
58 & imins, imaxs, jmins, jmaxs, &
59 & liold(ng), lieol(ng), liuol(ng), &
61 &
grid(ng) % mask_outflow, &
68 CALL wclock_off (ng, model, 42, __line__, myfile)
72 END SUBROUTINE ice_evp
75 SUBROUTINE ice_evp_tile (ng, tile, model, &
76 & LBi, UBi, LBj, UBj, &
77 & IminS, ImaxS, JminS, JmaxS, &
78 & liold, lieol, liuol, &
88 integer,
intent(in) :: ng, tile, model
89 integer,
intent(in) :: LBi, UBi, LBj, UBj
90 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
91 integer,
intent(in) :: liold, lieol, liuol
95 real(r8),
intent(in) :: mask_outflow(LBi:,LBj:)
97 real(r8),
intent(in) :: pm(LBi:,LBj:)
98 real(r8),
intent(in) :: pn(LBi:,LBj:)
99 real(r8),
intent(inout) :: Fi(LBi:,LBj:,:)
100 real(r8),
intent(inout) :: Si(LBi:,LBj:,:,:)
103 real(r8),
intent(in) :: mask_outflow(LBi:UBi,LBj:UBj)
105 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
106 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
107 real(r8),
intent(inout) :: Fi(LBi:UBi,LBj:UBj,nIceF)
108 real(r8),
intent(inout) :: Si(LBi:UBi,LBj:UBj,2,nIceS)
115 real(r8) :: delta, e2r, eone, epx, epy, etwos, zmax
117 real(r8),
parameter :: epso = 1.0e-12_r8
119 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: eps_xx
120 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: eps_yy
121 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: eps_xy
123# include "set_bounds.h"
132 IF (
ievp(ng).eq.1)
THEN
147 IF (
domain(ng)%Western_Edge(tile))
THEN
160 IF (
domain(ng)%Eastern_Edge(tile))
THEN
173 IF (
domain(ng)%Southern_Edge(tile))
THEN
186 IF (
domain(ng)%Northern_Edge(tile))
THEN
200 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
210 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
211 si(iend+1,jstr-1,1,
isuevp)=si(iend+1,jstr-1,liuol,
isuice)
212 si(iend+1,jstr-1,2,
isuevp)=si(iend+1,jstr-1,liuol,
isuice)
220 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
223 si(istr-1,jend+1,1,
isvevp)=si(istr-1,jend+1,liuol,
isvice)
224 si(istr-1,jend+1,2,
isvevp)=si(istr-1,jend+1,liuol,
isvice)
230 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
231 si(iend+1,jend+1,1,
isuevp)=si(iend+1,jend+1,liuol,
isuice)
232 si(iend+1,jend+1,2,
isuevp)=si(iend+1,jend+1,liuol,
isuice)
233 si(iend+1,jend+1,1,
isvevp)=si(iend+1,jend+1,liuol,
isvice)
234 si(iend+1,jend+1,2,
isvevp)=si(iend+1,jend+1,liuol,
isvice)
242 & lbi, ubi, lbj, ubj, &
257 eps_xx(i,j)=(si(i+1,j,lieol,
isuevp)- &
258 & si(i ,j,lieol,
isuevp))*pm(i,j)
259 eps_yy(i,j)=(si(i,j+1,lieol,
isvevp)- &
260 & si(i,j ,lieol,
isvevp))*pn(i,j)
261 epx=0.25_r8*(si(i+1,j+1,lieol,
isvevp)+ &
262 & si(i+1,j ,lieol,
isvevp)- &
263 & si(i-1,j+1,lieol,
isvevp)- &
264 & si(i-1,j ,lieol,
isvevp))*pm(i,j)
265 epy=0.25_r8*(si(i+1,j+1,lieol,
isuevp)+ &
266 & si(i ,j+1,lieol,
isuevp)- &
267 & si(i+1,j-1,lieol,
isuevp)- &
268 & si(i ,j-1,lieol,
isuevp))*pn(i,j)
269 eps_xy(i,j)=0.5_r8*(epx+epy)
271 eone=eps_xx(i,j)+eps_yy(i,j)
272 etwos=(eps_xx(i,j)-eps_yy(i,j))* &
273 (eps_xx(i,j)-eps_yy(i,j))+ &
274 & 4.0_r8*eps_xy(i,j)*eps_xy(i,j)
276 delta=abs(eone**2+e2r*etwos)
277 delta=max(sqrt(delta),epso)
278# ifdef ICE_STRENGTH_QUAD
282 & (1.0_r8-si(i,j,liold,
isaice)))
286 & (1.0_r8-si(i,j,liold,
isaice)))
289 zmax=2.5e+8_r8*fi(i,j,
icpice)
299 & lbi, ubi, lbj, ubj, &
303 & lbi, ubi, lbj, ubj, &
307 & lbi, ubi, lbj, ubj, &
312 & lbi, ubi, lbj, ubj, &
333 END SUBROUTINE ice_evp_tile
subroutine bc_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
type(t_grid), dimension(:), allocatable grid
integer, parameter isvice
real(r8), dimension(:), allocatable pstar
integer, dimension(:), allocatable ievp
integer, parameter icpice
real(r8), dimension(:), allocatable ellip_sq
integer, parameter icsvis
integer, parameter icbvis
real(r8), dimension(:), allocatable zetamax
real(r8), dimension(:), allocatable zetamin
type(t_ice), dimension(:), allocatable ice
integer, parameter isuevp
integer, parameter icpgrd
integer, parameter isaice
integer, parameter isvevp
integer, parameter isuice
real(r8), dimension(:), allocatable astrength
integer, parameter ishice
type(t_domain), dimension(:), allocatable domain
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
logical, dimension(:,:), allocatable compositegrid
integer, parameter isouth
integer, parameter inorth
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
recursive subroutine wclock_off(ng, model, region, line, routine)
recursive subroutine wclock_on(ng, model, region, line, routine)