/[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.5 - (show annotations) (download)
Mon Aug 27 18:48:57 2001 UTC (22 years, 8 months ago) by jmc
Branch: MAIN
Changes since 1.4: +36 -8 lines
modified for NonLin-FreeSurf : This affects the truncation error
==> all output.txt need to be updated.

1 C $Header: /u/gcmpack/models/MITgcmUV/model/src/timestep_tracer.F,v 1.4 2001/08/15 18:40:57 adcroft 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) THEN
62
63 C- with no Adams-Bashforth weights:
64 DO j=jMin,jMax
65 DO i=iMin,iMax
66 gTrtmp(i,j) = gTracer(i,j,k,bi,bj)
67 ENDDO
68 ENDDO
69
70 ELSE
71 STOP 'TIMESTEP_TRACER: Bad advection_scheme'
72 ENDIF
73
74 #ifdef NONLIN_FRSURF
75 IF (nonlinFreeSurf.GT.0) THEN
76 DO j=jMin,jMax
77 DO i=iMin,iMax
78 IF (k.EQ.ksurfC(i,j,bi,bj)) THEN
79 gTrtmp(i,j) = gTrtmp(i,j)
80 & *hFacC(i,j,k,bi,bj)/hFac_surfC(i,j,bi,bj)
81 ENDIF
82 ENDDO
83 ENDDO
84 ENDIF
85 #endif /* NONLIN_FRSURF */
86
87 C- Step forward tracer
88 DO j=jMin,jMax
89 DO i=iMin,iMax
90 gTrNm1(i,j,k,bi,bj)=tracer(i,j,k,bi,bj)
91 & +deltaTtracer*gTrtmp(i,j)
92 ENDDO
93 ENDDO
94
95 RETURN
96 END

  ViewVC Help
Powered by ViewVC 1.1.22