Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
2fa42a6013 Alis*0001 #include "KPP_OPTIONS.h"
08300bd1e7 Jean*0002 #ifdef ALLOW_GMREDI
                0003 #include "GMREDI_OPTIONS.h"
                0004 #endif
1f89baba18 Patr*0005 #ifdef ALLOW_SALT_PLUME
                0006 #include "SALT_PLUME_OPTIONS.h"
                0007 #endif
2fa42a6013 Alis*0008 
88b144ae49 Jean*0009       SUBROUTINE KPP_TRANSPORT_S (
2fa42a6013 Alis*0010      I     iMin,iMax,jMin,jMax,bi,bj,k,km1,
417c225d28 Jean*0011      O     df,
                0012      I     myTime, myIter, myThid )
88b144ae49 Jean*0013 C     *==========================================================*
                0014 C     | o SUBROUTINE KPP_TRANSPORT_S
                0015 C     |   Add non local KPP transport term (ghat) to diffusive
                0016 C     |   salinity flux.
                0017 C     *==========================================================*
                0018 C     | The nonlocal transport term is nonzero only for scalars
                0019 C     | in unstable (convective) forcing conditions.
                0020 C     | Note: KPPdiffKzS(-,k) is defined at the top of grid cell
                0021 C     |       k while KPPghat(i,j,k,bi,bj) is defined at the
                0022 C     |       bottom of grid cell k.
                0023 C     |       For K=1, KPPdiffKzS(-,k) = 0 which insures no flux
                0024 C     |       through the surface.
                0025 C     *==========================================================*
2fa42a6013 Alis*0026       IMPLICIT NONE
                0027 
                0028 C     == GLobal variables ==
                0029 #include "SIZE.h"
                0030 #include "EEPARAMS.h"
                0031 #include "PARAMS.h"
                0032 #include "GRID.h"
                0033 #include "FFIELDS.h"
                0034 #include "KPP.h"
                0035 #include "KPP_PARAMS.h"
08300bd1e7 Jean*0036 #ifdef ALLOW_GMREDI
8749f0b4bc Dimi*0037 # include "GMREDI.h"
                0038 #endif
                0039 #ifdef ALLOW_SALT_PLUME
                0040 # include "SALT_PLUME.h"
08300bd1e7 Jean*0041 #endif
2fa42a6013 Alis*0042 
                0043 C     == Routine arguments ==
                0044 C     iMin,iMax,jMin,  - Range of points for which calculation
                0045 C     jMax,bi,bj,k,km1   results will be set.
                0046 C     df               - Diffusive flux component work array.
417c225d28 Jean*0047 C     myTime :: Current time in simulation
                0048 C     myIter :: Current iteration number in simulation
                0049 C     myThid :: My Thread Id. number
2fa42a6013 Alis*0050       INTEGER iMin,iMax,jMin,jMax,bi,bj,k,km1
                0051       _RL df     (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
417c225d28 Jean*0052       _RL     myTime
                0053       INTEGER myIter
                0054       INTEGER myThid
2fa42a6013 Alis*0055 
1d478690dc Patr*0056 #if defined(ALLOW_KPP) && defined(KPP_GHAT)
2fa42a6013 Alis*0057 
                0058 C     == Local variables ==
                0059 C     I, J - Loop counters
                0060       INTEGER I, J
88b144ae49 Jean*0061 #ifdef ALLOW_GMREDI
                0062       _RL tmpFac
                0063 #endif
                0064 #ifdef ALLOW_SALT_PLUME
                0065       _RL tmpFac1
                0066 #endif
30c6f5b1cd An T*0067 
88b144ae49 Jean*0068 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
30c6f5b1cd An T*0069 
1f89baba18 Patr*0070 catn: will not apply if use SALT_PLUME_VOLUME because volumes
                0071 c      will be exchanged 
30c6f5b1cd An T*0072 #ifdef ALLOW_SALT_PLUME
                0073       IF ( useSALT_PLUME ) THEN
7fb657f65b Patr*0074 # ifndef SALT_PLUME_VOLUME
30c6f5b1cd An T*0075          tmpFac1 = 1. _d 0
7fb657f65b Patr*0076 # else
1f89baba18 Patr*0077          tmpFac1 = 0. _d 0
7fb657f65b Patr*0078 # endif /* ndef SALT_PLUME_VOLUME */
30c6f5b1cd An T*0079       ELSE
                0080          tmpFac1 = 0. _d 0
                0081       ENDIF
                0082 #endif /* ALLOW_SALT_PLUME */
2fa42a6013 Alis*0083 
08300bd1e7 Jean*0084 #ifdef ALLOW_GMREDI
                0085 
                0086       IF ( useGMRedi .AND. KPP_ghatUseTotalDiffus ) THEN
                0087         tmpFac = 1. _d 0
                0088       ELSE
                0089         tmpFac = 0. _d 0
                0090       ENDIF
1d478690dc Patr*0091       DO j=jMin,jMax
                0092        DO i=iMin,iMax
08300bd1e7 Jean*0093         df(i,j) = - _rA(i,j,bi,bj)
                0094      &        *( KPPdiffKzS(i,j,k,bi,bj) + tmpFac*Kwz(i,j,k,bi,bj) )
                0095      &        *KPPghat(i,j,km1,bi,bj)
63ceaaa79c Dimi*0096      &        *( surfaceForcingS(i,j,bi,bj)
                0097 #ifdef ALLOW_SALT_PLUME
30c6f5b1cd An T*0098      &          + tmpFac1*saltPlumeFlux(i,j,bi,bj)*recip_rhoConst
63ceaaa79c Dimi*0099      &          *(1.-KPPplumefrac(i,j,bi,bj))
                0100 #endif /* ALLOW_SALT_PLUME */
                0101      &         )
2fa42a6013 Alis*0102        ENDDO
1d478690dc Patr*0103       ENDDO
2fa42a6013 Alis*0104 
08300bd1e7 Jean*0105 #else /* ALLOW_GMREDI */
                0106 
                0107       DO j=jMin,jMax
                0108        DO i=iMin,iMax
                0109         df(i,j) = - _rA(i,j,bi,bj)
                0110      &        *KPPdiffKzS(i,j,k,bi,bj)
                0111      &        *KPPghat(i,j,km1,bi,bj)
63ceaaa79c Dimi*0112      &        *( surfaceForcingS(i,j,bi,bj)
                0113 #ifdef ALLOW_SALT_PLUME
30c6f5b1cd An T*0114      &          + tmpFac1*saltPlumeFlux(i,j,bi,bj)*recip_rhoConst
63ceaaa79c Dimi*0115      &          *(1.-KPPplumefrac(i,j,bi,bj))
                0116 #endif /* ALLOW_SALT_PLUME */
                0117      &         )
08300bd1e7 Jean*0118        ENDDO
                0119       ENDDO
                0120 
                0121 #endif /* ALLOW_GMREDI */
                0122 
1d478690dc Patr*0123 #endif /* ALLOW_KPP and KPP_GHAT */
2fa42a6013 Alis*0124 
                0125       RETURN
                0126       END