78 |
ENDDO |
ENDDO |
79 |
ENDDO |
ENDDO |
80 |
|
|
81 |
|
C-- Unless we have already calculated the advection terms we initialize |
82 |
|
C the tendency to zero. |
83 |
|
IF (.NOT. multiDimAdvection .OR. |
84 |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
85 |
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
86 |
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
87 |
|
DO j=1-Oly,sNy+Oly |
88 |
|
DO i=1-Olx,sNx+Olx |
89 |
|
gTracer(i,j,k,bi,bj)=0. |
90 |
|
ENDDO |
91 |
|
ENDDO |
92 |
|
ENDIF |
93 |
|
|
94 |
C-- Pre-calculate del^2 T if bi-harmonic coefficient is non-zero |
C-- Pre-calculate del^2 T if bi-harmonic coefficient is non-zero |
95 |
IF (diffK4 .NE. 0.) THEN |
IF (diffK4 .NE. 0.) THEN |
106 |
ENDDO |
ENDDO |
107 |
|
|
108 |
C- Advective flux in X |
C- Advective flux in X |
109 |
|
IF (.NOT. multiDimAdvection .OR. |
110 |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
111 |
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
112 |
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
113 |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
114 |
CALL GAD_C2_ADV_X(bi,bj,k,uTrans,localT,af,myThid) |
CALL GAD_C2_ADV_X(bi,bj,k,uTrans,localT,af,myThid) |
115 |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
133 |
fZon(i,j) = fZon(i,j) + af(i,j) |
fZon(i,j) = fZon(i,j) + af(i,j) |
134 |
ENDDO |
ENDDO |
135 |
ENDDO |
ENDDO |
136 |
|
ENDIF |
137 |
|
|
138 |
C- Diffusive flux in X |
C- Diffusive flux in X |
139 |
IF (diffKh.NE.0.) THEN |
IF (diffKh.NE.0.) THEN |
181 |
ENDDO |
ENDDO |
182 |
|
|
183 |
C- Advective flux in Y |
C- Advective flux in Y |
184 |
|
IF (.NOT. multiDimAdvection .OR. |
185 |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
186 |
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
187 |
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
188 |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN |
189 |
CALL GAD_C2_ADV_Y(bi,bj,k,vTrans,localT,af,myThid) |
CALL GAD_C2_ADV_Y(bi,bj,k,vTrans,localT,af,myThid) |
190 |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
208 |
fMer(i,j) = fMer(i,j) + af(i,j) |
fMer(i,j) = fMer(i,j) + af(i,j) |
209 |
ENDDO |
ENDDO |
210 |
ENDDO |
ENDDO |
211 |
|
ENDIF |
212 |
|
|
213 |
C- Diffusive flux in Y |
C- Diffusive flux in Y |
214 |
IF (diffKh.NE.0.) THEN |
IF (diffKh.NE.0.) THEN |
256 |
ENDDO |
ENDDO |
257 |
|
|
258 |
C- Advective flux in R |
C- Advective flux in R |
259 |
|
IF (.NOT. multiDimAdvection .OR. |
260 |
|
& advectionScheme.EQ.ENUM_CENTERED_2ND .OR. |
261 |
|
& advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
262 |
|
& advectionScheme.EQ.ENUM_CENTERED_4TH ) THEN |
263 |
C Note: wVel needs to be masked |
C Note: wVel needs to be masked |
264 |
IF (K.GE.2) THEN |
IF (K.GE.2) THEN |
265 |
C- Compute vertical advective flux in the interior: |
C- Compute vertical advective flux in the interior: |
305 |
fVerT(i,j,kUp) = fVerT(i,j,kUp) + afFacT*af(i,j) |
fVerT(i,j,kUp) = fVerT(i,j,kUp) + afFacT*af(i,j) |
306 |
ENDDO |
ENDDO |
307 |
ENDDO |
ENDDO |
308 |
|
ENDIF |
309 |
|
|
310 |
C- Diffusive flux in R |
C- Diffusive flux in R |
311 |
C Note: For K=1 then KM1=1 and this gives a dT/dr = 0 upper |
C Note: For K=1 then KM1=1 and this gives a dT/dr = 0 upper |
381 |
C-- Divergence of fluxes |
C-- Divergence of fluxes |
382 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
383 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
384 |
gTracer(i,j,k,bi,bj)= |
gTracer(i,j,k,bi,bj)=gTracer(i,j,k,bi,bj) |
385 |
& -_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
386 |
& *recip_rA(i,j,bi,bj) |
& *recip_rA(i,j,bi,bj) |
387 |
& *( |
& *( |