Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
08be60903a Mart*0001 #include "PP81_OPTIONS.h"
                0002 
40cf87ade1 Jean*0003       SUBROUTINE PP81_CALC_DIFF(
cd3138caa3 Jean*0004      I        bi,bj,iMin,iMax,jMin,jMax,kArg,kSize,
                0005      U        KappaRx,
08be60903a Mart*0006      I        myThid)
                0007 
40cf87ade1 Jean*0008 C     *==========================================================*
08be60903a Mart*0009 C     | SUBROUTINE PP81_CALC_DIFF                                |
                0010 C     | o Add contrubution to net diffusivity from PP81 mixing   |
40cf87ade1 Jean*0011 C     *==========================================================*
08be60903a Mart*0012       IMPLICIT NONE
                0013 
                0014 C     == GLobal variables ==
                0015 #include "SIZE.h"
                0016 #include "EEPARAMS.h"
                0017 #include "PARAMS.h"
40cf87ade1 Jean*0018 c#include "GRID.h"
                0019 #ifdef ALLOW_3D_DIFFKR
                0020 # include "DYNVARS.h"
                0021 #endif
cd3138caa3 Jean*0022 #ifdef ALLOW_PP81
40cf87ade1 Jean*0023 # include "PP81.h"
cd3138caa3 Jean*0024 #endif
08be60903a Mart*0025 
                0026 C     == Routine arguments ==
cd3138caa3 Jean*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 PP81_CALC_DIFF
                0035 
                0036       INTEGER bi,bj,iMin,iMax,jMin,jMax,kArg,kSize
40cf87ade1 Jean*0037       _RL KappaRx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize)
08be60903a Mart*0038       INTEGER myThid
                0039 
                0040 #ifdef ALLOW_PP81
                0041 
                0042 C     == Local variables ==
cd3138caa3 Jean*0043 C     i,j,k     :: Loop counters
                0044       INTEGER i,j,k
08be60903a Mart*0045 
cd3138caa3 Jean*0046 C--   Add Vertical diffusivity contribution from PP81
                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      &                  +( PPdiffKr(i,j,k,bi,bj)
40cf87ade1 Jean*0054 #ifdef ALLOW_3D_DIFFKR
08be60903a Mart*0055      &                     - diffKr(i,j,k,bi,bj) )
                0056 #else
78524d1402 Jean*0057      &                     - diffKrNrS(k) )
08be60903a Mart*0058 #endif
cd3138caa3 Jean*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      &                  +( PPdiffKr(i,j,kArg,bi,bj)
40cf87ade1 Jean*0069 #ifdef ALLOW_3D_DIFFKR
cd3138caa3 Jean*0070      &                     - diffKr(i,j,kArg,bi,bj) )
08be60903a Mart*0071 #else
78524d1402 Jean*0072      &                     - diffKrNrS(kArg) )
08be60903a Mart*0073 #endif
cd3138caa3 Jean*0074           ENDDO
                0075          ENDDO
                0076       ENDIF
08be60903a Mart*0077 
                0078 #endif /* ALLOW_PP81 */
                0079 
                0080       RETURN
                0081       END