Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:40:53 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
28d97917ae Alis*0001 CBOP
                0002 C !ROUTINE: GAD.h
31566b6684 Alis*0003 
28d97917ae Alis*0004 C !INTERFACE:
                0005 C #include "GAD.h"
                0006 
                0007 C !DESCRIPTION:
                0008 C Contains enumerated constants for distinguishing between different
                0009 C advection schemes and tracers.
                0010 C
                0011 C Unfortunately, there is no easy way to make use of the
                0012 C tokens in namelist input so for now we have to enter the
                0013 C tokens value into "data" (ie. 2 for 2nd order etc.)
                0014 
e454e319af Alis*0015 C !USES:
                0016 
28d97917ae Alis*0017 C !DEFINED PARAMETERS:
                0018 
76b8386f6e Jean*0019 C ENUM_UPWIND_1RST :: 1rst Order Upwind
                0020       INTEGER ENUM_UPWIND_1RST
                0021       PARAMETER(ENUM_UPWIND_1RST=1)
                0022 
28d97917ae Alis*0023 C ENUM_CENTERED_2ND :: Centered 2nd order
31566b6684 Alis*0024       INTEGER ENUM_CENTERED_2ND
                0025       PARAMETER(ENUM_CENTERED_2ND=2)
                0026 
76b8386f6e Jean*0027 C ENUM_UPWIND_3RD :: 3rd order upwind
4a20c1c4ff Jean*0028       INTEGER ENUM_UPWIND_3RD
                0029       PARAMETER(ENUM_UPWIND_3RD=3)
                0030 
28d97917ae Alis*0031 C ENUM_CENTERED_4TH :: Centered 4th order
31566b6684 Alis*0032       INTEGER ENUM_CENTERED_4TH
                0033       PARAMETER(ENUM_CENTERED_4TH=4)
                0034 
76b8386f6e Jean*0035 C ENUM_DST2 :: 2nd Order Direct Space and Time (= Lax-Wendroff)
                0036       INTEGER ENUM_DST2
                0037       PARAMETER(ENUM_DST2=20)
                0038 
28d97917ae Alis*0039 C ENUM_FLUX_LIMIT :: Non-linear flux limiter
31566b6684 Alis*0040       INTEGER ENUM_FLUX_LIMIT
                0041       PARAMETER(ENUM_FLUX_LIMIT=77)
                0042 
76b8386f6e Jean*0043 C ENUM_DST3 :: 3rd Order Direst Space and Time
6d046cd062 Alis*0044       INTEGER ENUM_DST3
                0045       PARAMETER(ENUM_DST3=30)
                0046 
28d97917ae Alis*0047 C ENUM_DST3_FLUX_LIMIT :: 3-DST flux limited
6d046cd062 Alis*0048       INTEGER ENUM_DST3_FLUX_LIMIT
                0049       PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
                0050 
09cd9ab332 Alis*0051 C ENUM_OS7MP :: 7th Order One Step method with Monotonicity Preserving Limiter
                0052       INTEGER ENUM_OS7MP
                0053       PARAMETER(ENUM_OS7MP=7)
                0054 
d7ce0d34f8 Jean*0055 C ENUM_SOM_PRATHER :: 2nd Order-Moment Advection Scheme, Prather, 1986
                0056       INTEGER ENUM_SOM_PRATHER
                0057       PARAMETER(ENUM_SOM_PRATHER=80)
                0058 
                0059 C ENUM_SOM_LIMITER :: 2nd Order-Moment Advection Scheme, Prather Limiter
                0060       INTEGER ENUM_SOM_LIMITER
                0061       PARAMETER(ENUM_SOM_LIMITER=81)
                0062 
8e4c181d69 Jean*0063 C ENUM_PPM_NULL :: piecewise parabolic method with "null" limiter
                0064       INTEGER ENUM_PPM_NULL_LIMIT
                0065       PARAMETER(ENUM_PPM_NULL_LIMIT=40)
                0066 
                0067 C ENUM_PPM_MONO :: piecewise parabolic method with "mono" limiter
                0068       INTEGER ENUM_PPM_MONO_LIMIT
                0069       PARAMETER(ENUM_PPM_MONO_LIMIT=41)
                0070 
                0071 C ENUM_PPM_WENO :: piecewise parabolic method with "weno" limiter
                0072       INTEGER ENUM_PPM_WENO_LIMIT
                0073       PARAMETER(ENUM_PPM_WENO_LIMIT=42)
                0074 
                0075 C ENUM_PQM_NULL :: piecewise quartic method with "null" limiter
                0076       INTEGER ENUM_PQM_NULL_LIMIT
                0077       PARAMETER(ENUM_PQM_NULL_LIMIT=50)
                0078 
                0079 C ENUM_PQM_MONO :: piecewise quartic method with "mono" limiter
                0080       INTEGER ENUM_PQM_MONO_LIMIT
                0081       PARAMETER(ENUM_PQM_MONO_LIMIT=51)
                0082 
                0083 C ENUM_PQM_WENO :: piecewise quartic method with "weno" limiter
                0084       INTEGER ENUM_PQM_WENO_LIMIT
                0085       PARAMETER(ENUM_PQM_WENO_LIMIT=52)
                0086 
26e9727e55 Jean*0087 C GAD_Scheme_MaxNum :: maximum possible number for an advection scheme
                0088       INTEGER GAD_Scheme_MaxNum
                0089       PARAMETER( GAD_Scheme_MaxNum = 100 )
                0090 
d7ce0d34f8 Jean*0091 C nSOM :: number of 1rst & 2nd Order-Moments: 1+1 (1D), 2+3 (2D), 3+6 (3D)
                0092       INTEGER nSOM
                0093       PARAMETER( nSOM = 3+6 )
                0094 
28d97917ae Alis*0095 C oneSixth :: Third/fourth order interpolation factor
31566b6684 Alis*0096       _RL oneSixth
3fd406ca6b Patr*0097       PARAMETER(oneSixth=1.D0/6.D0)
31566b6684 Alis*0098 
8aa8d99107 Jean*0099 C loop range for computing vertical advection tendency
                0100 C  iMinAdvR,iMaxAdvR  :: 1rst index (X-dir) loop range for vertical advection
                0101 C  jMinAdvR,jMaxAdvR  :: 2nd  index (Y-dir) loop range for vertical advection
                0102       INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
                0103 c     PARAMETER ( iMinAdvR = 1-OLx , iMaxAdvR = sNx+OLx )
                0104 c     PARAMETER ( jMinAdvR = 1-OLy , jMaxAdvR = sNy+OLy )
                0105 C- note: we use to compute vertical advection tracer tendency everywhere
                0106 C        (overlap included) as above, but really needs valid tracer tendency
                0107 C        in interior only (as below):
                0108       PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
                0109       PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
                0110 
1b5fb69d21 Ed H*0111 C Differentiate between tracers (needed for KPP - arrgh!!!)
                0112 cph                              and GMRedi arrgh*arrgh!!!)
10d4db6918 Patr*0113 cph  indices are used for TAF key computations, so need to
                0114 cph  running from 1, 2, ...
                0115 c
28d97917ae Alis*0116 C GAD_TEMPERATURE :: temperature
31566b6684 Alis*0117       INTEGER GAD_TEMPERATURE
10d4db6918 Patr*0118       PARAMETER(GAD_TEMPERATURE=1)
c17bf9e7ce Jean*0119 C GAD_SALINITY :: salinity
31566b6684 Alis*0120       INTEGER GAD_SALINITY
10d4db6918 Patr*0121       PARAMETER(GAD_SALINITY=2)
ef080e1d37 Dimi*0122 C GAD_TR1 :: passive tracer 1
122c791853 Patr*0123       INTEGER GAD_TR1
10d4db6918 Patr*0124       PARAMETER(GAD_TR1=3)
28d97917ae Alis*0125 CEOP
c17bf9e7ce Jean*0126 
65d3db6a48 Jean*0127 C--   COMMON /GAD_PARM_C/ Character parameters for GAD pkg routines
                0128 C      somSfx       :: 1rst & 2nd Order moment suffix
                0129       CHARACTER*2 somSfx(nSOM)
                0130       COMMON /GAD_PARM_C/
                0131      & somSfx
                0132 
26e9727e55 Jean*0133 C--   COMMON /GAD_PARM_I/ Integer parameters for GAD pkg routines
                0134 C GAD_OlMinSize     :: overlap minimum size for GAD routines
                0135 C           1: min required; 2: to add to current min; 3: factor to apply
                0136       INTEGER GAD_OlMinSize(3)
                0137       COMMON /GAD_PARM_I/
                0138      &        GAD_OlMinSize
                0139 
c17bf9e7ce Jean*0140 C--   COMMON /GAD_PARM_L/ Logical parameters for GAD pkg routines
d7ce0d34f8 Jean*0141 C tempSOM_Advection :: set to T if using 2nd-Order Moment advection for Temp
                0142 C saltSOM_Advection :: set to T if using 2nd-Order Moment advection for Salt
1b5fb69d21 Ed H*0143 C tempMultiDimAdvec :: set to T if using multi-dim advection for Temp
                0144 C saltMultiDimAdvec :: set to T if using multi-dim advection for Salt
1bb133c00c Jean*0145 C AdamsBashforthGt  :: apply Adams-Bashforth extrapolation on T tendency (=Gt)
                0146 C AdamsBashforthGs  :: apply Adams-Bashforth extrapolation on S tendency (=Gs)
                0147 C AdamsBashforth_T  :: apply Adams-Bashforth extrapolation on Pot.Temp.
                0148 C AdamsBashforth_S  :: apply Adams-Bashforth extrapolation on Salinity
d7ce0d34f8 Jean*0149       LOGICAL tempSOM_Advection
                0150       LOGICAL saltSOM_Advection
c17bf9e7ce Jean*0151       LOGICAL tempMultiDimAdvec
                0152       LOGICAL saltMultiDimAdvec
1bb133c00c Jean*0153       LOGICAL AdamsBashforthGt
                0154       LOGICAL AdamsBashforthGs
                0155       LOGICAL AdamsBashforth_T
                0156       LOGICAL AdamsBashforth_S
c17bf9e7ce Jean*0157       COMMON /GAD_PARM_L/
d7ce0d34f8 Jean*0158      & tempSOM_Advection, saltSOM_Advection,
1bb133c00c Jean*0159      & tempMultiDimAdvec, saltMultiDimAdvec,
                0160      & AdamsBashforthGt, AdamsBashforthGs,
bbac83946e Jean*0161      & AdamsBashforth_T, AdamsBashforth_S
1b5fb69d21 Ed H*0162 
998cbd211e Oliv*0163       _RL SmolarkiewiczMaxFrac
                0164       COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
                0165 
1b5fb69d21 Ed H*0166 CEH3 ;;; Local Variables: ***
                0167 CEH3 ;;; mode:fortran ***
                0168 CEH3 ;;; End: ***