22 |
C GM_MDSIO :: |
C GM_MDSIO :: |
23 |
C GM_useK3D :: use the 3 dimensional calculation for K |
C GM_useK3D :: use the 3 dimensional calculation for K |
24 |
C GM_K3D_beta_eq_0 :: Ignores the beta term when calculating grad(q) |
C GM_K3D_beta_eq_0 :: Ignores the beta term when calculating grad(q) |
25 |
C GM_K3D_likeGM :: Makes the PV closure similar to the GM closure (for debugging only!) |
C GM_K3D_likeGM :: Makes the PV closure similar to the GM closure by enforcing a |
26 |
C GM_K3D_smooth :: Expand PV closure in terms of baroclinic modes (for debugging only!) |
C :: constant K and setting beta=0 |
27 |
|
C GM_K3D_ThickSheet:: Use a thick PV sheet |
28 |
|
C GM_K3D_surfK :: Imposes a constant K in the surface layer |
29 |
|
C GM_K3D_constRedi :: Imposes a constant K for the Redi isoneutral diffusivity |
30 |
|
C GM_K3D_smooth :: Expand PV closure in terms of baroclinic modes (=.FALSE. for debugging only!) |
31 |
LOGICAL GM_AdvForm |
LOGICAL GM_AdvForm |
32 |
LOGICAL GM_AdvSeparate |
LOGICAL GM_AdvSeparate |
33 |
LOGICAL GM_useBVP |
LOGICAL GM_useBVP |
38 |
LOGICAL GM_MDSIO |
LOGICAL GM_MDSIO |
39 |
LOGICAL GM_useK3D |
LOGICAL GM_useK3D |
40 |
LOGICAL GM_K3D_likeGM |
LOGICAL GM_K3D_likeGM |
41 |
|
LOGICAL GM_K3D_ThickSheet |
42 |
|
LOGICAL GM_K3D_surfK |
43 |
|
LOGICAL GM_K3D_constRedi |
44 |
LOGICAL GM_K3D_beta_eq_0 |
LOGICAL GM_K3D_beta_eq_0 |
45 |
LOGICAL GM_K3D_smooth |
LOGICAL GM_K3D_smooth |
46 |
COMMON /GM_PARAMS_L/ |
COMMON /GM_PARAMS_L/ |
49 |
& GM_ExtraDiag, GM_MNC, GM_MDSIO, |
& GM_ExtraDiag, GM_MNC, GM_MDSIO, |
50 |
& GM_InMomAsStress, |
& GM_InMomAsStress, |
51 |
& GM_useK3D, GM_K3D_likeGM, GM_K3D_smooth, |
& GM_useK3D, GM_K3D_likeGM, GM_K3D_smooth, |
52 |
& GM_K3D_beta_eq_0 |
& GM_K3D_beta_eq_0, GM_K3D_ThickSheet, |
53 |
|
& GM_K3D_surfK, GM_K3D_constRedi |
54 |
|
|
55 |
C-- GM/Redi Integer-type parameters |
C-- GM/Redi Integer-type parameters |
56 |
C GM_BVP_modeNumber :: vertical mode number used for speed "c" in BVP transport |
C GM_BVP_modeNumber :: vertical mode number used for speed "c" in BVP transport |
97 |
C subMeso_Lmax :: maximum horizontal grid-scale length [m] |
C subMeso_Lmax :: maximum horizontal grid-scale length [m] |
98 |
C Variable K with PV diffusion parameters: |
C Variable K with PV diffusion parameters: |
99 |
C GM_K3D_gamma :: mixing efficiency for 3D eddy diffusivity [-] |
C GM_K3D_gamma :: mixing efficiency for 3D eddy diffusivity [-] |
100 |
|
C GM_K3D_b1 :: an empirically determined constant of O(1) |
101 |
C GM_K3D_EadyMinDepth :: upper depth for Eady calculation |
C GM_K3D_EadyMinDepth :: upper depth for Eady calculation |
102 |
C GM_K3D_EadyMaxDepth :: lower depth for Eady calculation |
C GM_K3D_EadyMaxDepth :: lower depth for Eady calculation |
103 |
C GM_maxK3D :: Upper bound on the diffusivity |
C GM_maxK3D :: Upper bound on the diffusivity |
104 |
C GM_K3D_constK :: Constant diffusivity to use when GM_useK3D=.TRUE. and GM_K3D_likeGM=.TRUE. |
C GM_K3D_constK :: Constant diffusivity to use when GM_useK3D=.TRUE. and GM_K3D_likeGM=.TRUE. |
105 |
C GM_K3D_maxLurms:: Upper bound on th length scale used for calculating urms |
C GM_K3D_Rmax :: Upper bound on the length scale used for calculating urms |
106 |
|
C GM_K3D_Rmin :: Lower bound on the length scale used for calculating the eddy radius |
107 |
C GM_K3D_minCori :: minimum value for f (to stop things blowing up near the equator) |
C GM_K3D_minCori :: minimum value for f (to stop things blowing up near the equator) |
108 |
C GM_K3D_minN2 :: minimum value for the square of the buoyancy frequency |
C GM_K3D_minN2 :: minimum value for the square of the buoyancy frequency |
109 |
C GM_K3D_surfMinDepth :: minimum value for the depth of the surface layer |
C GM_K3D_surfMinDepth :: minimum value for the depth of the surface layer |
110 |
C GM_K3D_vecFreq :: Frequency at which to update the baroclinic modes |
C GM_K3D_vecFreq :: Frequency at which to update the baroclinic modes |
111 |
|
C GM_K3D_minRenorm:: minimum value for the renormalisation factor |
112 |
|
C GM_K3D_maxRenorm:: maximum value for the renormalisation factor |
113 |
|
|
114 |
_RL GM_isopycK |
_RL GM_isopycK |
115 |
_RL GM_background_K |
_RL GM_background_K |
125 |
_RL GM_Visbeck_minVal_K |
_RL GM_Visbeck_minVal_K |
126 |
_RL GM_Visbeck_maxVal_K |
_RL GM_Visbeck_maxVal_K |
127 |
_RL GM_K3D_gamma |
_RL GM_K3D_gamma |
128 |
|
_RL GM_K3D_b1 |
129 |
_RL GM_K3D_EadyMinDepth |
_RL GM_K3D_EadyMinDepth |
130 |
_RL GM_K3D_EadyMaxDepth |
_RL GM_K3D_EadyMaxDepth |
131 |
_RL GM_K3D_Lambda |
_RL GM_K3D_Lambda |
132 |
_RL GM_K3D_smallK |
_RL GM_K3D_smallK |
|
_RL GM_K3D_maxSlope |
|
133 |
_RL GM_K3D_maxC |
_RL GM_K3D_maxC |
134 |
_RL GM_maxK3D |
_RL GM_maxK3D |
135 |
_RL GM_K3D_constK |
_RL GM_K3D_constK |
136 |
_RL GM_K3D_maxLurms |
_RL GM_K3D_Rmax |
137 |
|
_RL GM_K3D_Rmin |
138 |
_RL GM_K3D_minCori |
_RL GM_K3D_minCori |
139 |
_RL GM_K3D_minN2 |
_RL GM_K3D_minN2 |
140 |
_RL GM_K3D_surfMinDepth |
_RL GM_K3D_surfMinDepth |
141 |
_RL GM_K3D_vecFreq |
_RL GM_K3D_vecFreq |
142 |
|
_RL GM_K3D_minRenorm |
143 |
|
_RL GM_K3D_maxRenorm |
144 |
_RL GM_facTrL2dz |
_RL GM_facTrL2dz |
145 |
_RL GM_facTrL2ML |
_RL GM_facTrL2ML |
146 |
_RL GM_maxTransLay |
_RL GM_maxTransLay |
160 |
& GM_Visbeck_depth, |
& GM_Visbeck_depth, |
161 |
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope, |
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope, |
162 |
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K, |
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K, |
163 |
& GM_K3D_gamma, GM_K3D_EadyMinDepth, |
& GM_K3D_gamma, GM_K3D_b1, GM_K3D_EadyMinDepth, |
164 |
& GM_K3D_EadyMaxDepth, GM_K3D_Lambda, |
& GM_K3D_EadyMaxDepth, GM_K3D_Lambda, |
165 |
& GM_K3D_smallK, GM_K3D_maxSlope, GM_K3D_maxC, |
& GM_K3D_smallK, GM_K3D_maxC, |
166 |
& GM_maxK3D, GM_K3D_minCori, GM_K3D_minN2, |
& GM_maxK3D, GM_K3D_minCori, GM_K3D_minN2, |
167 |
& GM_K3D_surfMinDepth, GM_K3D_maxLurms, |
& GM_K3D_surfMinDepth, GM_K3D_Rmax, GM_K3D_Rmin, |
168 |
& GM_K3D_constK, GM_K3D_vecFreq, |
& GM_K3D_constK, GM_K3D_vecFreq, |
169 |
|
& GM_K3D_minRenorm, GM_K3D_maxRenorm, |
170 |
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay, |
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay, |
171 |
& GM_Scrit, GM_Sd, GM_BVP_cMin, |
& GM_Scrit, GM_Sd, GM_BVP_cMin, |
172 |
& subMeso_Ceff, subMeso_invTau, subMeso_LfMin |
& subMeso_Ceff, subMeso_invTau, subMeso_LfMin |
252 |
|
|
253 |
#ifdef GM_K3D |
#ifdef GM_K3D |
254 |
C K3D :: The three dimensional eddy mixing coeffixint [m**2/s] |
C K3D :: The three dimensional eddy mixing coeffixint [m**2/s] |
255 |
|
C modesC :: First baroclinic mode at the centre of a tracer cell [-] |
256 |
|
C modesW :: First N baroclinic mode at the western face of a tracer cell [-] |
257 |
|
C modesS :: First N baroclinic mode at the southern face of a tracer cell [-] |
258 |
|
C Rdef :: Deformation radius [m] |
259 |
|
|
260 |
_RL K3D(1-Olx:sNx+Olx,1-Oly:sNy+Oly,1:Nr,nSx,nSy) |
_RL K3D(1-Olx:sNx+Olx,1-Oly:sNy+Oly,1:Nr,nSx,nSy) |
261 |
_RL modesC(1,1-Olx:sNx+Olx,1-Oly:sNy+Oly,1:Nr,nSx,nSy) |
_RL modesC(1,1-Olx:sNx+Olx,1-Oly:sNy+Oly,1:Nr,nSx,nSy) |
262 |
_RL modesW(GM_K3D_NModes,1-Olx:sNx+Olx, |
_RL modesW(GM_K3D_NModes,1-Olx:sNx+Olx, |