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 | C $Header: /u/gcmpack/models/MITgcmUV/pkg/generic_advdiff/timestep_tracer.F,v 1.3 2001/07/31 15:01:33 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 | 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 | INTEGER advection_scheme |
26 | _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 | IF (myIter .EQ. 0) THEN |
36 | ab15=1.0 |
37 | ab05=0.0 |
38 | ELSE |
39 | ab15=1.5+abEps |
40 | ab05=-(0.5+abEps) |
41 | ENDIF |
42 | |
43 | C Step forward temperature |
44 | 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 | 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 | ELSEIF (advection_scheme.EQ.ENUM_FLUX_LIMIT) THEN |
56 | 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 | STOP 'TIMESTEP_TRACER: Bad advection_scheme' |
64 | ENDIF |
65 | |
66 | RETURN |
67 | END |
ViewVC Help | |
Powered by ViewVC 1.1.22 |