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

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

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


Revision 1.10 - (hide annotations) (download)
Thu Aug 14 16:49:19 2014 UTC (9 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65l, checkpoint65m, checkpoint65c, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65o, HEAD
Changes since 1.9: +41 -22 lines
change gTracer (and/or tracer) argument (drop bi,bj indices) in S/R
  ADAMS_BASHFORTH(2&3), CYCLE_TRACER, CYCLE_AB_TRACER, FREESURF_RESCALE_G,
  IMPLDIFF, SOLVE_TRIDIAGONAL & SOLVE_PENTADIAGONAL

1 jmc 1.10 C $Header: /u/gcmpack/MITgcm/model/src/adams_bashforth2.F,v 1.9 2013/02/19 13:42:19 jmc Exp $
2 cnh 1.2 C $Name: $
3 adcroft 1.1
4     #include "CPP_OPTIONS.h"
5    
6 cnh 1.2 CBOP
7     C !ROUTINE: ADAMS_BASHFORTH2
8     C !INTERFACE:
9 adcroft 1.1 SUBROUTINE ADAMS_BASHFORTH2(
10 jmc 1.10 I bi, bj, kArg, kSize,
11 adcroft 1.1 U gTracer, gTrNm1,
12 jmc 1.8 O AB_gTr,
13 jmc 1.7 I startAB, myIter, myThid )
14 cnh 1.2 C !DESCRIPTION: \bv
15     C *==========================================================*
16 jmc 1.7 C | S/R ADAMS_BASHFORTH2
17 jmc 1.10 C | o Extrapolate forward in time using quasi-second order
18     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 cnh 1.2 C *==========================================================*
23     C \ev
24    
25     C !USES:
26 adcroft 1.1 IMPLICIT NONE
27     C == Global variables ===
28     #include "SIZE.h"
29     #include "EEPARAMS.h"
30     #include "PARAMS.h"
31    
32 cnh 1.2 C !INPUT/OUTPUT PARAMETERS:
33 adcroft 1.1 C == Routine Arguments ==
34 jmc 1.10 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 jmc 1.9 C kSize :: 3rd dimension of tracer and tendency arrays
38 jmc 1.10 C gTracer :: in: Tendency/State at current time
39     C :: out (kArg >0): Extrapolated Tendency at current time
40     C gTrNm1 :: in: Tendency/State at previous time
41     C :: out: (kArg >0) Save tendency at current time
42     C :: out: (kArg =0) Extrapolated State at current time
43 jmc 1.8 C AB_gTr :: Adams-Bashforth tendency increment
44 jmc 1.7 C startAB :: number of previous time level available to start/restart AB
45 cnh 1.2 C myIter :: Current time step number
46 jmc 1.8 C myThid :: my Thread Id. number
47 jmc 1.10 INTEGER bi, bj, kArg, kSize
48     _RL gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize)
49     _RL gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize)
50 jmc 1.8 _RL AB_gTr (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51 jmc 1.7 INTEGER startAB
52 adcroft 1.1 INTEGER myIter, myThid
53 cnh 1.2
54     C !LOCAL VARIABLES:
55 adcroft 1.1 C == Local variables ==
56 jmc 1.10 C k :: level index
57 cnh 1.2 C i,j :: Loop counters
58 jmc 1.8 C abFac :: Adams bashforth extrapolation factor
59 jmc 1.10 INTEGER i, j, k
60 jmc 1.8 _RL abFac
61 cnh 1.2 CEOP
62 adcroft 1.1
63 jmc 1.8 C Adams-Bashforth extrapolation factor
64 jmc 1.7 IF ( myIter.EQ.nIter0 .AND. startAB.EQ.0 ) THEN
65 jmc 1.8 abFac = 0. _d 0
66 adcroft 1.1 ELSE
67 jmc 1.8 abFac = 0.5 _d 0 + abEps
68 adcroft 1.1 ENDIF
69    
70 jmc 1.7 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
71 adcroft 1.1
72 jmc 1.10 IF ( kArg.EQ.0 ) THEN
73     C- Extrapolate forward in time the state variable, with AB weights:
74     DO k=1,kSize
75     DO j=1-OLy,sNy+OLy
76     DO i=1-OLx,sNx+OLx
77     AB_gTr(i,j) = abFac*( gTracer(i,j,k) - gTrNm1(i,j,k) )
78     gTrNm1(i,j,k) = gTracer(i,j,k) + AB_gTr(i,j)
79     ENDDO
80     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 adcroft 1.1
94     RETURN
95     END

  ViewVC Help
Powered by ViewVC 1.1.22