C $Header: /u/gcmpack/MITgcm/pkg/gmredi/GMREDI.h,v 1.34 2017/04/03 17:09:01 ou.wang Exp $ C $Name: $ #ifdef ALLOW_GMREDI C--- GM/Redi package parameters C-- Numerical Constant _RL op5 _RL op25 PARAMETER( op5 = 0.5 _d 0 ) PARAMETER( op25 = 0.25 _d 0 ) C-- COMMON /GM_PARAMS_L/ GM/Redi Logical-type parameters C GM_AdvForm :: use Advective Form (instead of Skew-Flux form) C GM_AdvSeparate :: do separately advection by Eulerian and Bolus velocity C GM_useBVP :: use Boundary-Value-Problem method for Bolus transport C GM_useSubMeso :: use parameterization of mixed layer (Sub-Mesoscale) eddies C GM_ExtraDiag :: select extra diagnostics C GM_InMomAsStress :: apply GM as a stress in momentum Eq. C GM_MNC :: C GM_MDSIO :: C GM_useK3D :: use the 3 dimensional calculation for K C GM_K3D_beta_eq_0 :: Ignores the beta term when calculating grad(q) C GM_K3D_ThickSheet:: Use a thick PV sheet C GM_K3D_surfK :: Imposes a constant K in the surface layer C GM_K3D_constRedi :: Imposes a constant K for the Redi isoneutral diffusivity C GM_K3D_use_constK:: Imposes a constant K for the eddy transport C GM_K3D_smooth :: Expand PV closure in terms of baroclinic modes (=.FALSE. for debugging only!) LOGICAL GM_AdvForm LOGICAL GM_AdvSeparate LOGICAL GM_useBVP LOGICAL GM_useSubMeso LOGICAL GM_ExtraDiag LOGICAL GM_InMomAsStress LOGICAL GM_MNC LOGICAL GM_MDSIO LOGICAL GM_useK3D LOGICAL GM_K3D_ThickSheet LOGICAL GM_K3D_surfK LOGICAL GM_K3D_constRedi LOGICAL GM_K3D_use_constK LOGICAL GM_K3D_beta_eq_0 LOGICAL GM_K3D_smooth COMMON /GM_PARAMS_L/ & GM_AdvForm, GM_AdvSeparate, & GM_useBVP, GM_useSubMeso, & GM_ExtraDiag, GM_MNC, GM_MDSIO, & GM_InMomAsStress, & GM_useK3D, GM_K3D_smooth, GM_K3D_use_constK, & GM_K3D_beta_eq_0, GM_K3D_ThickSheet, & GM_K3D_surfK, GM_K3D_constRedi C-- GM/Redi Integer-type parameters C GM_BVP_modeNumber :: vertical mode number used for speed "c" in BVP transport C GM_K3D_NModes :: number of vertical modes used for calculating Xi in K3D INTEGER GM_BVP_modeNumber INTEGER GM_K3D_NModes PARAMETER (GM_K3D_NModes=6) COMMON /GM_PARAMS_I/ & GM_BVP_modeNumber C-- COMMON /GM_PARAMS_C/ GM/Redi Character-type parameters C GM_taper_scheme :: select which tapering/clipping scheme to use C GM_iso2dFile :: input file for 2.D horiz scaling of Isopycnal diffusivity C GM_iso1dFile :: input file for 1.D vert. scaling of Isopycnal diffusivity C GM_bol2dFile :: input file for 2.D horiz scaling of Thickness diffusivity C GM_bol1dFile :: input file for 1.D vert. scaling of Thickness diffusivity C GM_isopycK3dFile :: input file for 3.D GM_isopycK C GM_background_K3dFile :: input file for 3.D GM_background_K CHARACTER*(40) GM_taper_scheme CHARACTER*(MAX_LEN_FNAM) GM_iso2dFile CHARACTER*(MAX_LEN_FNAM) GM_iso1dFile CHARACTER*(MAX_LEN_FNAM) GM_bol2dFile CHARACTER*(MAX_LEN_FNAM) GM_bol1dFile CHARACTER*(MAX_LEN_FNAM) GM_isopycK3dFile CHARACTER*(MAX_LEN_FNAM) GM_background_K3dFile COMMON /GM_PARAMS_C/ & GM_taper_scheme, & GM_iso2dFile, GM_iso1dFile, & GM_bol2dFile, GM_bol1dFile, & GM_isopycK3dFile, GM_background_K3dFile C-- COMMON /GM_PARAMS_R/ GM/Redi real-type parameters C GM_isopycK :: Isopycnal diffusivity [m^2/s] (Redi-tensor) C GM_background_K :: Thickness diffusivity [m^2/s] (GM bolus transport) C GM_maxSlope :: maximum slope (tapering/clipping) [-] C GM_Kmin_horiz :: minimum horizontal diffusivity [m^2/s] C GM_Small_Number :: epsilon used in computing the slope C GM_slopeSqCutoff :: slope^2 cut-off value C- Transition layer thickness definition: C GM_facTrL2dz :: minimum Trans. Layer Thick. as a factor of local dz C GM_facTrL2ML :: maximum Trans. Layer Thick. as a factor of Mix-Layer Depth C GM_maxTransLay :: maximum Trans. Layer Thick. [m] C- Boundary-Value-Problem method parameters: C GM_BVP_cMin :: minimum value for wave speed parameter "c" in BVP [m/s] C- mixed layer (Sub-Mesoscale) eddies parameterization: C subMeso_Ceff :: efficiency coefficient of Mixed-Layer Eddies [-] C subMeso_invTau :: inverse of mixing time-scale in sub-meso parameteriz. [s^-1] C subMeso_LfMin :: minimum value for length-scale "Lf" [m] C subMeso_Lmax :: maximum horizontal grid-scale length [m] C Variable K with PV diffusion parameters: C GM_K3D_gamma :: mixing efficiency for 3D eddy diffusivity [-] C GM_K3D_b1 :: an empirically determined constant of O(1) C GM_K3D_EadyMinDepth :: upper depth for Eady calculation C GM_K3D_EadyMaxDepth :: lower depth for Eady calculation C GM_maxK3D :: Upper bound on the diffusivity C GM_K3D_constK :: Constant diffusivity to use when GM_useK3D=.TRUE. and C GM_K3D_use_constK=.TRUE. and/or GM_K3D_constRedi=.TRUE. C GM_K3D_Rmax :: Upper bound on the length scale used for calculating urms C GM_K3D_Rmin :: Lower bound on the length scale used for calculating the eddy radius C GM_K3D_minCori :: minimum value for f (to stop things blowing up near the equator) C GM_K3D_minN2 :: minimum value for the square of the buoyancy frequency C GM_K3D_surfMinDepth :: minimum value for the depth of the surface layer C GM_K3D_vecFreq :: Frequency at which to update the baroclinic modes C GM_K3D_minRenorm:: minimum value for the renormalisation factor C GM_K3D_maxRenorm:: maximum value for the renormalisation factor _RL GM_isopycK _RL GM_background_K _RL GM_maxSlope _RL GM_Kmin_horiz _RL GM_Small_Number _RL GM_slopeSqCutoff _RL GM_Visbeck_alpha _RL GM_Visbeck_length _RL GM_Visbeck_depth _RL GM_Visbeck_minDepth _RL GM_Visbeck_maxSlope _RL GM_Visbeck_minVal_K _RL GM_Visbeck_maxVal_K _RL GM_K3D_gamma _RL GM_K3D_b1 _RL GM_K3D_EadyMinDepth _RL GM_K3D_EadyMaxDepth _RL GM_K3D_Lambda _RL GM_K3D_smallK _RL GM_K3D_maxC _RL GM_maxK3D _RL GM_K3D_constK _RL GM_K3D_Rmax _RL GM_K3D_Rmin _RL GM_K3D_minCori _RL GM_K3D_minN2 _RL GM_K3D_surfMinDepth _RL GM_K3D_vecFreq _RL GM_K3D_minRenorm _RL GM_K3D_maxRenorm _RL GM_facTrL2dz _RL GM_facTrL2ML _RL GM_maxTransLay _RL GM_Scrit _RL GM_Sd _RL GM_BVP_cMin _RL subMeso_Ceff _RL subMeso_invTau _RL subMeso_LfMin _RS subMeso_Lmax COMMON /GM_PARAMS_RL/ & GM_isopycK, GM_background_K, & GM_maxSlope, & GM_Kmin_horiz, & GM_Small_Number, GM_slopeSqCutoff, & GM_Visbeck_alpha, GM_Visbeck_length, & GM_Visbeck_depth, & GM_Visbeck_minDepth, GM_Visbeck_maxSlope, & GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K, & GM_K3D_gamma, GM_K3D_b1, GM_K3D_EadyMinDepth, & GM_K3D_EadyMaxDepth, GM_K3D_Lambda, & GM_K3D_smallK, GM_K3D_maxC, & GM_maxK3D, GM_K3D_minCori, GM_K3D_minN2, & GM_K3D_surfMinDepth, GM_K3D_Rmax, GM_K3D_Rmin, & GM_K3D_constK, GM_K3D_vecFreq, & GM_K3D_minRenorm, GM_K3D_maxRenorm, & GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay, & GM_Scrit, GM_Sd, GM_BVP_cMin, & subMeso_Ceff, subMeso_invTau, subMeso_LfMin COMMON /GM_PARAMS_RS/ & subMeso_Lmax C-- COMMON /GM_DERIVED_PAR/ other GM/Redi parameters C (derived from previous block and not directly user configured) _RL GM_rMaxSlope _RL GM_skewflx _RL GM_advect _RL GM_BVP_rModeNumber _RL GM_BVP_cHat2Min COMMON /GM_DERIVED_PAR/ & GM_rMaxSlope, & GM_skewflx, GM_advect, & GM_BVP_rModeNumber, GM_BVP_cHat2Min C-- COMMON /GM_COEFFICIENTS/ GM/Redi scaling coefficients C defined at grid-cell center (tracer location) C GM_isoFac2d :: 2.D horiz scaling factor [-] of Isopycnal diffusivity C GM_bolFac2d :: 2.D horiz scaling factor [-] of Thickness diffusivity C GM_isoFac1d :: 1.D vert. scaling factor [-] of Isopycnal diffusivity C GM_bolFac1d :: 1.D vert. scaling factor [-] of Thickness diffusivity _RS GM_isoFac2d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS GM_bolFac2d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS GM_isoFac1d(Nr) _RS GM_bolFac1d(Nr) COMMON /GM_COEFFICIENTS/ & GM_isoFac2d, GM_bolFac2d, GM_isoFac1d, GM_bolFac1d C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| C--- GM/Redi tensor elements C Bottom row of tensor corresponds to W points C Kwx :: K_31 element of GM/Redi tensor, X direction at W point C Kwy :: K_32 element of GM/Redi tensor, Y direction at W point C Kwz :: K_33 element of GM/Redi tensor, Z direction at W point _RL Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) COMMON /GM_Wtensor/ Kwx,Kwy,Kwz #ifdef GM_NON_UNITY_DIAGONAL C Horizontal part of the tensor C Kux :: K_11 element of GM/Redi tensor, X direction at U point C Kvy :: K_22 element of GM/Redi tensor, Y direction at V point _RL Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) COMMON /GM_HorTensor/ Kux,Kvy #else _RL Kux,Kvy PARAMETER(Kux=1.,Kvy=1.) #endif #ifdef GM_EXTRA_DIAGONAL C First/second rows of tensor corresponds to U/V points C Kuz :: K_13 element of GM/Redi tensor, Z direction at U point C Kvz :: K_23 element of GM/Redi tensor, Z direction at V point _RL Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) COMMON /GM_UVtensor/ Kuz,Kvz #else _RL Kuz,Kvz PARAMETER(Kuz=1.,Kvz=1.) #endif #ifdef GM_BOLUS_ADVEC C GM advection formulation: bolus velocities are derived from 2 C streamfunctions PsiX and PsiY : _RL GM_PsiX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL GM_PsiY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) COMMON /GM_BOLUS/ GM_PsiX,GM_PsiY #endif #ifdef GM_VISBECK_VARIABLE_K C GM mixing/stirring coefficient (spatially variable in horizontal C for Visbeck et al. parameterization) _RL VisbeckK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) COMMON /GM_Visbeck/ VisbeckK #endif #ifdef GM_K3D C K3D :: The three dimensional eddy mixing coeffixint [m**2/s] C modesC :: First baroclinic mode at the centre of a tracer cell [-] C modesW :: First N baroclinic mode at the western face of a tracer cell [-] C modesS :: First N baroclinic mode at the southern face of a tracer cell [-] C Rdef :: Deformation radius [m] C gradf :: gradient of the Coriolis paramater at a cell centre, 1/(m*s) _RL K3D(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) _RL modesW(GM_K3D_NModes,1-Olx:sNx+Olx, & 1-Oly:sNy+Oly,1:Nr,nSx,nSy) _RL modesS(GM_K3D_NModes,1-Olx:sNx+Olx, & 1-Oly:sNy+Oly,1:Nr,nSx,nSy) _RL Rdef(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy) _RL gradf(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy) COMMON /GM_K3D/ K3D, modesC, modesW, modesS, Rdef, gradf #endif #endif /* ALLOW_GMREDI */ CEH3 ;;; Local Variables: *** CEH3 ;;; mode:fortran *** CEH3 ;;; End: ***