3#if defined ICE_MODEL && defined SOLVE3D
35 PUBLIC :: ice_set_avg_tile
40 SUBROUTINE ice_set_avg (ng, tile, model)
45 integer,
intent(in) :: ng, tile, model
49 character (len=*),
parameter :: MyFile = &
55 CALL wclock_on (ng, model, 5, __line__, myfile)
57 CALL ice_set_avg_tile (ng, tile, model, &
58 & lbi, ubi, lbj, ubj, &
59 & imins, imaxs, jmins, jmaxs, &
63 CALL wclock_off (ng, model, 5, __line__, myfile)
67 END SUBROUTINE ice_set_avg
70 SUBROUTINE ice_set_avg_tile (ng, tile, model, &
71 & LBi, UBi, LBj, UBj, &
72 & IminS, ImaxS, JminS, JmaxS, &
79 integer,
intent(in) :: ng, tile, model
80 integer,
intent(in) :: LBi, UBi, LBj, UBj
81 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
82 integer,
intent(in) :: Iout
86 integer :: i, ifield, j, nf, ns
90 real(r8) :: rfac(IminS:ImaxS,JminS:JmaxS)
91 real(r8) :: ufac(IminS:ImaxS,JminS:JmaxS)
92 real(r8) :: vfac(IminS:ImaxS,JminS:JmaxS)
94# include "set_bounds.h"
100 IF (
navg(ng).eq.0)
RETURN
109 & (mod(
iic(ng)-1,
navg(ng)).eq.1)).or. &
116 IF (
isice(ns).gt.0)
THEN
118 IF (
aout(ifield,ng))
THEN
124 &
grid(ng)%rmask_full(i,j)
135 IF (
ifice(nf).gt.0)
THEN
137 IF (
aout(ifield,ng))
THEN
143 &
grid(ng)%rmask_full(i,j)
160 IF (
isice(ns).gt.0)
THEN
162 IF (
aout(ifield,ng))
THEN
167 &
grid(ng)%rmask_full(i,j)* &
169 &
ice(ng)%Si(i,j,iout,ns)
179 IF (
ifice(nf).gt.0)
THEN
181 IF (
aout(ifield,ng))
THEN
186 &
grid(ng)%rmask_full(i,j)* &
203 & (mod(
iic(ng)-1,
navg(ng)).eq.0).and. &
217 rfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%rmask_avg(i,j))
218 ufac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%umask_avg(i,j))
219 vfac(i,j)=1.0_r8/max(1.0_r8,
grid(ng)%vmask_avg(i,j))
223 fac=1.0_r8/real(
navg(ng),r8)
236 IF (
isice(ns).gt.0)
THEN
238 IF (
aout(ifield,ng))
THEN
241 ice_savg(ns,ng)%var(i,j)=rfac(i,j)* &
247 & lbi, ubi, lbj, ubj, &
252 & lbi, ubi, lbj, ubj, &
265 IF (
ifice(nf).gt.0)
THEN
267 IF (
aout(ifield,ng))
THEN
270 ice_favg(nf,ng)%var(i,j)=rfac(i,j)* &
276 & lbi, ubi, lbj, ubj, &
281 & lbi, ubi, lbj, ubj, &
293 END SUBROUTINE ice_set_avg_tile
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
type(t_grid), dimension(:), allocatable grid
integer, dimension(nicef) ifice
type(t_ice), dimension(:), allocatable ice
integer, dimension(nices) isice
type(t_ice_avg), dimension(:,:), allocatable ice_savg
type(t_ice_avg), dimension(:,:), allocatable ice_favg
logical, dimension(:,:), allocatable aout
integer, dimension(:), allocatable nrrec
integer, dimension(:), allocatable iic
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
integer, dimension(:), allocatable navg
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable ntsavg
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)