Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
d8d1486ca1 Jean*0001 #include "KL10_OPTIONS.h"
                0002 
                0003       SUBROUTINE KL10_CALC_DIFF(
                0004      I        bi,bj,iMin,iMax,jMin,jMax,kArg,kSize,
                0005      U        KappaRx,
                0006      I        myThid)
                0007 
dc4a6ae782 Jean*0008 C     *==========================================================*
d8d1486ca1 Jean*0009 C     | SUBROUTINE KL10_CALC_DIFF                                |
                0010 C     | o Add contrubution to net diffusivity from KL10 mixing   |
dc4a6ae782 Jean*0011 C     *==========================================================*
d8d1486ca1 Jean*0012       IMPLICIT NONE
                0013 
                0014 C     == GLobal variables ==
                0015 #include "SIZE.h"
                0016 #include "EEPARAMS.h"
                0017 #include "PARAMS.h"
dc4a6ae782 Jean*0018 c#include "GRID.h"
                0019 #ifdef ALLOW_3D_DIFFKR
                0020 # include "DYNVARS.h"
                0021 #endif
d8d1486ca1 Jean*0022 #ifdef ALLOW_KL10
dc4a6ae782 Jean*0023 # include "KL10.h"
d8d1486ca1 Jean*0024 #endif
                0025 
                0026 C     == Routine arguments ==
                0027 C     bi, bj,   :: tile indices
                0028 C     iMin,iMax :: Range of points for which calculation is done
                0029 C     jMin,jMax :: Range of points for which calculation is done
                0030 C     kArg      :: = 0 -> do the k-loop here and treat all levels
                0031 C                  > 0 -> k-loop is done outside and treat only level k=kArg
                0032 C     kSize     :: 3rd Dimension of the vertical diffusivity array KappaRx
                0033 C     KappaRx   :: vertical diffusivity array
                0034 C     myThid    :: Instance number for this innvocation of KL10_CALC_DIFF
                0035 
                0036       INTEGER bi,bj,iMin,iMax,jMin,jMax,kArg,kSize
                0037       _RL KappaRx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize)
                0038       INTEGER myThid
                0039 
                0040 #ifdef ALLOW_KL10
                0041 
                0042 C     == Local variables ==
                0043 C     i,j,k     :: Loop counters
                0044       INTEGER i,j,k
                0045 
                0046 C--   Add Vertical diffusivity contribution from KL10
                0047       IF ( kArg .EQ. 0 ) THEN
                0048 C-    do all levels :
                0049         DO k=1,MIN(Nr,kSize)
                0050          DO j=jMin,jMax
                0051           DO i=iMin,iMax
                0052             KappaRx(i,j,k) = KappaRx(i,j,k)
                0053      &                  +( KLdiffKr(i,j,k,bi,bj)
dc4a6ae782 Jean*0054 #ifdef ALLOW_3D_DIFFKR
d8d1486ca1 Jean*0055      &                     - diffKr(i,j,k,bi,bj) )
                0056 #else
78524d1402 Jean*0057      &                     - diffKrNrS(k) )
d8d1486ca1 Jean*0058 #endif
                0059           ENDDO
                0060          ENDDO
                0061         ENDDO
                0062       ELSE
                0063 C-    do level k=kArg only :
                0064          k = MIN(kArg,kSize)
                0065          DO j=jMin,jMax
                0066           DO i=iMin,iMax
                0067             KappaRx(i,j,k) = KappaRx(i,j,k)
                0068      &                  +( KLdiffKr(i,j,kArg,bi,bj)
dc4a6ae782 Jean*0069 #ifdef ALLOW_3D_DIFFKR
d8d1486ca1 Jean*0070      &                     - diffKr(i,j,kArg,bi,bj) )
                0071 #else
78524d1402 Jean*0072      &                     - diffKrNrS(kArg) )
d8d1486ca1 Jean*0073 #endif
                0074           ENDDO
                0075          ENDDO
                0076       ENDIF
                0077 
                0078 #endif /* ALLOW_KL10 */
                0079 
                0080       RETURN
                0081       END