44 SUBROUTINE ice_spdiw (ng, tile, model)
51 integer,
intent(in) :: ng, tile, model
55 character (len=*),
parameter :: MyFile = &
61 CALL wclock_on (ng, model, 42, __line__, myfile)
63 CALL ice_spdiw_tile (ng, tile, model, &
64 & lbi, ubi, lbj, ubj, &
65 & imins, imaxs, jmins, jmaxs, &
80 CALL wclock_off (ng, model, 42, __line__, myfile)
84 END SUBROUTINE ice_spdiw
87 SUBROUTINE ice_spdiw_tile (ng, tile, model, &
88 & LBi, UBi, LBj, UBj, &
89 & IminS, ImaxS, JminS, JmaxS, &
104 integer,
intent(in) :: ng, tile, model
105 integer,
intent(in) :: LBi, UBi, LBj, UBj
106 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
107 integer,
intent(in) :: nrhs
108 integer,
intent(in) :: liuol
111 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
112 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
113 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
114 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
116 real(r8),
intent(in) :: hsbl(LBi:,LBj:)
118 real(r8),
intent(in) :: Si(LBi:,LBj:,:,:)
119 real(r8),
intent(inout) :: Fi(LBi:,LBj:,:)
121 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
122 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
123 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
124 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
126 real(r8),
intent(in) :: hsbl(LBi:UBi,LBj:UBj)
128 real(r8),
intent(in) :: Si(LBi:UBi,LBj:UBj,2,nIceS)
129 real(r8),
intent(inout) :: Fi(LBi:UBi,LBj:UBj,nIceF)
135 integer :: nlio, nbotu, nbotv, k
137 integer,
dimension(IminS:ImaxS,JminS:JmaxS) :: nbot
139 real(r8) :: dml, mlio, totml
141 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: uw
142 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: vw
144# include "set_bounds.h"
155 mlio=min(-abs(hsbl(i,j)),-10.0_r8)
161 IF (z_r(i,j,k).lt.mlio)
THEN
162 nbot(i,j)=min(k,n(ng))
163 nbot(i,j)=max(nbot(i,j),1)
175 nbotu=nint(0.5_r8*(nbot(i-1,j)+nbot(i,j)))
176 nbotu=max(min(nbotu,n(ng)),1)
181 dml=0.5_r8*(z_w(i-1,j,k)-z_w(i-1,j,k-1)+ &
182 & z_w(i ,j,k)-z_w(i ,j,k-1))
183 uw(i,j)=uw(i,j)+u(i,j,k,nrhs)*dml
186 uw(i,j)=uw(i,j)/totml
195 nbotv=nint(0.5_r8*(nbot(i,j-1)+nbot(i,j)))
196 nbotv=max(min(nbotv,n(ng)),1)
201 dml=0.5_r8*(z_w(i,j-1,k)-z_w(i,j-1,k-1)+ &
202 & z_w(i,j ,k)-z_w(i,j ,k-1))
203 vw(i,j)=vw(i,j)+v(i,j,k,nrhs)*dml
206 vw(i,j)=vw(i,j)/totml
216 & sqrt((uw(i ,j)-si(i ,j,liuol,
isuice)+ &
217 & uw(i+1,j)-si(i+1,j,liuol,
isuice))**2+ &
218 & (vw(i,j )-si(i,j ,liuol,
isvice)+ &
219 & vw(i,j+1)-si(i,j+1,liuol,
isvice))**2)
239 & lbi, ubi, lbj, ubj, &
243 & lbi, ubi, lbj, ubj, &
247 & lbi, ubi, lbj, ubj, &
252 & lbi, ubi, lbj, ubj, &
260 END SUBROUTINE ice_spdiw_tile
subroutine bc_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine bc_v2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine bc_u2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
type(t_grid), dimension(:), allocatable grid
integer, parameter isvice
integer, parameter icuavg
type(t_ice), dimension(:), allocatable ice
integer, parameter icvavg
integer, parameter iciovs
integer, parameter isuice
type(t_mixing), dimension(:), allocatable mixing
type(t_ocean), dimension(:), allocatable ocean
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
integer, dimension(:), allocatable nrhs
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)