/[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.36 by jmc, Wed Jun 22 00:27:47 2005 UTC revision 1.37 by jmc, Sat Oct 22 20:09:52 2005 UTC
# Line 157  C--   Set diagnostic suffix for the curr Line 157  C--   Set diagnostic suffix for the curr
157  C--   Make local copy of tracer array  C--   Make local copy of tracer array
158        DO j=1-OLy,sNy+OLy        DO j=1-OLy,sNy+OLy
159         DO i=1-OLx,sNx+OLx         DO i=1-OLx,sNx+OLx
160          localT(i,j)=tracer(i,j,k,bi,bj)          localT(i,j)=Tracer(i,j,k,bi,bj)
161         ENDDO         ENDDO
162        ENDDO        ENDDO
163    
# Line 190  C-    Advective flux in X Line 190  C-    Advective flux in X
190        IF (calcAdvection) THEN        IF (calcAdvection) THEN
191          IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN          IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN
192            CALL GAD_C2_ADV_X(bi,bj,k,uTrans,localT,af,myThid)            CALL GAD_C2_ADV_X(bi,bj,k,uTrans,localT,af,myThid)
193            ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_1RST
194         &          .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
195              CALL GAD_DST2U1_ADV_X( bi,bj,k, advectionScheme,
196         I            dTtracerLev(k), uTrans, uVel, localT,
197         O            af, myThid )
198          ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN          ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN
199            CALL GAD_FLUXLIMIT_ADV_X( bi,bj,k, dTtracerLev(k),            CALL GAD_FLUXLIMIT_ADV_X( bi,bj,k, dTtracerLev(k),
200       I            uTrans, uVel, maskW(1-Olx,1-Oly,k,bi,bj), localT,       I            uTrans, uVel, maskW(1-Olx,1-Oly,k,bi,bj), localT,
# Line 285  C-    Advective flux in Y Line 290  C-    Advective flux in Y
290        IF (calcAdvection) THEN        IF (calcAdvection) THEN
291          IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN          IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN
292            CALL GAD_C2_ADV_Y(bi,bj,k,vTrans,localT,af,myThid)            CALL GAD_C2_ADV_Y(bi,bj,k,vTrans,localT,af,myThid)
293            ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_1RST
294         &          .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
295              CALL GAD_DST2U1_ADV_Y( bi,bj,k, advectionScheme,
296         I            dTtracerLev(k), vTrans, vVel, localT,
297         O            af, myThid )
298          ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN          ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN
299            CALL GAD_FLUXLIMIT_ADV_Y( bi,bj,k, dTtracerLev(k),            CALL GAD_FLUXLIMIT_ADV_Y( bi,bj,k, dTtracerLev(k),
300       I            vTrans, vVel, maskS(1-Olx,1-Oly,k,bi,bj), localT,       I            vTrans, vVel, maskS(1-Olx,1-Oly,k,bi,bj), localT,
# Line 381  C- a hack to prevent Water-Vapor vert.tr Line 391  C- a hack to prevent Water-Vapor vert.tr
391  #endif  #endif
392  C-    Compute vertical advective flux in the interior:  C-    Compute vertical advective flux in the interior:
393          IF (vertAdvecScheme.EQ.ENUM_CENTERED_2ND) THEN          IF (vertAdvecScheme.EQ.ENUM_CENTERED_2ND) THEN
394            CALL GAD_C2_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)            CALL GAD_C2_ADV_R(bi,bj,k,rTrans,Tracer,af,myThid)
395            ELSEIF ( vertAdvecScheme.EQ.ENUM_UPWIND_1RST
396         &          .OR. vertAdvecScheme.EQ.ENUM_DST2 ) THEN
397              CALL GAD_DST2U1_ADV_R( bi,bj,k, vertAdvecScheme,
398         I         dTtracerLev(k),rTrans,wVel,Tracer(1-Olx,1-Oly,1,bi,bj),
399         O         af, myThid )
400          ELSEIF (vertAdvecScheme.EQ.ENUM_FLUX_LIMIT) THEN          ELSEIF (vertAdvecScheme.EQ.ENUM_FLUX_LIMIT) THEN
401            CALL GAD_FLUXLIMIT_ADV_R(            CALL GAD_FLUXLIMIT_ADV_R( bi,bj,k,
402       &         bi,bj,k,dTtracerLev(k),rTrans,wVel,tracer,af,myThid)       I         dTtracerLev(k),rTrans,wVel,Tracer(1-Olx,1-Oly,1,bi,bj),
403         O         af, myThid )
404          ELSEIF (vertAdvecScheme.EQ.ENUM_UPWIND_3RD ) THEN          ELSEIF (vertAdvecScheme.EQ.ENUM_UPWIND_3RD ) THEN
405            CALL GAD_U3_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)            CALL GAD_U3_ADV_R(bi,bj,k,rTrans,Tracer,af,myThid)
406          ELSEIF (vertAdvecScheme.EQ.ENUM_CENTERED_4TH) THEN          ELSEIF (vertAdvecScheme.EQ.ENUM_CENTERED_4TH) THEN
407            CALL GAD_C4_ADV_R(bi,bj,k,rTrans,tracer,af,myThid)            CALL GAD_C4_ADV_R(bi,bj,k,rTrans,Tracer,af,myThid)
408          ELSEIF (vertAdvecScheme.EQ.ENUM_DST3 ) THEN          ELSEIF (vertAdvecScheme.EQ.ENUM_DST3 ) THEN
409            CALL GAD_DST3_ADV_R(            CALL GAD_DST3_ADV_R( bi,bj,k,
410       &         bi,bj,k,dTtracerLev(k),rTrans,wVel,tracer,af,myThid)       I         dTtracerLev(k),rTrans,wVel,Tracer(1-Olx,1-Oly,1,bi,bj),
411         O         af, myThid )
412          ELSEIF (vertAdvecScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN          ELSEIF (vertAdvecScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
413  cph This block is to trick the adjoint:  cph This block is to trick the adjoint:
414  cph IF inAdExact=.FALSE., we want to use DST3  cph IF inAdExact=.FALSE., we want to use DST3
415  cph with limiters in forward, but without limiters in reverse.  cph with limiters in forward, but without limiters in reverse.
416            IF ( inAdMode ) THEN            IF ( inAdMode ) THEN
417             CALL GAD_DST3_ADV_R(             CALL GAD_DST3_ADV_R( bi,bj,k,
418       &        bi,bj,k,dTtracerLev(k),rTrans,wVel,tracer,af,myThid)       I         dTtracerLev(k),rTrans,wVel,Tracer(1-Olx,1-Oly,1,bi,bj),
419         O         af, myThid )
420            ELSE            ELSE
421             CALL GAD_DST3FL_ADV_R(             CALL GAD_DST3FL_ADV_R( bi,bj,k,
422       &        bi,bj,k,dTtracerLev(k),rTrans,wVel,tracer,af,myThid)       I         dTtracerLev(k),rTrans,wVel,Tracer(1-Olx,1-Oly,1,bi,bj),
423         O         af, myThid )
424            ENDIF            ENDIF
425          ELSE          ELSE
426            STOP 'GAD_CALC_RHS: Bad vertAdvecScheme (R)'            STOP 'GAD_CALC_RHS: Bad vertAdvecScheme (R)'
# Line 433  C           boundary condition. Line 452  C           boundary condition.
452          ENDDO          ENDDO
453         ENDDO         ENDDO
454        ELSE        ELSE
455         CALL GAD_DIFF_R(bi,bj,k,KappaR,tracer,df,myThid)         CALL GAD_DIFF_R(bi,bj,k,KappaR,Tracer,df,myThid)
456        ENDIF        ENDIF
457    
458  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

  ViewVC Help
Powered by ViewVC 1.1.22