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

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

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


Revision 1.6 - (show annotations) (download)
Tue Sep 4 14:53:10 2001 UTC (22 years, 9 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint40pre9
Changes since 1.5: +4 -2 lines
Added two more methods *BUT* only in (x,y)!
 o DST-3 is 3rd order direct space time method
 o DST-3FL is flux limited 3rd order direct space time method
 o r-direction to come. Place holders commented out in gad_calc_rhs.F
   A stop statement will catch it if you try to use it. Either use with Nr=1
   or write the code. :)

1 C $Header: /u/gcmpack/models/MITgcmUV/model/src/timestep_tracer.F,v 1.5 2001/08/27 18:48:57 jmc Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5
6 SUBROUTINE TIMESTEP_TRACER(
7 I bi, bj, iMin, iMax, jMin, jMax, K,
8 I advection_scheme,
9 I tracer, gTracer,
10 O gTrNm1,
11 I myIter, myThid )
12 C /==========================================================\
13 C | S/R TIMESTEP_TRACER |
14 C | o Step model tracer field forward in time |
15 C \==========================================================/
16 IMPLICIT NONE
17
18 C == Global variables ===
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "GAD.h"
23 #include "GRID.h"
24 #include "SURFACE.h"
25
26 C == Routine Arguments ==
27 INTEGER bi,bj,iMin,iMax,jMin,jMax,K
28 INTEGER advection_scheme
29 _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)
31 _RL gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
32 INTEGER myIter, myThid
33 C == Local variables ==
34 INTEGER i,j
35 _RL ab15,ab05
36 _RL gTrtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
37
38 C Adams-Bashforth timestepping weights
39 IF (myIter .EQ. 0) THEN
40 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- with Adams-Bashforth weights:
54 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
68 gTrtmp(i,j) = gTracer(i,j,k,bi,bj)
69 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
96
97 RETURN
98 END

  ViewVC Help
Powered by ViewVC 1.1.22