/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_calc_rhs.F
ViewVC logotype

Diff of /MITgcm/pkg/generic_advdiff/gad_calc_rhs.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.7 by heimbach, Wed Sep 5 17:46:03 2001 UTC revision 1.8 by adcroft, Mon Sep 10 01:22:48 2001 UTC
# Line 78  C--   Make local copy of tracer array Line 78  C--   Make local copy of tracer array
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
# Line 94  C--   Initialize net flux in X direction Line 106  C--   Initialize net flux in X direction
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
# Line 117  C-    Advective flux in X Line 133  C-    Advective flux in X
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
# Line 164  C--   Initialize net flux in Y direction Line 181  C--   Initialize net flux in Y direction
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
# Line 187  C-    Advective flux in Y Line 208  C-    Advective flux in Y
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
# Line 234  C--   Initialize net flux in R Line 256  C--   Initialize net flux in R
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:
# Line 279  C-    add the advective flux to fVerT Line 305  C-    add the advective flux to fVerT
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
# Line 354  C *note* should update KPP_TRANSPORT_T t Line 381  C *note* should update KPP_TRANSPORT_T t
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       &    *(       &    *(

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22