/[MITgcm]/MITgcm/pkg/generic_advdiff/GAD.h
ViewVC logotype

Annotation of /MITgcm/pkg/generic_advdiff/GAD.h

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


Revision 1.25 - (hide annotations) (download)
Sun Mar 13 01:44:02 2016 UTC (8 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65v, checkpoint65w, checkpoint65u, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.24: +26 -2 lines
File MIME type: text/plain
- from Darren: add PPM and PQM advection schemes (number 40-42 and 50-52)
  with 2 types of limiter (see: Engwirda & Kelley, submit. to JCP);
  Note (from Darren): unlimited PPM/PQM scheme (40 & 50) are just for
  testing and not for actual use.

1 jmc 1.25 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/GAD.h,v 1.24 2014/08/05 01:50:35 jmc Exp $
2     C $Name: $
3 adcroft 1.1
4 adcroft 1.7 CBOP
5     C !ROUTINE: GAD.h
6 adcroft 1.1
7 adcroft 1.7 C !INTERFACE:
8     C #include "GAD.h"
9    
10     C !DESCRIPTION:
11     C Contains enumerated constants for distinguishing between different
12     C advection schemes and tracers.
13     C
14     C Unfortunately, there is no easy way to make use of the
15     C tokens in namelist input so for now we have to enter the
16     C tokens value into "data" (ie. 2 for 2nd order etc.)
17 adcroft 1.8
18     C !USES:
19 adcroft 1.7
20     C !DEFINED PARAMETERS:
21    
22 jmc 1.13 C ENUM_UPWIND_1RST :: 1rst Order Upwind
23     INTEGER ENUM_UPWIND_1RST
24     PARAMETER(ENUM_UPWIND_1RST=1)
25    
26 adcroft 1.7 C ENUM_CENTERED_2ND :: Centered 2nd order
27 adcroft 1.1 INTEGER ENUM_CENTERED_2ND
28     PARAMETER(ENUM_CENTERED_2ND=2)
29 jmc 1.2
30 jmc 1.13 C ENUM_UPWIND_3RD :: 3rd order upwind
31 jmc 1.2 INTEGER ENUM_UPWIND_3RD
32     PARAMETER(ENUM_UPWIND_3RD=3)
33 adcroft 1.1
34 adcroft 1.7 C ENUM_CENTERED_4TH :: Centered 4th order
35 adcroft 1.1 INTEGER ENUM_CENTERED_4TH
36     PARAMETER(ENUM_CENTERED_4TH=4)
37    
38 jmc 1.13 C ENUM_DST2 :: 2nd Order Direct Space and Time (= Lax-Wendroff)
39     INTEGER ENUM_DST2
40     PARAMETER(ENUM_DST2=20)
41    
42 adcroft 1.7 C ENUM_FLUX_LIMIT :: Non-linear flux limiter
43 adcroft 1.1 INTEGER ENUM_FLUX_LIMIT
44     PARAMETER(ENUM_FLUX_LIMIT=77)
45 adcroft 1.6
46 jmc 1.13 C ENUM_DST3 :: 3rd Order Direst Space and Time
47 adcroft 1.6 INTEGER ENUM_DST3
48     PARAMETER(ENUM_DST3=30)
49    
50 adcroft 1.7 C ENUM_DST3_FLUX_LIMIT :: 3-DST flux limited
51 adcroft 1.6 INTEGER ENUM_DST3_FLUX_LIMIT
52     PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
53 adcroft 1.1
54 adcroft 1.16 C ENUM_OS7MP :: 7th Order One Step method with Monotonicity Preserving Limiter
55     INTEGER ENUM_OS7MP
56     PARAMETER(ENUM_OS7MP=7)
57    
58 jmc 1.15 C ENUM_SOM_PRATHER :: 2nd Order-Moment Advection Scheme, Prather, 1986
59     INTEGER ENUM_SOM_PRATHER
60     PARAMETER(ENUM_SOM_PRATHER=80)
61    
62     C ENUM_SOM_LIMITER :: 2nd Order-Moment Advection Scheme, Prather Limiter
63     INTEGER ENUM_SOM_LIMITER
64     PARAMETER(ENUM_SOM_LIMITER=81)
65    
66 jmc 1.25 C ENUM_PPM_NULL :: piecewise parabolic method with "null" limiter
67     INTEGER ENUM_PPM_NULL_LIMIT
68     PARAMETER(ENUM_PPM_NULL_LIMIT=40)
69    
70     C ENUM_PPM_MONO :: piecewise parabolic method with "mono" limiter
71     INTEGER ENUM_PPM_MONO_LIMIT
72     PARAMETER(ENUM_PPM_MONO_LIMIT=41)
73    
74     C ENUM_PPM_WENO :: piecewise parabolic method with "weno" limiter
75     INTEGER ENUM_PPM_WENO_LIMIT
76     PARAMETER(ENUM_PPM_WENO_LIMIT=42)
77    
78     C ENUM_PQM_NULL :: piecewise quartic method with "null" limiter
79     INTEGER ENUM_PQM_NULL_LIMIT
80     PARAMETER(ENUM_PQM_NULL_LIMIT=50)
81    
82     C ENUM_PQM_MONO :: piecewise quartic method with "mono" limiter
83     INTEGER ENUM_PQM_MONO_LIMIT
84     PARAMETER(ENUM_PQM_MONO_LIMIT=51)
85    
86     C ENUM_PQM_WENO :: piecewise quartic method with "weno" limiter
87     INTEGER ENUM_PQM_WENO_LIMIT
88     PARAMETER(ENUM_PQM_WENO_LIMIT=52)
89    
90 jmc 1.23 C GAD_Scheme_MaxNum :: maximum possible number for an advection scheme
91     INTEGER GAD_Scheme_MaxNum
92     PARAMETER( GAD_Scheme_MaxNum = 100 )
93    
94 jmc 1.15 C nSOM :: number of 1rst & 2nd Order-Moments: 1+1 (1D), 2+3 (2D), 3+6 (3D)
95     INTEGER nSOM
96     PARAMETER( nSOM = 3+6 )
97    
98 adcroft 1.7 C oneSixth :: Third/fourth order interpolation factor
99 adcroft 1.1 _RL oneSixth
100 heimbach 1.4 PARAMETER(oneSixth=1.D0/6.D0)
101 adcroft 1.1
102 jmc 1.18 C loop range for computing vertical advection tendency
103     C iMinAdvR,iMaxAdvR :: 1rst index (X-dir) loop range for vertical advection
104     C jMinAdvR,jMaxAdvR :: 2nd index (Y-dir) loop range for vertical advection
105     INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
106     c PARAMETER ( iMinAdvR = 1-OLx , iMaxAdvR = sNx+OLx )
107     c PARAMETER ( jMinAdvR = 1-OLy , jMaxAdvR = sNy+OLy )
108     C- note: we use to compute vertical advection tracer tendency everywhere
109     C (overlap included) as above, but really needs valid tracer tendency
110     C in interior only (as below):
111     PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
112     PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
113    
114 edhill 1.11 C Differentiate between tracers (needed for KPP - arrgh!!!)
115     cph and GMRedi arrgh*arrgh!!!)
116 heimbach 1.10 cph indices are used for TAF key computations, so need to
117     cph running from 1, 2, ...
118     c
119 adcroft 1.7 C GAD_TEMPERATURE :: temperature
120 adcroft 1.1 INTEGER GAD_TEMPERATURE
121 heimbach 1.10 PARAMETER(GAD_TEMPERATURE=1)
122 jmc 1.9 C GAD_SALINITY :: salinity
123 adcroft 1.1 INTEGER GAD_SALINITY
124 heimbach 1.10 PARAMETER(GAD_SALINITY=2)
125 dimitri 1.12 C GAD_TR1 :: passive tracer 1
126 heimbach 1.3 INTEGER GAD_TR1
127 heimbach 1.10 PARAMETER(GAD_TR1=3)
128 adcroft 1.7 CEOP
129 jmc 1.9
130 jmc 1.20 C-- COMMON /GAD_PARM_C/ Character parameters for GAD pkg routines
131     C somSfx :: 1rst & 2nd Order moment suffix
132     CHARACTER*2 somSfx(nSOM)
133     COMMON /GAD_PARM_C/
134     & somSfx
135    
136 jmc 1.23 C-- COMMON /GAD_PARM_I/ Integer parameters for GAD pkg routines
137     C GAD_OlMinSize :: overlap minimum size for GAD routines
138     C 1: min required; 2: to add to current min; 3: factor to apply
139     INTEGER GAD_OlMinSize(3)
140     COMMON /GAD_PARM_I/
141     & GAD_OlMinSize
142    
143 jmc 1.9 C-- COMMON /GAD_PARM_L/ Logical parameters for GAD pkg routines
144 jmc 1.15 C tempSOM_Advection :: set to T if using 2nd-Order Moment advection for Temp
145     C saltSOM_Advection :: set to T if using 2nd-Order Moment advection for Salt
146 edhill 1.11 C tempMultiDimAdvec :: set to T if using multi-dim advection for Temp
147     C saltMultiDimAdvec :: set to T if using multi-dim advection for Salt
148 jmc 1.14 C AdamsBashforthGt :: apply Adams-Bashforth extrapolation on T tendency (=Gt)
149     C AdamsBashforthGs :: apply Adams-Bashforth extrapolation on S tendency (=Gs)
150     C AdamsBashforth_T :: apply Adams-Bashforth extrapolation on Pot.Temp.
151     C AdamsBashforth_S :: apply Adams-Bashforth extrapolation on Salinity
152 jmc 1.15 LOGICAL tempSOM_Advection
153     LOGICAL saltSOM_Advection
154 jmc 1.9 LOGICAL tempMultiDimAdvec
155     LOGICAL saltMultiDimAdvec
156 jmc 1.14 LOGICAL AdamsBashforthGt
157     LOGICAL AdamsBashforthGs
158     LOGICAL AdamsBashforth_T
159     LOGICAL AdamsBashforth_S
160 jmc 1.9 COMMON /GAD_PARM_L/
161 jmc 1.15 & tempSOM_Advection, saltSOM_Advection,
162 jmc 1.14 & tempMultiDimAdvec, saltMultiDimAdvec,
163     & AdamsBashforthGt, AdamsBashforthGs,
164 jmc 1.19 & AdamsBashforth_T, AdamsBashforth_S
165 edhill 1.11
166 jahn 1.21 _RL SmolarkiewiczMaxFrac
167     COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
168    
169 edhill 1.11 CEH3 ;;; Local Variables: ***
170     CEH3 ;;; mode:fortran ***
171     CEH3 ;;; End: ***

  ViewVC Help
Powered by ViewVC 1.1.22