73 |
|
|
74 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
75 |
|
|
76 |
IF ( useEXF .OR. useSEAICE ) THEN |
C- Only compute/update seaice fields over the interior |
77 |
C- EXF does not provide valid fields in overlap |
C (excluding overlap) and apply exchanges when needed |
78 |
iMin = 1 |
iMin = 1 |
79 |
iMax = sNx |
iMax = sNx |
80 |
jMin = 1 |
jMin = 1 |
81 |
jMax = sNy |
jMax = sNy |
|
ELSEIF ( stressReduction.GT. 0. _d 0 ) THEN |
|
|
C- needs new Ice Fraction in halo region to apply wind-stress reduction |
|
|
iMin = 1-OLx |
|
|
iMax = sNx+OLx-1 |
|
|
jMin = 1-OLy |
|
|
jMax = sNy+OLy-1 |
|
|
#ifdef ATMOSPHERIC_LOADING |
|
|
ELSEIF ( useRealFreshWaterFlux ) THEN |
|
|
C- needs sea-ice loading in part of the halo regions for grad.Phi0surf |
|
|
C to be valid at the boundaries ( d/dx 1:sNx+1 ; d/dy 1:sNy+1 ) |
|
|
iMin = 0 |
|
|
iMax = sNx+1 |
|
|
jMin = 0 |
|
|
jMax = sNy+1 |
|
|
#endif /* ATMOSPHERIC_LOADING */ |
|
|
ELSE |
|
|
iMin = 1 |
|
|
iMax = sNx |
|
|
jMin = 1 |
|
|
jMax = sNy |
|
|
ENDIF |
|
82 |
|
|
83 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
84 |
DO bi=myBxLo(myThid),myBxHi(myThid) |
DO bi=myBxLo(myThid),myBxHi(myThid) |
223 |
|
|
224 |
C-- Exchange fields that are advected by seaice dynamics |
C-- Exchange fields that are advected by seaice dynamics |
225 |
IF ( useSEAICE .OR. thSIceAdvScheme.GT.0 |
IF ( useSEAICE .OR. thSIceAdvScheme.GT.0 |
226 |
& .OR. ( useEXF .AND. stressReduction.GT.zeroRL ) ) THEN |
& .OR. stressReduction.GT.zeroRL ) THEN |
227 |
CALL THSICE_DO_EXCH( myThid ) |
CALL THSICE_DO_EXCH( myThid ) |
228 |
ENDIF |
ENDIF |
229 |
#ifdef OLD_THSICE_CALL_SEQUENCE |
#ifdef OLD_THSICE_CALL_SEQUENCE |
230 |
#ifdef ATMOSPHERIC_LOADING |
#ifdef ATMOSPHERIC_LOADING |
231 |
IF ( useRealFreshWaterFlux .AND. |
IF ( useRealFreshWaterFlux ) |
|
& ( useEXF .OR. useSEAICE .OR. thSIceAdvScheme.GT.0 ) ) |
|
232 |
& _EXCH_XY_RS( sIceLoad, myThid ) |
& _EXCH_XY_RS( sIceLoad, myThid ) |
233 |
#endif |
#endif |
234 |
#else /* OLD_THSICE_CALL_SEQUENCE */ |
#else /* OLD_THSICE_CALL_SEQUENCE */ |
235 |
#ifdef ATMOSPHERIC_LOADING |
#ifdef ATMOSPHERIC_LOADING |
236 |
IF ( useRealFreshWaterFlux .AND. (useEXF.OR.useSEAICE ) |
IF ( useRealFreshWaterFlux .AND. thSIceAdvScheme.LE.0 ) |
|
& .AND. thSIceAdvScheme.LE.0 ) |
|
237 |
& _EXCH_XY_RS( sIceLoad, myThid ) |
& _EXCH_XY_RS( sIceLoad, myThid ) |
238 |
#endif |
#endif |
239 |
|
|
264 |
CADJ STORE fv(:,:,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
CADJ STORE fv(:,:,bi,bj) = comlev1_bibj, key=ticekey, byte=isbyte |
265 |
#endif |
#endif |
266 |
IF ( stressReduction.GT. 0. _d 0 ) THEN |
IF ( stressReduction.GT. 0. _d 0 ) THEN |
267 |
DO j = jMin, jMax |
DO j = 1-OLy,sNy+OLy-1 |
268 |
DO i = iMin+1,iMax |
DO i = 2-OLx,sNx+OLx-1 |
269 |
tauFac = stressReduction |
tauFac = stressReduction |
270 |
& *(iceMask(i-1,j,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
& *(iceMask(i-1,j,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
271 |
fu(i,j,bi,bj) = (1. _d 0 - tauFac)*fu(i,j,bi,bj) |
fu(i,j,bi,bj) = (1. _d 0 - tauFac)*fu(i,j,bi,bj) |
272 |
ENDDO |
ENDDO |
273 |
ENDDO |
ENDDO |
274 |
DO j = jMin+1, jMax |
DO j = 2-OLy,sNy+OLy-1 |
275 |
DO i = iMin, iMax |
DO i = 1-OLx,sNx+OLx-1 |
276 |
tauFac = stressReduction |
tauFac = stressReduction |
277 |
& *(iceMask(i,j-1,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
& *(iceMask(i,j-1,bi,bj)+iceMask(i,j,bi,bj))*0.5 _d 0 |
278 |
fv(i,j,bi,bj) = (1. _d 0 - tauFac)*fv(i,j,bi,bj) |
fv(i,j,bi,bj) = (1. _d 0 - tauFac)*fv(i,j,bi,bj) |