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