120 |
C nCFace :: owns a tile for cube grid runs using |
C nCFace :: owns a tile for cube grid runs using |
121 |
C :: multi-dim advection. |
C :: multi-dim advection. |
122 |
C [N,S,E,W]_edge :: true if N,S,E,W edge of myTile is an Edge of the cube |
C [N,S,E,W]_edge :: true if N,S,E,W edge of myTile is an Edge of the cube |
123 |
|
C msgBuf :: Informational/error message buffer |
124 |
_RS maskLocW(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RS maskLocW(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
125 |
_RS maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RS maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
126 |
INTEGER iMin,iMax,jMin,jMax |
INTEGER iMin,iMax,jMin,jMax |
133 |
INTEGER nipass,ipass |
INTEGER nipass,ipass |
134 |
INTEGER nCFace |
INTEGER nCFace |
135 |
LOGICAL N_edge, S_edge, E_edge, W_edge |
LOGICAL N_edge, S_edge, E_edge, W_edge |
136 |
|
CHARACTER*(MAX_LEN_MBUF) msgBuf |
137 |
#ifdef ALLOW_EXCH2 |
#ifdef ALLOW_EXCH2 |
138 |
INTEGER myTile |
INTEGER myTile |
139 |
#endif |
#endif |
|
#ifdef ALLOW_AUTODIFF_TAMC |
|
|
C msgBuf :: Informational/error message buffer |
|
|
CHARACTER*(MAX_LEN_MBUF) msgBuf |
|
|
#endif |
|
140 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
141 |
CHARACTER*8 diagName |
CHARACTER*8 diagName |
142 |
CHARACTER*4 SEAICE_DIAG_SUFX, diagSufx |
CHARACTER*4 SEAICE_DIAG_SUFX, diagSufx |
202 |
IF (useCubedSphereExchange) THEN |
IF (useCubedSphereExchange) THEN |
203 |
nipass=3 |
nipass=3 |
204 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
205 |
IF ( nipass.GT.maxcube ) STOP 'maxcube needs to be = 3' |
IF ( nipass.GT.maxcube ) THEN |
206 |
|
WRITE(msgBuf,'(A)') |
207 |
|
& 'SEAICE_ADVECTION: maxcube needs to be =3; check tamc.h ' |
208 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
209 |
|
STOP 'ABNORMAL END: S/R SEAICE_ADVECTION' |
210 |
|
ENDIF |
211 |
#endif |
#endif |
212 |
#ifdef ALLOW_EXCH2 |
#ifdef ALLOW_EXCH2 |
213 |
myTile = W2_myTileList(bi,bj) |
myTile = W2_myTileList(bi,bj) |
285 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
286 |
passkey = ipass + (igadkey-1)*maxpass |
passkey = ipass + (igadkey-1)*maxpass |
287 |
IF (nipass .GT. maxpass) THEN |
IF (nipass .GT. maxpass) THEN |
288 |
STOP 'SEAICE_ADVECTION: nipass > maxcube. check tamc.h' |
WRITE(msgBuf,'(A,2I3)') |
289 |
|
& 'SEAICE_ADVECTION: nipass > max[ass. check tamc.h ', |
290 |
|
& nipass, maxpass |
291 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
292 |
|
STOP 'ABNORMAL END: S/R SEAICE_ADVECTION' |
293 |
ENDIF |
ENDIF |
294 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
295 |
|
|
338 |
IF ( .NOT.overlapOnly .OR. N_edge .OR. S_edge ) THEN |
IF ( .NOT.overlapOnly .OR. N_edge .OR. S_edge ) THEN |
339 |
|
|
340 |
C- Advective flux in X |
C- Advective flux in X |
341 |
DO j=1-Oly,sNy+Oly |
DO j=1-OLy,sNy+OLy |
342 |
DO i=1-Olx,sNx+Olx |
DO i=1-OLx,sNx+OLx |
343 |
af(i,j) = 0. |
af(i,j) = 0. |
344 |
ENDDO |
ENDDO |
345 |
ENDDO |
ENDDO |
390 |
O af, myThid ) |
O af, myThid ) |
391 |
#endif |
#endif |
392 |
ELSE |
ELSE |
393 |
STOP |
WRITE(msgBuf,'(A,I3,A)') |
394 |
& 'SEAICE_ADVECTION: adv. scheme incompatibale with multi-dim' |
& 'SEAICE_ADVECTION: adv. scheme ', advectionScheme, |
395 |
|
& ' incompatibale with multi-dim. adv.' |
396 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
397 |
|
STOP 'ABNORMAL END: S/R SEAICE_ADVECTION' |
398 |
ENDIF |
ENDIF |
399 |
|
|
400 |
C-- Advective flux in X : done |
C-- Advective flux in X : done |
592 |
O af, myThid ) |
O af, myThid ) |
593 |
#endif |
#endif |
594 |
ELSE |
ELSE |
595 |
STOP |
WRITE(msgBuf,'(A,I3,A)') |
596 |
& 'SEAICE_ADVECTION: adv. scheme incompatibale with mutli-dim' |
& 'SEAICE_ADVECTION: adv. scheme ', advectionScheme, |
597 |
|
& ' incompatibale with multi-dim. adv.' |
598 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
599 |
|
STOP 'ABNORMAL END: S/R SEAICE_ADVECTION' |
600 |
ENDIF |
ENDIF |
601 |
|
|
602 |
C- Advective flux in Y : done |
C- Advective flux in Y : done |