1 |
C $Header: /u/gcmpack/MITgcm/pkg/kpp/KPP_PARAMS.h,v 1.14 2009/09/18 11:40:22 mlosch Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
C *==========================================================* |
5 |
C | KPP_PARAMS.h |
6 |
C | o Basic parameter header for KPP vertical mixing |
7 |
C | parameterization. These parameters are initialized by |
8 |
C | and/or read in from data.kpp file. |
9 |
C *==========================================================* |
10 |
|
11 |
C Parameters used in kpp routine arguments (needed for compilation |
12 |
C of kpp routines even if ALLOW_KPP is not defined) |
13 |
C mdiff :: number of diffusivities for local arrays |
14 |
C Nrm1, Nrp1, Nrp2 :: number of vertical levels |
15 |
C imt :: array dimension for local arrays |
16 |
|
17 |
integer mdiff, Nrm1, Nrp1, Nrp2 |
18 |
integer imt |
19 |
parameter( mdiff = 3 ) |
20 |
parameter( Nrm1 = Nr-1 ) |
21 |
parameter( Nrp1 = Nr+1 ) |
22 |
parameter( Nrp2 = Nr+2 ) |
23 |
parameter( imt=(sNx+2*OLx)*(sNy+2*OLy) ) |
24 |
|
25 |
#ifdef ALLOW_KPP |
26 |
|
27 |
C Time invariant parameters initialized by subroutine kmixinit |
28 |
C nzmax (nx,ny) :: Maximum number of wet levels in each column |
29 |
C pMask :: Mask relating to Pressure/Tracer point grid. |
30 |
C 0. if P point is on land. |
31 |
C 1. if P point is in water. |
32 |
C Note: use now maskC since pMask is identical to maskC |
33 |
C zgrid (0:Nr+1) :: vertical levels of tracers (<=0) (m) |
34 |
C hwide (0:Nr+1) :: layer thicknesses (>=0) (m) |
35 |
C kpp_freq :: Re-computation frequency for KPP parameters (s) |
36 |
C kpp_dumpFreq :: KPP dump frequency. (s) |
37 |
C kpp_taveFreq :: KPP time-averaging frequency. (s) |
38 |
|
39 |
INTEGER nzmax ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, nSx, nSy ) |
40 |
c _RL pMask ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr, nSx, nSy ) |
41 |
_RL zgrid ( 0:Nr+1 ) |
42 |
_RL hwide ( 0:Nr+1 ) |
43 |
_RL kpp_freq |
44 |
_RL kpp_dumpFreq |
45 |
_RL kpp_taveFreq |
46 |
|
47 |
COMMON /kpp_i/ nzmax |
48 |
|
49 |
COMMON /kpp_r1/ zgrid, hwide |
50 |
|
51 |
COMMON /kpp_r2/ kpp_freq, kpp_dumpFreq, kpp_taveFreq |
52 |
|
53 |
C----------------------------------------------------------------------- |
54 |
C |
55 |
C KPP flags and min/max permitted values for mixing parameters |
56 |
C |
57 |
C KPPwriteState :: if true, write KPP state to file |
58 |
C minKPPhbl :: KPPhbl minimum value (m) |
59 |
C KPP_ghatUseTotalDiffus :: |
60 |
C if T : Compute the non-local term using |
61 |
C the total vertical diffusivity ; |
62 |
C if F (=default): use KPP vertical diffusivity |
63 |
C Note: prior to checkpoint55h_post, was using the total Kz |
64 |
C KPPuseDoubleDiff :: if TRUE, include double diffusive |
65 |
C contributions |
66 |
C LimitHblStable :: if TRUE (the default), limits the depth of the |
67 |
C hbl under stable conditions. |
68 |
C |
69 |
C----------------------------------------------------------------------- |
70 |
|
71 |
LOGICAL KPPwriteState, KPP_ghatUseTotalDiffus |
72 |
LOGICAL KPPuseDoubleDiff |
73 |
LOGICAL LimitHblStable |
74 |
COMMON /KPP_PARM_L/ |
75 |
& KPPwriteState, KPP_ghatUseTotalDiffus, |
76 |
& KPPuseDoubleDiff, LimitHblStable |
77 |
|
78 |
_RL minKPPhbl |
79 |
COMMON /KPP_PARM_R/ minKPPhbl |
80 |
|
81 |
C====================== file "kmixcom.h" ======================= |
82 |
C----------------------------------------------------------------------- |
83 |
C Define various parameters and common blocks for KPP vertical- |
84 |
C mixing scheme; used in "kppmix.F" subroutines. |
85 |
C Constants are set in subroutine KPP_READPARMS. |
86 |
C----------------------------------------------------------------------- |
87 |
C |
88 |
C----------------------------------------------------------------------- |
89 |
C parameters for several subroutines |
90 |
C |
91 |
C epsln = 1.0e-20 |
92 |
C phepsi = 1.0e-10 |
93 |
C epsilon = nondimensional extent of the surface layer = 0.1 |
94 |
C vonk = von Karmans constant = 0.4 |
95 |
C dB_dz = maximum dB/dz in mixed layer hMix = 5.2e-5 s^-2 |
96 |
C conc1,conam,concm,conc2,zetam,conas,concs,conc3,zetas |
97 |
C = scalar coefficients |
98 |
C----------------------------------------------------------------------- |
99 |
|
100 |
_RL epsln,phepsi,epsilon,vonk,dB_dz, |
101 |
& conc1, |
102 |
& conam,concm,conc2,zetam, |
103 |
& conas,concs,conc3,zetas |
104 |
|
105 |
common /kmixcom/ epsln,phepsi,epsilon,vonk,dB_dz, |
106 |
& conc1, |
107 |
& conam,concm,conc2,zetam, |
108 |
& conas,concs,conc3,zetas |
109 |
|
110 |
C----------------------------------------------------------------------- |
111 |
C parameters for subroutine "bldepth" |
112 |
C |
113 |
C to compute depth of boundary layer: |
114 |
C |
115 |
C Ricr = critical bulk Richardson Number = 0.3 |
116 |
C cekman = coefficient for ekman depth = 0.7 |
117 |
C cmonob = coefficient for Monin-Obukhov depth = 1.0 |
118 |
C concv = ratio of interior buoyancy frequency to |
119 |
C buoyancy frequency at entrainment depth = 1.8 |
120 |
C hbf = fraction of bounadry layer depth to |
121 |
C which absorbed solar radiation |
122 |
C contributes to surface buoyancy forcing = 1.0 |
123 |
C Vtc = non-dimensional coefficient for velocity |
124 |
C scale of turbulant velocity shear |
125 |
C (=function of concv,concs,epsilon,vonk,Ricr) |
126 |
C----------------------------------------------------------------------- |
127 |
|
128 |
_RL Ricr,cekman,cmonob,concv,Vtc |
129 |
_RL hbf |
130 |
|
131 |
common /kpp_bldepth1/ Ricr,cekman,cmonob,concv,Vtc |
132 |
common /kpp_bldepth2/ hbf |
133 |
|
134 |
C----------------------------------------------------------------------- |
135 |
C parameters and common arrays for subroutines "kmixinit" |
136 |
C and "wscale" |
137 |
C |
138 |
C to compute turbulent velocity scales: |
139 |
C |
140 |
C nni = number of values for zehat in the look up table |
141 |
C nnj = number of values for ustar in the look up table |
142 |
C |
143 |
C wmt = lookup table for wm, the turbulent velocity scale |
144 |
C for momentum |
145 |
C wst = lookup table for ws, the turbulent velocity scale |
146 |
C for scalars |
147 |
C deltaz = delta zehat in table |
148 |
C deltau = delta ustar in table |
149 |
C zmin = minimum limit for zehat in table (m3/s3) |
150 |
C zmax = maximum limit for zehat in table |
151 |
C umin = minimum limit for ustar in table (m/s) |
152 |
C umax = maximum limit for ustar in table |
153 |
C----------------------------------------------------------------------- |
154 |
|
155 |
integer nni , nnj |
156 |
parameter (nni = 890, nnj = 480) |
157 |
|
158 |
_RL wmt(0:nni+1,0:nnj+1), wst(0:nni+1,0:nnj+1) |
159 |
_RL deltaz,deltau,zmin,zmax,umin,umax |
160 |
common /kmixcws/ wmt, wst, |
161 |
& deltaz,deltau,zmin,zmax,umin,umax |
162 |
|
163 |
C----------------------------------------------------------------------- |
164 |
C parameters for subroutine "ri_iwmix" |
165 |
C |
166 |
C to compute vertical mixing coefficients below boundary layer: |
167 |
C |
168 |
C num_v_smooth_Ri = number of times Ri is vertically smoothed |
169 |
C Riinfty = local Richardson Number limit for shear instability = 0.7 |
170 |
C BVSQcon = Brunt-Vaisala squared (1/s^2) |
171 |
C difm0 = viscosity max due to shear instability (m^2/s) |
172 |
C difs0 = tracer diffusivity .. (m^2/s) |
173 |
C dift0 = heat diffusivity .. (m^2/s) |
174 |
C difmcon = viscosity due to convective instability (m^2/s) |
175 |
C difscon = tracer diffusivity .. (m^2/s) |
176 |
C diftcon = heat diffusivity .. (m^2/s) |
177 |
C----------------------------------------------------------------------- |
178 |
|
179 |
INTEGER num_v_smooth_Ri |
180 |
COMMON /kmixcri_i/ num_v_smooth_Ri |
181 |
|
182 |
_RL Riinfty, BVSQcon |
183 |
_RL difm0 , difs0 , dift0 |
184 |
_RL difmcon, difscon, diftcon |
185 |
COMMON /kmixcri_r/ Riinfty, BVSQcon, |
186 |
& difm0, difs0, dift0, |
187 |
& difmcon, difscon, diftcon |
188 |
|
189 |
C----------------------------------------------------------------------- |
190 |
C parameters for subroutine "ddmix" |
191 |
C |
192 |
C to compute additional diffusivity due to double diffusion: |
193 |
C |
194 |
C Rrho0 = limit for double diffusive density ratio |
195 |
C dsfmax = maximum diffusivity in case of salt fingering (m2/s) |
196 |
C----------------------------------------------------------------------- |
197 |
|
198 |
_RL Rrho0, dsfmax |
199 |
common /kmixcdd/ Rrho0, dsfmax |
200 |
|
201 |
C----------------------------------------------------------------------- |
202 |
C parameters for subroutine "blmix" |
203 |
C |
204 |
C to compute mixing within boundary layer: |
205 |
C |
206 |
C cstar = proportionality coefficient for nonlocal transport |
207 |
C cg = non-dimensional coefficient for counter-gradient term |
208 |
C----------------------------------------------------------------------- |
209 |
|
210 |
_RL cstar, cg |
211 |
common /kmixcbm/ cstar, cg |
212 |
|
213 |
#endif /* ALLOW_KPP */ |
214 |
|
215 |
CEH3 ;;; Local Variables: *** |
216 |
CEH3 ;;; mode:fortran *** |
217 |
CEH3 ;;; End: *** |