1 |
jmc |
1.13 |
C $Header: /u/gcmpack/MITgcm/pkg/ggl90/GGL90.h,v 1.12 2015/12/09 10:41:39 mlosch Exp $ |
2 |
mlosch |
1.8 |
C $Name: $ |
3 |
mlosch |
1.1 |
|
4 |
|
|
#ifdef ALLOW_GGL90 |
5 |
|
|
|
6 |
|
|
CBOP |
7 |
|
|
C !ROUTINE: GGL90.h |
8 |
|
|
|
9 |
|
|
C !DESCRIPTION: \bv |
10 |
|
|
C /==========================================================\ |
11 |
|
|
C | GGL90.h | |
12 |
|
|
C | o Basic header for Garpar et al. (1990) | |
13 |
|
|
C | vertical mixing parameterization. Implementation | |
14 |
|
|
C | follows OPA implementation of Blanke+Delecuse (1993) | |
15 |
|
|
C | Contains all GGL90 field declarations. | |
16 |
|
|
C \==========================================================/ |
17 |
|
|
|
18 |
|
|
C----------------------------------------------------------------------- |
19 |
|
|
C |
20 |
|
|
C Parameters that can be set in data.ggl90 |
21 |
jmc |
1.9 |
C unless otherwise noted, equation numbers refer to Gaspar et al. |
22 |
mlosch |
1.1 |
C (1990), JGR, 95(C9) pp. 16,179ff. |
23 |
jmc |
1.9 |
C |
24 |
mlosch |
1.1 |
C GGL90ck - constant in viscosity coefficient (eq.10) |
25 |
|
|
C GGL90ceps - dissipation constant according to Kolmogorov (1942) |
26 |
|
|
C GGL90m2 - constant relating wind stress to vertical stress of TKE |
27 |
|
|
C in K [d(TKE)/dz](0)=m2*ustar^3 |
28 |
|
|
C GGL90alpha - constant relating viscosity to GGL90 diffusivity |
29 |
|
|
C (default=1 in Gaspar etal.) |
30 |
mlosch |
1.3 |
C GGL90TKEsurfmin - minimum of surface kinetic energy boundary condition |
31 |
|
|
C (default=GGL90TKEmin) |
32 |
mlosch |
1.1 |
C GGL90TKEmin - minimum kinetic energy, leads to minimum mixing if TKE=0. |
33 |
jmc |
1.9 |
C GGL90TKEbottom - bottom bounardy condition for kinetic energy |
34 |
mlosch |
1.1 |
C (default=GGL90TKEmin) |
35 |
|
|
C GGL90TKEFile - File with initial field of TKE |
36 |
gforget |
1.6 |
C GGL90mixingLengthMin - Mininum mixing length |
37 |
|
|
C mxlMaxFlag - Flag for limiting mixing-length method (default=0) |
38 |
jmc |
1.13 |
C mxlSurfFlag - Flag to force mixing near ocean surface (default= F ) |
39 |
|
|
C calcMeanVertShear :: calculate the mean (@ grid-cell center) of vertical |
40 |
|
|
C shear compon. (instead of vert. shear of mean flow) |
41 |
mlosch |
1.1 |
C |
42 |
mlosch |
1.7 |
C useIDEMIX - turn on internal wave mixing contribution modeled by |
43 |
mlosch |
1.10 |
C IDEMIX version 1: |
44 |
|
|
C - Olbers, D. and Eden, C. (2013), J. Phys. Oceano. |
45 |
mlosch |
1.7 |
C doi:10.1175/JPO-D-12-0207.1 |
46 |
|
|
C |
47 |
mlosch |
1.1 |
C GGL90dumpFreq - analogue of dumpFreq (= default) |
48 |
|
|
C GGL90taveFreq - analogue of taveFreq (= default) |
49 |
|
|
C GGL90mixingMaps - output to standard out (default = .FALSE.) |
50 |
|
|
C GGL90writeState - output to files (default = .FALSE.) |
51 |
|
|
C |
52 |
|
|
C Time varying parameters computed by subroutine ggl90_calc |
53 |
|
|
C GGL90TKE - prognostic variable stepped forward in time ((m/s)^2) |
54 |
|
|
C GGL90viscAr - Vertical eddy viscosity coefficient (m^2/s) |
55 |
jmc |
1.9 |
C GGL90diffKr - Vertical diffusion coefficient for heat, |
56 |
mlosch |
1.1 |
C salt and tracers (m^2/s) |
57 |
|
|
C |
58 |
|
|
C----------------------------------------------------------------------- |
59 |
|
|
C \ev |
60 |
|
|
CEOP |
61 |
|
|
_RL SQRTTWO |
62 |
|
|
PARAMETER ( SQRTTWO = 1.41421356237310D0 ) |
63 |
|
|
_RL GGL90eps |
64 |
|
|
PARAMETER ( GGL90eps = 2.23D-16 ) |
65 |
|
|
|
66 |
|
|
CHARACTER*(MAX_LEN_FNAM) GGL90TKEFile |
67 |
|
|
COMMON /GGL90_PARMS_C/ GGL90TKEFile |
68 |
|
|
|
69 |
|
|
_RL GGL90ck, GGL90ceps |
70 |
|
|
_RL GGL90alpha, GGL90m2 |
71 |
mlosch |
1.2 |
_RL GGL90diffTKEh |
72 |
mlosch |
1.1 |
_RL GGL90mixingLengthMin |
73 |
mlosch |
1.3 |
_RL GGL90TKEmin, GGL90TKEsurfMin, GGL90TKEbottom |
74 |
mlosch |
1.1 |
_RL GGL90viscMax, GGL90diffMax |
75 |
|
|
_RL GGL90dumpFreq, GGL90taveFreq |
76 |
dfer |
1.4 |
INTEGER mxlMaxFlag |
77 |
jmc |
1.9 |
COMMON /GGL90_PARMS_R/ |
78 |
mlosch |
1.1 |
& GGL90ck, GGL90ceps, |
79 |
|
|
& GGL90alpha, GGL90m2, |
80 |
mlosch |
1.2 |
& GGL90diffTKEh, |
81 |
mlosch |
1.1 |
& GGL90mixingLengthMin, |
82 |
mlosch |
1.3 |
& GGL90TKEmin, GGL90TKEsurfMin, GGL90TKEbottom, |
83 |
mlosch |
1.1 |
& GGL90viscMax, GGL90diffMax, |
84 |
dfer |
1.4 |
& GGL90dumpFreq, GGL90taveFreq, mxlMaxFlag |
85 |
mlosch |
1.1 |
|
86 |
gforget |
1.5 |
_RL GGL90TKE (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
87 |
|
|
_RL GGL90viscArU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
88 |
|
|
_RL GGL90viscArV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
89 |
|
|
_RL GGL90diffKr (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
90 |
mlosch |
1.1 |
COMMON /GGL90_FIELDS/ GGL90TKE, |
91 |
gforget |
1.5 |
& GGL90viscArU, GGL90viscArV, GGL90diffKr |
92 |
mlosch |
1.1 |
|
93 |
|
|
LOGICAL GGL90isOn, GGL90mixingMaps, GGL90writeState |
94 |
jmc |
1.13 |
LOGICAL GGL90_dirichlet, mxlSurfFlag, calcMeanVertShear |
95 |
|
|
LOGICAL useIDEMIX |
96 |
mlosch |
1.1 |
COMMON /GGL90_PARMS_L/ |
97 |
gforget |
1.6 |
& GGL90isOn, GGL90mixingMaps, GGL90writeState, |
98 |
jmc |
1.13 |
& GGL90_dirichlet, mxlSurfFlag, calcMeanVertShear, |
99 |
|
|
& useIDEMIX |
100 |
mlosch |
1.1 |
|
101 |
dfer |
1.4 |
#ifdef ALLOW_GGL90_SMOOTH |
102 |
gforget |
1.5 |
COMMON /GGL90_CORNER/ mskCor |
103 |
dfer |
1.4 |
_RL mskCor(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
104 |
|
|
#endif |
105 |
|
|
|
106 |
mlosch |
1.7 |
#ifdef ALLOW_GGL90_IDEMIX |
107 |
|
|
c----------------------------------------------------------------------- |
108 |
|
|
c IDEMIX parameter |
109 |
|
|
c----------------------------------------------------------------------- |
110 |
|
|
_RL IDEMIX_tau_v,IDEMIX_tau_h,IDEMIX_gamma, IDEMIX_jstar |
111 |
|
|
_RL IDEMIX_mu0, IDEMIX_diff_min |
112 |
|
|
_RL IDEMIX_mixing_efficiency, IDEMIX_diff_max |
113 |
|
|
_RL IDEMIX_frac_F_b, IDEMIX_frac_F_s |
114 |
|
|
c----------------------------------------------------------------------- |
115 |
|
|
c IDEMIX 3-d fields |
116 |
|
|
c----------------------------------------------------------------------- |
117 |
|
|
_RL IDEMIX_E (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
118 |
|
|
_RL IDEMIX_V0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
119 |
|
|
_RL IDEMIX_tau_d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
120 |
|
|
c----------------------------------------------------------------------- |
121 |
|
|
c IDEMIX 2-d fields |
122 |
|
|
c----------------------------------------------------------------------- |
123 |
|
|
_RL IDEMIX_F_B(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
124 |
|
|
_RL IDEMIX_F_S(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
125 |
|
|
|
126 |
mlosch |
1.12 |
COMMON /GGL90_IDEMIX_01/ IDEMIX_E,IDEMIX_V0,IDEMIX_tau_d |
127 |
mlosch |
1.7 |
& ,IDEMIX_F_b,IDEMIX_F_S |
128 |
|
|
& ,IDEMIX_tau_v,IDEMIX_tau_h,IDEMIX_gamma,IDEMIX_jstar |
129 |
jmc |
1.9 |
& ,IDEMIX_mu0,IDEMIX_mixing_efficiency,IDEMIX_diff_max |
130 |
mlosch |
1.7 |
& ,IDEMIX_diff_min,IDEMIX_frac_F_b, IDEMIX_frac_F_s |
131 |
|
|
|
132 |
jmc |
1.9 |
CHARACTER*(MAX_LEN_FNAM) |
133 |
|
|
& IDEMIX_tidal_file, IDEMIX_wind_file |
134 |
|
|
LOGICAL IDEMIX_include_GM, IDEMIX_include_GM_bottom |
135 |
|
|
COMMON /GLL90_IMIX_02/ |
136 |
|
|
& IDEMIX_tidal_file, IDEMIX_wind_file, |
137 |
|
|
& IDEMIX_include_GM, IDEMIX_include_GM_bottom |
138 |
mlosch |
1.7 |
#endif /* ALLOW_GGL90_IDEMIX */ |
139 |
|
|
|
140 |
mlosch |
1.1 |
#endif /* ALLOW_GGL90 */ |