Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:42:11 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_W_SMAG_3D
                0006 
                0007 C     !INTERFACE:
                0008       SUBROUTINE MOM_W_SMAG_3D(
                0009      I        str13, str23, str33,
                0010      I        viscAh3d_00, viscAh3d_13, viscAh3d_23,
                0011      I        rThickC_W, rThickC_S, rThickC_C, recip_rThickC,
                0012      O        wDissip,
                0013      I        iMin,iMax,jMin,jMax, k, bi, bj, myThid )
                0014 
                0015 C     !DESCRIPTION:
                0016 
                0017 C     !USES:
                0018       IMPLICIT NONE
                0019 
                0020 C     == Global variables ==
                0021 #include "SIZE.h"
                0022 #include "EEPARAMS.h"
                0023 #include "PARAMS.h"
                0024 #include "GRID.h"
                0025 
                0026 C     !INPUT PARAMETERS:
                0027 C     rThickC_W     :: thickness (in r-units) of W-Cell at Western Edge
                0028 C     rThickC_S     :: thickness (in r-units) of W-Cell at Southern Edge
                0029 C     rThickC_C     :: thickness (in r-units) of W-Cell (centered on W pt)
                0030 C     recip_rThickC :: reciprol thickness of W-Cell (centered on W-point)
                0031 C     iMin,iMax     :: 1rst index loop ranges
                0032 C     jMin,jMax     :: 2nd  index loop ranges
                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       _RL str33(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0036       _RL viscAh3d_00(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0037       _RL viscAh3d_13(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
                0038       _RL viscAh3d_23(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1)
                0039       _RL rThickC_W    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0040       _RL rThickC_S    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0041       _RL rThickC_C    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0042       _RL recip_rThickC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0043       INTEGER iMin,iMax, jMin,jMax
                0044       INTEGER k, bi, bj
                0045       INTEGER myThid
                0046 
                0047 C     !OUTPUT PARAMETERS:
                0048       _RL wDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0049 CEOP
                0050 
245cf5c24c Jean*0051 #ifdef ALLOW_SMAG_3D
af960ebfb4 Jean*0052 C     !LOCAL VARIABLES:
                0053       INTEGER i,j
                0054       INTEGER km1
                0055       _RL maskM1
                0056 
                0057       km1 = MAX(1,k-1)
                0058       maskM1 = 1.
                0059       IF ( k.LE.1 ) maskM1 = 0.
                0060 
                0061 C     - Laplacian and bi-harmonic terms
                0062 c     IF (harmonic) THEN
                0063 
                0064 C- note: free-slip @ bottom is commented out
                0065 
                0066 C-    use simple (momentum conserving) scaling
                0067 C      (but not conserving angular momentum)
                0068 
                0069        DO j= jMin,jMax
                0070         DO i= iMin,iMax
                0071 c        wDissip(i,j) = recip_rThickC(i,j)*
                0072          wDissip(i,j) =
                0073      &                  recip_rA(i,j,bi,bj)*(
                0074      &     ( viscAh3d_13(i+1, j , k )*str13(i+1, j ,k)
                0075 c    &         *dyG(i+1, j ,bi,bj)*rThickC_W(i+1, j )
                0076      &         *dyG(i+1, j ,bi,bj)
                0077      &      -viscAh3d_13( i , j , k )*str13( i , j ,k)
                0078 c    &         *dyG( i , j ,bi,bj)*rThickC_W( i , j )
                0079      &         *dyG( i , j ,bi,bj)
                0080      &     )
                0081      &    +( viscAh3d_23( i ,j+1, k )*str23( i ,j+1,k)
                0082 c    &         *dxG( i ,j+1,bi,bj)*rThickC_S( i ,j+1)
                0083      &         *dxG( i ,j+1,bi,bj)
                0084      &      -viscAh3d_23( i , j , k )*str23( i , j ,k)
                0085 c    &         *dxG( i , j ,bi,bj)*rThickC_S( i , j )
                0086      &         *dxG( i , j ,bi,bj)
                0087      &     )                                 )
                0088      &                + recip_rThickC(i,j)
                0089      &    *( viscAh3d_00( i , j , k )*str33( i , j , k )
                0090      &      -viscAh3d_00( i , j ,km1)*str33( i , j ,km1)*maskM1
                0091      &     )*rkSign
                0092         ENDDO
                0093        ENDDO
                0094 
                0095 c     ENDIF
                0096 
                0097 c     IF (biharmonic) THEN
                0098 c      STOP 'MOM_UV_SMAG_3D: BIHARMONIC NOT ALLOWED WITH SMAG_3D'
                0099 c     ENDIF
                0100 
245cf5c24c Jean*0101 #endif /* ALLOW_SMAG_3D */
af960ebfb4 Jean*0102       RETURN
                0103       END