/[MITgcm]/MITgcm/model/src/timestep_tracer.F
ViewVC logotype

Diff of /MITgcm/model/src/timestep_tracer.F

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

revision 1.1.2.1 by jmc, Mon Apr 9 16:08:35 2001 UTC revision 1.6 by adcroft, Tue Sep 4 14:53:10 2001 UTC
# Line 4  C $Name$ Line 4  C $Name$
4  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
5    
6        SUBROUTINE TIMESTEP_TRACER(        SUBROUTINE TIMESTEP_TRACER(
7       I                     bi, bj, iMin, iMax, jMin, jMax, K, tauAB,       I                     bi, bj, iMin, iMax, jMin, jMax, K,
8       U                     tracer, gTracer, gTrNm1,       I                     advection_scheme,
9         I                     tracer, gTracer,
10         O                     gTrNm1,
11       I                     myIter, myThid )       I                     myIter, myThid )
12  C     /==========================================================\  C     /==========================================================\
13  C     | S/R TIMESTEP_TRACER                                      |  C     | S/R TIMESTEP_TRACER                                      |
# Line 17  C     == Global variables === Line 19  C     == Global variables ===
19  #include "SIZE.h"  #include "SIZE.h"
20  #include "EEPARAMS.h"  #include "EEPARAMS.h"
21  #include "PARAMS.h"  #include "PARAMS.h"
22    #include "GAD.h"
23    #include "GRID.h"
24    #include "SURFACE.h"
25    
26  C     == Routine Arguments ==  C     == Routine Arguments ==
 C     tauAB - Adams-Bashforth timestepping weight: 0=forward ; 1/2=Adams-Bashf.  
27        INTEGER bi,bj,iMin,iMax,jMin,jMax,K        INTEGER bi,bj,iMin,iMax,jMin,jMax,K
28        _RL  tauAB        INTEGER advection_scheme
29        _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)
30        _RL  gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL  gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
31        _RL  gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL  gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
# Line 29  C     tauAB - Adams-Bashforth timesteppi Line 33  C     tauAB - Adams-Bashforth timesteppi
33  C     == Local variables ==  C     == Local variables ==
34        INTEGER i,j        INTEGER i,j
35        _RL ab15,ab05        _RL ab15,ab05
36          _RL gTrtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
37    
38  C     Adams-Bashforth timestepping weights  C     Adams-Bashforth timestepping weights
39        ab15 = 1.+ tauAB        IF (myIter .EQ. 0) THEN
40        ab05 = -tauAB         ab15=1.0
41           ab05=0.0
42          ELSE
43           ab15=1.5+abEps
44           ab05=-(0.5+abEps)
45          ENDIF
46    
47    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
48    C     Compute effective G-term:
49          IF ( advection_scheme.EQ.ENUM_CENTERED_2ND
50         & .OR.advection_scheme.EQ.ENUM_UPWIND_3RD
51         & .OR.advection_scheme.EQ.ENUM_CENTERED_4TH ) THEN
52    
53  C     Step forward temperature  C-    with Adams-Bashforth weights:
54        DO j=jMin,jMax         DO j=jMin,jMax
55            DO i=iMin,iMax
56             gTrtmp(i,j) = ab15*gTracer(i,j,k,bi,bj)
57         &               + ab05*gTrNm1(i,j,k,bi,bj)
58            ENDDO
59           ENDDO
60    
61          ELSEIF (advection_scheme.EQ.ENUM_FLUX_LIMIT
62         &    .OR.advection_scheme.EQ.ENUM_DST3
63         &    .OR.advection_scheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
64    
65    C-    with no Adams-Bashforth weights:
66           DO j=jMin,jMax
67          DO i=iMin,iMax          DO i=iMin,iMax
68            gTrNm1(i,j,k,bi,bj)=tracer(i,j,k,bi,bj)           gTrtmp(i,j) = gTracer(i,j,k,bi,bj)
      &             +deltaTtracer*(  
      &                              ab15*gTracer(i,j,k,bi,bj)  
      &                             +ab05*gTrNm1(i,j,k,bi,bj)  )  
69          ENDDO          ENDDO
70           ENDDO
71    
72          ELSE
73           STOP 'TIMESTEP_TRACER: Bad advection_scheme'
74          ENDIF
75    
76    #ifdef NONLIN_FRSURF
77          IF (nonlinFreeSurf.GT.0) THEN
78           DO j=jMin,jMax
79            DO i=iMin,iMax
80             IF (k.EQ.ksurfC(i,j,bi,bj)) THEN
81              gTrtmp(i,j) = gTrtmp(i,j)
82         &          *hFacC(i,j,k,bi,bj)/hFac_surfC(i,j,bi,bj)
83             ENDIF
84            ENDDO
85           ENDDO
86          ENDIF
87    #endif /* NONLIN_FRSURF */
88    
89    C-    Step forward tracer
90          DO j=jMin,jMax
91           DO i=iMin,iMax
92             gTrNm1(i,j,k,bi,bj)=tracer(i,j,k,bi,bj)
93         &            +deltaTtracer*gTrtmp(i,j)
94           ENDDO
95        ENDDO        ENDDO
96    
97        RETURN        RETURN

Legend:
Removed from v.1.1.2.1  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22