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

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

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

revision 1.9 by jmc, Tue Feb 19 13:42:19 2013 UTC revision 1.10 by jmc, Thu Aug 14 16:49:19 2014 UTC
# Line 7  CBOP Line 7  CBOP
7  C     !ROUTINE: ADAMS_BASHFORTH2  C     !ROUTINE: ADAMS_BASHFORTH2
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE ADAMS_BASHFORTH2(        SUBROUTINE ADAMS_BASHFORTH2(
10       I                     bi, bj, k, kSize,       I                     bi, bj, kArg, kSize,
11       U                     gTracer, gTrNm1,       U                     gTracer, gTrNm1,
12       O                     AB_gTr,       O                     AB_gTr,
13       I                     startAB, myIter, myThid )       I                     startAB, myIter, myThid )
14  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
15  C     *==========================================================*  C     *==========================================================*
16  C     | S/R ADAMS_BASHFORTH2  C     | S/R ADAMS_BASHFORTH2
17  C     | o Extrapolate tendencies forward in time using  C     | o Extrapolate forward in time using quasi-second order
18  C     |   quasi-second order Adams-Bashforth method.  C     |   Adams-Bashforth method.
19    C     *==========================================================*
20    C     | Either apply to tendency (kArg>0) at level k=kArg,
21    C     |     or apply to state variable (kArg=0) for all levels
22  C     *==========================================================*  C     *==========================================================*
23  C     \ev  C     \ev
24    
# Line 28  C     == Global variables === Line 31  C     == Global variables ===
31    
32  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
33  C     == Routine Arguments ==  C     == Routine Arguments ==
34  C     bi,bj,k :: Tile and level indices  C     bi,bj   :: Tile indices
35    C     kArg    :: if >0: apply AB on tendency at level k=kArg
36    C             :: if =0: apply AB on state variable and process all levels
37  C     kSize   :: 3rd dimension of tracer and tendency arrays  C     kSize   :: 3rd dimension of tracer and tendency arrays
38  C     gTracer ::  in: Tendency at current time  ( generally units of quantity/sec )  C     gTracer ::  in: Tendency/State at current time
39  C             :: out: Extrapolated Tendency at current time ( same units )  C             :: out (kArg >0): Extrapolated Tendency at current time
40  C     gTrNm1  ::  in: Tendency at previous time             ( same units )  C     gTrNm1  ::  in: Tendency/State at previous time
41  C             :: out: Save tendency at current time         ( same units )  C             :: out: (kArg >0) Save tendency at current time
42    C             :: out: (kArg =0) Extrapolated State at current time
43  C     AB_gTr  :: Adams-Bashforth tendency increment  C     AB_gTr  :: Adams-Bashforth tendency increment
44  C     startAB :: number of previous time level available to start/restart AB  C     startAB :: number of previous time level available to start/restart AB
45  C     myIter  :: Current time step number  C     myIter  :: Current time step number
46  C     myThid  :: my Thread Id. number  C     myThid  :: my Thread Id. number
47        INTEGER bi, bj, k, kSize        INTEGER bi, bj, kArg, kSize
48        _RL  gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize,nSx,nSy)        _RL  gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize)
49        _RL  gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize,nSx,nSy)        _RL  gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize)
50        _RL  AB_gTr (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL  AB_gTr (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51        INTEGER startAB        INTEGER startAB
52        INTEGER myIter, myThid        INTEGER myIter, myThid
53    
54  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
55  C     == Local variables ==  C     == Local variables ==
56    C     k          :: level index
57  C     i,j        :: Loop counters  C     i,j        :: Loop counters
58  C     abFac      :: Adams bashforth extrapolation factor  C     abFac      :: Adams bashforth extrapolation factor
59        INTEGER i,j        INTEGER i, j, k
60        _RL abFac        _RL abFac
61  CEOP  CEOP
62    
# Line 62  C     Adams-Bashforth extrapolation fact Line 69  C     Adams-Bashforth extrapolation fact
69    
70  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
71    
72  C-    Compute effective G-term with Adams-Bashforth weights:        IF ( kArg.EQ.0 ) THEN
73        DO j=1-OLy,sNy+OLy  C-    Extrapolate forward in time the state variable, with AB weights:
74         DO i=1-OLx,sNx+OLx          DO k=1,kSize
75          AB_gTr(i,j) = abFac           DO j=1-OLy,sNy+OLy
76       &              *( gTracer(i,j,k,bi,bj)- gTrNm1(i,j,k,bi,bj) )            DO i=1-OLx,sNx+OLx
77          gTrNm1(i,j,k,bi,bj) = gTracer(i,j,k,bi,bj)             AB_gTr(i,j) = abFac*( gTracer(i,j,k) - gTrNm1(i,j,k) )
78          gTracer(i,j,k,bi,bj) = gTracer(i,j,k,bi,bj) + AB_gTr(i,j)             gTrNm1(i,j,k) = gTracer(i,j,k) + AB_gTr(i,j)
79         ENDDO            ENDDO
80        ENDDO           ENDDO
81            ENDDO
82          ELSE
83    C-    Extrapolate forward in time the tendency, with AB weights:
84            k = kArg
85            DO j=1-OLy,sNy+OLy
86             DO i=1-OLx,sNx+OLx
87               AB_gTr(i,j) = abFac*( gTracer(i,j,k) - gTrNm1(i,j,k) )
88               gTrNm1(i,j,k) = gTracer(i,j,k)
89               gTracer(i,j,k) = gTracer(i,j,k) + AB_gTr(i,j)
90             ENDDO
91            ENDDO
92          ENDIF
93    
94        RETURN        RETURN
95        END        END

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22