/[MITgcm]/MITgcm/pkg/generic_advdiff/timestep_tracer.F
ViewVC logotype

Annotation of /MITgcm/pkg/generic_advdiff/timestep_tracer.F

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


Revision 1.4 - (hide annotations) (download)
Wed Aug 15 15:51:46 2001 UTC (22 years, 8 months ago) by adcroft
Branch: MAIN
Changes since 1.3: +11 -11 lines
Added run-time control of advection schemes.
 - advection scheme determines method of forward integration.
 - unfortunately, we have to use integers in "data" since ENUM_CENTERED_2ND
   doesn't mean anything to fortran
 - defaults are centered second
 - output differs due to these mods! This is due to the g77 optimization.
   I have tested that using -ffloat-store, these mods do not affect
   the output so am confident about changes.

                T           S           U           V
C D M    c        m  s        m  s        m  s        m  s
n p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .
f n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d
g d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .

Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 22 16 16 pass  adjustment.128x64x1
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  adjustment.cs-32x32x1
Y Y N N -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- N/O   aim.5l_Equatorial_Channel
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  aim.5l_LatLon
Y Y N N -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- N/O   aim.5l_zon-ave
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 22 16 pass  exp0
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 22 16 pass  exp1
Y Y Y Y 13 16 16 16 16 16 16 16 13 16 13 13 13 13 13 13 16 pass  exp2
Y Y Y Y 12 16 16 13 16 16 16 16 16 13 16 16 16 16 13 13 16 FAIL  exp4
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 22 16 16 16 22 16 pass  exp5
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  front_relax
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 22 16 16 16 11 16 pass  hs94.128x64x5
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 22 16 pass  hs94.1x64x5
Y Y Y Y 14 16 16 16 16 16 16 16 16 16 13 16 16 16 16 16 13 pass  hs94.cs-32x32x5
Y Y Y Y 16 16 16 22 16 16 16 16 16 16 16 22 16 16 16 16 16 pass  internal_wave
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  natl_box
Y Y Y Y 16 16 16 16 16 13 16 13 16 16 16 16 16 16 16 16 16 pass  solid-body.cs-32x32x1

1 adcroft 1.4 C $Header: /u/gcmpack/models/MITgcmUV/pkg/generic_advdiff/timestep_tracer.F,v 1.3 2001/07/31 15:01:33 adcroft Exp $
2 adcroft 1.1 C $Name: $
3    
4     #include "CPP_OPTIONS.h"
5    
6     SUBROUTINE TIMESTEP_TRACER(
7 adcroft 1.4 I bi, bj, iMin, iMax, jMin, jMax, K,
8     I advection_scheme,
9 adcroft 1.1 U tracer, gTracer, gTrNm1,
10     I myIter, myThid )
11     C /==========================================================\
12     C | S/R TIMESTEP_TRACER |
13     C | o Step model tracer field forward in time |
14     C \==========================================================/
15     IMPLICIT NONE
16    
17     C == Global variables ===
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21     #include "GAD.h"
22    
23     C == Routine Arguments ==
24     INTEGER bi,bj,iMin,iMax,jMin,jMax,K
25 adcroft 1.4 INTEGER advection_scheme
26 adcroft 1.1 _RL tracer (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
27     _RL gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
28     _RL gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
29     INTEGER myIter, myThid
30     C == Local variables ==
31     INTEGER i,j
32     _RL ab15,ab05
33    
34     C Adams-Bashforth timestepping weights
35 adcroft 1.3 IF (myIter .EQ. 0) THEN
36     ab15=1.0
37     ab05=0.0
38     ELSE
39 adcroft 1.4 ab15=1.5+abEps
40     ab05=-(0.5+abEps)
41 adcroft 1.3 ENDIF
42 adcroft 1.1
43     C Step forward temperature
44 adcroft 1.4 IF ( advection_scheme.EQ.ENUM_CENTERED_2ND
45     & .OR.advection_scheme.EQ.ENUM_UPWIND_3RD
46     & .OR.advection_scheme.EQ.ENUM_CENTERED_4TH ) THEN
47 adcroft 1.1 DO j=jMin,jMax
48     DO i=iMin,iMax
49     gTrNm1(i,j,k,bi,bj)=tracer(i,j,k,bi,bj)
50     & +deltaTtracer*(
51     & ab15*gTracer(i,j,k,bi,bj)
52     & +ab05*gTrNm1(i,j,k,bi,bj) )
53     ENDDO
54     ENDDO
55 adcroft 1.4 ELSEIF (advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN
56 adcroft 1.1 DO j=jMin,jMax
57     DO i=iMin,iMax
58     gTrNm1(i,j,k,bi,bj)=tracer(i,j,k,bi,bj)
59     & +deltaTtracer*gTracer(i,j,k,bi,bj)
60     ENDDO
61     ENDDO
62     ELSE
63 adcroft 1.4 STOP 'TIMESTEP_TRACER: Bad advection_scheme'
64 adcroft 1.1 ENDIF
65    
66     RETURN
67     END

  ViewVC Help
Powered by ViewVC 1.1.22