11 |
I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown, |
I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown, |
12 |
I xA,yA,uTrans,vTrans,rTrans,maskUp, |
I xA,yA,uTrans,vTrans,rTrans,maskUp, |
13 |
I diffKh, diffK4, KappaRT, Tracer, |
I diffKh, diffK4, KappaRT, Tracer, |
14 |
I tracerIdentity, advectionScheme, |
I tracerIdentity, advectionScheme, calcAdvection, |
15 |
U fVerT, gTracer, |
U fVerT, gTracer, |
16 |
I myThid ) |
I myThid ) |
17 |
|
|
63 |
C Tracer :: tracer field |
C Tracer :: tracer field |
64 |
C tracerIdentity :: identifier for the tracer (required only for KPP) |
C tracerIdentity :: identifier for the tracer (required only for KPP) |
65 |
C advectionScheme :: advection scheme to use |
C advectionScheme :: advection scheme to use |
66 |
|
C calcAdvection :: =False if Advec terms computed with multiDim scheme |
67 |
C myThid :: thread number |
C myThid :: thread number |
68 |
INTEGER bi,bj,iMin,iMax,jMin,jMax |
INTEGER bi,bj,iMin,iMax,jMin,jMax |
69 |
INTEGER k,kUp,kDown,kM1 |
INTEGER k,kUp,kDown,kM1 |
78 |
_RL Tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
_RL Tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
79 |
INTEGER tracerIdentity |
INTEGER tracerIdentity |
80 |
INTEGER advectionScheme |
INTEGER advectionScheme |
81 |
|
LOGICAL calcAdvection |
82 |
INTEGER myThid |
INTEGER myThid |
83 |
|
|
84 |
C !OUTPUT PARAMETERS: ================================================== |
C !OUTPUT PARAMETERS: ================================================== |
130 |
|
|
131 |
C-- Unless we have already calculated the advection terms we initialize |
C-- Unless we have already calculated the advection terms we initialize |
132 |
C the tendency to zero. |
C the tendency to zero. |
133 |
IF (.NOT. multiDimAdvection .OR. |
IF (calcAdvection) THEN |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
|
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
|
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
|
134 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
135 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
136 |
gTracer(i,j,k,bi,bj)=0. _d 0 |
gTracer(i,j,k,bi,bj)=0. _d 0 |
153 |
ENDDO |
ENDDO |
154 |
|
|
155 |
C- Advective flux in X |
C- Advective flux in X |
156 |
IF (.NOT. multiDimAdvection .OR. |
IF (calcAdvection) THEN |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
|
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
|
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
|
157 |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
158 |
CALL GAD_C2_ADV_X(bi,bj,k,uTrans,localT,af,myThid) |
CALL GAD_C2_ADV_X(bi,bj,k,uTrans,localT,af,myThid) |
159 |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
225 |
ENDDO |
ENDDO |
226 |
|
|
227 |
C- Advective flux in Y |
C- Advective flux in Y |
228 |
IF (.NOT. multiDimAdvection .OR. |
IF (calcAdvection) THEN |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
|
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
|
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
|
229 |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
230 |
CALL GAD_C2_ADV_Y(bi,bj,k,vTrans,localT,af,myThid) |
CALL GAD_C2_ADV_Y(bi,bj,k,vTrans,localT,af,myThid) |
231 |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
290 |
ENDIF |
ENDIF |
291 |
|
|
292 |
C- Advective flux in R |
C- Advective flux in R |
293 |
IF (.NOT. multiDimAdvection .OR. |
IF (calcAdvection) THEN |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
|
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
|
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
|
294 |
C Note: wVel needs to be masked |
C Note: wVel needs to be masked |
295 |
IF (K.GE.2) THEN |
IF (K.GE.2) THEN |
296 |
C- Compute vertical advective flux in the interior: |
C- Compute vertical advective flux in the interior: |
348 |
ELSE |
ELSE |
349 |
CALL GAD_DIFF_R(bi,bj,k,KappaRT,tracer,df,myThid) |
CALL GAD_DIFF_R(bi,bj,k,KappaRT,tracer,df,myThid) |
350 |
ENDIF |
ENDIF |
|
c DO j=1-Oly,sNy+Oly |
|
|
c DO i=1-Olx,sNx+Olx |
|
|
c fVerT(i,j,kUp) = fVerT(i,j,kUp) + df(i,j)*maskUp(i,j) |
|
|
c ENDDO |
|
|
c ENDDO |
|
351 |
|
|
352 |
#ifdef ALLOW_GMREDI |
#ifdef ALLOW_GMREDI |
353 |
C- GM/Redi flux in R |
C- GM/Redi flux in R |
358 |
I Tracer, |
I Tracer, |
359 |
U df, |
U df, |
360 |
I myThid) |
I myThid) |
|
c DO j=1-Oly,sNy+Oly |
|
|
c DO i=1-Olx,sNx+Olx |
|
|
c fVerT(i,j,kUp) = fVerT(i,j,kUp) + df(i,j)*maskUp(i,j) |
|
|
c ENDDO |
|
|
c ENDDO |
|
361 |
ENDIF |
ENDIF |
362 |
#endif |
#endif |
363 |
|
|