Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:42:24 UTC

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