/[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.1 by adcroft, Wed May 30 19:34:48 2001 UTC revision 1.2 by jmc, Thu Jul 12 00:26:30 2001 UTC
# Line 98  C-    Advective flux in X Line 98  C-    Advective flux in X
98        ELSEIF (gad_advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN        ELSEIF (gad_advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN
99         CALL GAD_FLUXLIMIT_ADV_X(         CALL GAD_FLUXLIMIT_ADV_X(
100       &      bi,bj,k,deltaTtracer,uTrans,uVel,localT,af,myThid)       &      bi,bj,k,deltaTtracer,uTrans,uVel,localT,af,myThid)
101          ELSEIF (gad_advection_scheme.EQ.ENUM_UPWIND_3RD ) THEN
102           CALL GAD_U3_ADV_X(bi,bj,k,uTrans,localT,af,myThid)
103        ELSEIF (gad_advection_scheme.EQ.ENUM_CENTERED_4TH) THEN        ELSEIF (gad_advection_scheme.EQ.ENUM_CENTERED_4TH) THEN
104         CALL GAD_C4_ADV_X(bi,bj,k,uTrans,localT,af,myThid)         CALL GAD_C4_ADV_X(bi,bj,k,uTrans,localT,af,myThid)
105        ELSE        ELSE
106         stop 'CALC_GTRACER: Bad gad_advection_scheme (X)'         STOP 'GAD_CALC_RHS: Bad gad_advection_scheme (X)'
107        ENDIF        ENDIF
108        DO j=jMin,jMax        DO j=jMin,jMax
109         DO i=iMin,iMax         DO i=iMin,iMax
# Line 160  C-    Advective flux in Y Line 162  C-    Advective flux in Y
162        ELSEIF (gad_advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN        ELSEIF (gad_advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN
163         CALL GAD_FLUXLIMIT_ADV_Y(         CALL GAD_FLUXLIMIT_ADV_Y(
164       &       bi,bj,k,deltaTtracer,vTrans,vVel,localT,af,myThid)       &       bi,bj,k,deltaTtracer,vTrans,vVel,localT,af,myThid)
165          ELSEIF (gad_advection_scheme.EQ.ENUM_UPWIND_3RD ) THEN
166           CALL GAD_U3_ADV_Y(bi,bj,k,vTrans,localT,af,myThid)
167        ELSEIF (gad_advection_scheme.EQ.ENUM_CENTERED_4TH) THEN        ELSEIF (gad_advection_scheme.EQ.ENUM_CENTERED_4TH) THEN
168         CALL GAD_C4_ADV_Y(bi,bj,k,vTrans,localT,af,myThid)         CALL GAD_C4_ADV_Y(bi,bj,k,vTrans,localT,af,myThid)
169        ELSE        ELSE
170         stop 'CALC_GTRACER: Bad gad_advection_scheme (Y)'         STOP 'GAD_CALC_RHS: Bad gad_advection_scheme (Y)'
171        ENDIF        ENDIF
172        DO j=1-Oly,sNy+Oly        DO j=1-Oly,sNy+Oly
173         DO i=1-Olx,sNx+Olx         DO i=1-Olx,sNx+Olx
# Line 217  C--   Initialize net flux in R Line 221  C--   Initialize net flux in R
221        ENDDO        ENDDO
222    
223  C-    Advective flux in R  C-    Advective flux in R
224        IF (gad_advection_scheme.EQ.ENUM_CENTERED_2ND) THEN  C     Note: wVel needs to be masked
225         CALL GAD_C2_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)        IF (K.GE.2) THEN
226        ELSEIF (gad_advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN  C-    Compute vertical advective flux in the interior:
227         CALL GAD_FLUXLIMIT_ADV_R(         IF (gad_advection_scheme.EQ.ENUM_CENTERED_2ND) THEN
228            CALL GAD_C2_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)
229           ELSEIF (gad_advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN
230            CALL GAD_FLUXLIMIT_ADV_R(
231       &       bi,bj,k,deltaTtracer,rTrans,wVel,tracer,af,myThid)       &       bi,bj,k,deltaTtracer,rTrans,wVel,tracer,af,myThid)
232        ELSEIF (gad_advection_scheme.EQ.ENUM_CENTERED_4TH) THEN         ELSEIF (gad_advection_scheme.EQ.ENUM_UPWIND_3RD ) THEN
233         CALL GAD_C4_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)          CALL GAD_U3_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)
234  c      CALL GAD_C2_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)         ELSEIF (gad_advection_scheme.EQ.ENUM_CENTERED_4TH) THEN
235            CALL GAD_C4_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)
236    c       CALL GAD_C2_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)
237           ELSE
238            STOP 'GAD_CALC_RHS: Bad gad_advection_scheme (R)'
239           ENDIF
240    C-    Surface "correction" term at k>1 :
241           DO j=1-Oly,sNy+Oly
242            DO i=1-Olx,sNx+Olx
243             af(i,j) = af(i,j)
244         &           + (maskC(i,j,k,bi,bj)-maskC(i,j,k-1,bi,bj))*
245         &             rTrans(i,j)*Tracer(i,j,k,bi,bj)
246            ENDDO
247           ENDDO
248        ELSE        ELSE
249         stop 'CALC_GTRACER: Bad gad_advection_scheme (R)'  C-    Surface "correction" term at k=1 :
250           DO j=1-Oly,sNy+Oly
251            DO i=1-Olx,sNx+Olx
252             af(i,j) = rTrans(i,j)*Tracer(i,j,k,bi,bj)
253            ENDDO
254           ENDDO
255        ENDIF        ENDIF
256    C-    add the advective flux to fVerT
257        DO j=jMin,jMax        DO j=jMin,jMax
258         DO i=iMin,iMax         DO i=iMin,iMax
259          fVerT(i,j,kUp) = fVerT(i,j,kUp) + afFacT*af(i,j)          fVerT(i,j,kUp) = fVerT(i,j,kUp) + afFacT*af(i,j)

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22