Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
af960ebfb4 Jean*0001 #include "MOM_COMMON_OPTIONS.h"
                0002 
                0003 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0004 CBOP
                0005 C     !ROUTINE: MOM_UV_SMAG_3D
                0006 
                0007 C     !INTERFACE:
                0008       SUBROUTINE MOM_UV_SMAG_3D(
                0009      I        str11, str22, str12, str13, str23,
                0010      I        viscAh3d_00, viscAh3d_12,
                0011      I        viscAh3d_13, viscAh3d_23,
                0012 c    I        hFacZ,
                0013      O        uDissip, vDissip,
                0014      I        iMin,iMax,jMin,jMax, k, bi, bj, myThid )
                0015 
                0016 C     !DESCRIPTION:
                0017 
                0018 C     !USES:
                0019       IMPLICIT NONE
                0020 
                0021 C     == Global variables ==
                0022 #include "SIZE.h"
                0023 #include "EEPARAMS.h"
                0024 #include "GRID.h"
                0025 #include "PARAMS.h"
                0026 
                0027 C     !INPUT PARAMETERS:
                0028 C     iMin,iMax     :: 1rst index loop ranges
                0029 C     jMin,jMax     :: 2nd  index loop ranges
                0030       _RL str11(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0031       _RL str22(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0032       _RL str12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0033       _RL str13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
                0034       _RL str23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
                0035 c     _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0036       _RL viscAh3d_00(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0037       _RL viscAh3d_12(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0038       _RL viscAh3d_13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
                0039       _RL viscAh3d_23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
                0040       INTEGER iMin,iMax, jMin,jMax
                0041       INTEGER k, bi, bj
                0042       INTEGER myThid
                0043 
                0044 C     !OUTPUT PARAMETERS:
                0045       _RL uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0046       _RL vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0047 CEOP
                0048 
245cf5c24c Jean*0049 #ifdef ALLOW_SMAG_3D
af960ebfb4 Jean*0050 C     !LOCAL VARIABLES:
                0051       INTEGER i,j
                0052       INTEGER km1, kp1
                0053       _RL maskM1, maskP1
                0054 
                0055       km1 = MAX( 1,k-1)
                0056       kp1 = MIN(Nr,k+1)
                0057       maskM1 = 1.
                0058       maskP1 = 1.
                0059       IF ( k.LE.1 )  maskM1 = 0.
                0060       IF ( k.GE.Nr ) maskP1 = 0.
                0061 
                0062 C     - Laplacian and bi-harmonic terms
                0063 c     IF (harmonic) THEN
                0064 
                0065 C- note: free-slip @ bottom is commented out
                0066 
                0067 C-    use simple (momentum conserving) scaling
                0068 C      (but not conserving angular momentum)
                0069 
                0070        DO j= jMin,jMax
                0071         DO i= iMin,iMax
                0072          uDissip(i,j) = recip_rAw(i,j,bi,bj)*(
                0073      &     ( viscAh3d_00( i , j , k )*str11( i , j , k )
                0074      &         *dyF( i , j ,bi,bj)
                0075      &      -viscAh3d_00(i-1, j , k )*str11(i-1, j , k )
                0076      &         *dyF(i-1, j ,bi,bj)
                0077      &     )
                0078      &    +( viscAh3d_12( i ,j+1, k )*str12( i ,j+1, k )
                0079      &         *dxV( i ,j+1,bi,bj)
                0080      &      -viscAh3d_12( i , j , k )*str12( i , j , k )
                0081      &         *dxV( i , j ,bi,bj)
                0082      &     )                                 )
                0083      &                + recip_drF( k )
                0084      &    *( viscAh3d_13( i , j ,k+1)*str13( i , j ,k+1)
                0085 c    &         *maskW(i,j,kp1,bi,bj)*maskP1
                0086      &      -viscAh3d_13( i , j , k )*str13( i , j , k )
                0087 c    &         *maskW(i,j,km1,bi,bj)*maskM1
                0088      &     )*rkSign*recip_hFacW(i,j,k,bi,bj)
                0089         ENDDO
                0090        ENDDO
                0091 
                0092        DO j= jMin,jMax
                0093         DO i= iMin,iMax
                0094          vDissip(i,j) = recip_rAs(i,j,bi,bj)*(
                0095      &     ( viscAh3d_12(i+1, j , k )*str12(i+1, j ,k)
                0096      &         *dyU(i+1, j ,bi,bj)
                0097      &      -viscAh3d_12( i , j , k )*str12( i , j ,k)
                0098      &         *dyU( i , j ,bi,bj)
                0099      &     )
                0100      &    +( viscAh3d_00( i , j , k )*str22( i , j ,k)
                0101      &         *dxF( i , j ,bi,bj)
                0102      &      -viscAh3d_00( i ,j-1, k )*str22( i ,j-1,k)
                0103      &         *dxF( i ,j-1,bi,bj)
                0104      &     )                                )
                0105      &                + recip_drF( k )
                0106      &    *( viscAh3d_23( i , j ,k+1)*str23( i , j ,k+1)
                0107 c    &         *maskS(i,j,kp1,bi,bj)*maskP1
                0108      &      -viscAh3d_23( i , j , k )*str23( i , j , k )
                0109 c    &         *maskS(i,j,km1,bi,bj)*maskM1
                0110      &     )*rkSign*recip_hFacS(i,j,k,bi,bj)
                0111 
                0112         ENDDO
                0113        ENDDO
                0114 
                0115 c     ENDIF
                0116 
                0117 c     IF (biharmonic) THEN
                0118 c      STOP 'MOM_UV_SMAG_3D: BIHARMONIC NOT ALLOWED WITH SMAG_3D'
                0119 c     ENDIF
                0120 
245cf5c24c Jean*0121 #endif /* ALLOW_SMAG_3D */
af960ebfb4 Jean*0122       RETURN
                0123       END