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

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

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


Revision 1.10 - (show annotations) (download)
Thu Aug 14 16:49:19 2014 UTC (9 years, 8 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 C $Header: /u/gcmpack/MITgcm/model/src/adams_bashforth2.F,v 1.9 2013/02/19 13:42:19 jmc Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: ADAMS_BASHFORTH2
8 C !INTERFACE:
9 SUBROUTINE ADAMS_BASHFORTH2(
10 I bi, bj, kArg, kSize,
11 U gTracer, gTrNm1,
12 O AB_gTr,
13 I startAB, myIter, myThid )
14 C !DESCRIPTION: \bv
15 C *==========================================================*
16 C | S/R ADAMS_BASHFORTH2
17 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 C *==========================================================*
23 C \ev
24
25 C !USES:
26 IMPLICIT NONE
27 C == Global variables ===
28 #include "SIZE.h"
29 #include "EEPARAMS.h"
30 #include "PARAMS.h"
31
32 C !INPUT/OUTPUT PARAMETERS:
33 C == Routine Arguments ==
34 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
38 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 C AB_gTr :: Adams-Bashforth tendency increment
44 C startAB :: number of previous time level available to start/restart AB
45 C myIter :: Current time step number
46 C myThid :: my Thread Id. number
47 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 _RL AB_gTr (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51 INTEGER startAB
52 INTEGER myIter, myThid
53
54 C !LOCAL VARIABLES:
55 C == Local variables ==
56 C k :: level index
57 C i,j :: Loop counters
58 C abFac :: Adams bashforth extrapolation factor
59 INTEGER i, j, k
60 _RL abFac
61 CEOP
62
63 C Adams-Bashforth extrapolation factor
64 IF ( myIter.EQ.nIter0 .AND. startAB.EQ.0 ) THEN
65 abFac = 0. _d 0
66 ELSE
67 abFac = 0.5 _d 0 + abEps
68 ENDIF
69
70 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
71
72 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
94 RETURN
95 END

  ViewVC Help
Powered by ViewVC 1.1.22