Parent Directory | Revision Log | Revision Graph
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 |