Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:41:35 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
7e819019d5 Dimi*0001 #include "KPP_OPTIONS.h"
                0002 
                0003 CBOP
                0004 C     !ROUTINE: KPP_INIT_FIXED
                0005 C     !INTERFACE:
                0006       SUBROUTINE KPP_INIT_FIXED( myThid )
                0007 
                0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
                0010 C     | SUBROUTINE KPP_INIT_FIXED
afaeb4fe62 Jean*0011 C     | o Routine to initialize GM/Redi variables
7e819019d5 Dimi*0012 C     |   that are kept fixed during the run.
                0013 C     *==========================================================*
                0014 C     \ev
                0015 C     !USES:
                0016       IMPLICIT NONE
                0017 
                0018 C     === Global variables ===
                0019 #include "EEPARAMS.h"
                0020 #include "SIZE.h"
                0021 #include "PARAMS.h"
ee7edf0613 Davi*0022 #include "GRID.h"
                0023 #include "KPP_PARAMS.h"
7e819019d5 Dimi*0024 
                0025 C     !INPUT/OUTPUT PARAMETERS:
                0026 C     === Routine arguments ===
                0027 C     myThid ::  my Thread Id number
                0028       INTEGER myThid
                0029 CEOP
                0030 
                0031 C     !LOCAL VARIABLES:
                0032 C     === Local variables ===
ee7edf0613 Davi*0033 C     i,j,k,bi,bj - Loop counters
                0034 C     zehat       - zeta * ustar**3
                0035 C     zeta        - Stability parameter d/l
afaeb4fe62 Jean*0036       INTEGER i, j, k
ee7edf0613 Davi*0037       _RL zehat
                0038       _RL zeta
                0039       _RL usta
                0040       _RL p25, p33
                0041 
afaeb4fe62 Jean*0042 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0043 C-- Note: this should go in a separated S/R: KPP_MNC_INIT
                0044 #ifdef ALLOW_MNC
                0045       IF (useMNC) THEN
                0046 C       Define grid types for KPP variables
                0047         CALL MNC_CW_ADD_VNAME('KPPviscAz', 'Cen_xy_Hn__C__t',
                0048      &       4,5, myThid)
                0049         CALL MNC_CW_ADD_VATTR_TEXT('KPPviscAz','units','m^2/s',
                0050      &       myThid)
                0051         CALL MNC_CW_ADD_VATTR_TEXT('KPPviscAz','long_name',
                0052      &       'KPP_vertical_eddy_viscosity_coefficient', myThid)
                0053         CALL MNC_CW_ADD_VATTR_TEXT('KPPviscAz',
                0054      &       'coordinates','XC YC RC iter', myThid)
                0055 
                0056         CALL MNC_CW_ADD_VNAME('KPPdiffKzS', 'Cen_xy_Hn__C__t',
                0057      &       4,5, myThid)
                0058         CALL MNC_CW_ADD_VATTR_TEXT('KPPdiffKzS','units','m^2/s',
                0059      &       myThid)
                0060         CALL MNC_CW_ADD_VATTR_TEXT('KPPdiffKzS','long_name',
                0061      &       'KPP_salt-tracer_vertical_diffusion_coefficient',
                0062      &       myThid)
                0063         CALL MNC_CW_ADD_VATTR_TEXT('KPPdiffKzS',
                0064      &       'coordinates','XC YC RC iter', myThid)
                0065 
                0066         CALL MNC_CW_ADD_VNAME('KPPdiffKzT', 'Cen_xy_Hn__C__t',
                0067      &       4,5, myThid)
                0068         CALL MNC_CW_ADD_VATTR_TEXT('KPPdiffKzT','units','m^2/s',
                0069      &       myThid)
                0070         CALL MNC_CW_ADD_VATTR_TEXT('KPPdiffKzT','long_name',
                0071      &       'KPP_vertical_heat_diffusion_coefficient', myThid)
                0072         CALL MNC_CW_ADD_VATTR_TEXT('KPPdiffKzT',
                0073      &       'coordinates','XC YC RC iter', myThid)
                0074 
                0075         CALL MNC_CW_ADD_VNAME('KPPGHAT', 'Cen_xy_Hn__C__t',
                0076      &       4,5, myThid)
                0077         CALL MNC_CW_ADD_VATTR_TEXT('KPPGHAT','units','s/m^2',
                0078      &       myThid)
                0079         CALL MNC_CW_ADD_VATTR_TEXT('KPPGHAT','long_name',
                0080      &       'KPP_nonlocal_transport_coefficient', myThid)
                0081         CALL MNC_CW_ADD_VATTR_TEXT('KPPGHAT',
                0082      &       'coordinates','XC YC RC iter', myThid)
                0083 
141e734c73 Jean*0084         CALL MNC_CW_ADD_VNAME('KPPghatKS', 'Cen_xy_Hn__L__t',
                0085      &       4,5, myThid)
                0086         CALL MNC_CW_ADD_VATTR_TEXT('KPPghatKS','units','0-1',
                0087      &       myThid)
                0088         CALL MNC_CW_ADD_VATTR_TEXT('KPPghatKS','long_name',
                0089      &  'ratio of KPP non-local (salt) flux relative to surface-flux',
                0090      &       myThid)
                0091         CALL MNC_CW_ADD_VATTR_TEXT('KPPghatKS','coordinates',
                0092      &       'XC YC RF iter', myThid)
                0093 
afaeb4fe62 Jean*0094         CALL MNC_CW_ADD_VNAME('KPPHBL', 'Cen_xy_Hn__-__t',
                0095      &       3,4, myThid)
                0096         CALL MNC_CW_ADD_VATTR_TEXT('KPPHBL','units','m',
                0097      &       myThid)
                0098         CALL MNC_CW_ADD_VATTR_TEXT('KPPHBL','long_name',
                0099      &       'KPP_boundary_layer_depth', myThid)
                0100         CALL MNC_CW_ADD_VATTR_TEXT('KPPHBL',
                0101      &       'coordinates','XC YC iter', myThid)
                0102 
                0103         CALL MNC_CW_ADD_VNAME('KPPFRAC', 'Cen_xy_Hn__-__t',
                0104      &       3,4, myThid)
                0105         CALL MNC_CW_ADD_VATTR_TEXT('KPPFRAC','units','dimless',
                0106      &       myThid)
                0107         CALL MNC_CW_ADD_VATTR_TEXT('KPPFRAC','long_name',
                0108      &       'KPP_short-wave_fraction_penetrating_mixing_layer',
                0109      &       myThid)
                0110         CALL MNC_CW_ADD_VATTR_TEXT('KPPFRAC',
                0111      &       'coordinates','XC YC iter', myThid)
                0112       ENDIF
                0113 #endif /* ALLOW_MNC */
                0114 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
ee7edf0613 Davi*0115 
                0116       _BEGIN_MASTER(myThid)
                0117 
                0118       p25 = 0.25 _d 0
                0119       p33 = 1. _d 0 / 3. _d 0
                0120 
                0121 C-----------------------------------------------------------------------
                0122 C Initialize constants that depend on parameters in data.kpp
                0123 C-----------------------------------------------------------------------
                0124 
                0125       Vtc     = concv * SQRT(0.2 _d 0 /concs/epsilon) / vonk**2 / Ricr
                0126       cg      = cstar * vonk * (concs * vonk * epsilon)**p33
                0127 
                0128 c-----------------------------------------------------------------------
                0129 c construct the wm and ws lookup tables
                0130 c-----------------------------------------------------------------------
                0131 
                0132       deltaz = (zmax - zmin)/(nni + 1)
                0133       deltau = (umax - umin)/(nnj + 1)
                0134 
                0135       DO i = 0, nni + 1
                0136          zehat = deltaz*i + zmin
                0137          DO j = 0, nnj + 1
                0138             usta = deltau*j + umin
                0139             zeta = zehat / max(phepsi,usta**3)
                0140             IF (zehat .GE. 0.) THEN
                0141                wmt(i,j) = vonk*usta/(1. + conc1*zeta)
                0142                wst(i,j) = wmt(i,j)
                0143             ELSE
                0144                IF (zeta .GT. zetam) THEN
                0145                   wmt(i,j) = vonk*usta*(1. - conc2*zeta)**p25
                0146                ELSE
                0147                   wmt(i,j) = vonk*(conam*usta**3 - concm*zehat)**p33
                0148                ENDIF
                0149                IF (zeta .GT. zetas) THEN
                0150                   wst(i,j) = vonk*usta*SQRT(1. _d 0 - conc3*zeta)
                0151                ELSE
                0152                   wst(i,j) = vonk*(conas*usta**3 - concs*zehat)**p33
                0153                ENDIF
                0154             ENDIF
                0155          ENDDO
                0156       ENDDO
                0157 
                0158 C-----------------------------------------------------------------------
                0159 C     vertical grid
                0160 C-----------------------------------------------------------------------
                0161 
                0162       IF (minKPPhbl .EQ. UNSET_RL) THEN
                0163          minKPPhbl = -rC(1)
                0164       ENDIF
                0165       zgrid(0)  =  phepsi
                0166       hwide(0)  =  phepsi
                0167 c     zgrid(1)  = -drF(1)*0.5
                0168 c     hwide(1)  =  drF(1)
                0169 c     DO k = 2, Nr
                0170 c        zgrid(k) = zgrid(k-1) - (drF(k-1)+drF(k))*0.5
                0171 c        hwide(k) = drF(k)
                0172 c     ENDDO
                0173 C- jmc : use the model vertical grid :
                0174       DO k = 1, Nr
                0175          zgrid(k) = rC(k)
                0176          hwide(k) = drF(k)
                0177       ENDDO
                0178 
                0179       zgrid(Nrp1) = zgrid(Nr) * 100.
                0180 
                0181       hwide(Nrp1) = phepsi
                0182 
                0183       _END_MASTER(myThid)
                0184       _BARRIER
7e819019d5 Dimi*0185 
                0186 #ifdef ALLOW_DIAGNOSTICS
                0187       IF ( useDiagnostics ) THEN
                0188         CALL KPP_DIAGNOSTICS_INIT( myThid )
                0189       ENDIF
                0190 #endif
                0191 
                0192       RETURN
                0193       END