Back to home page

MITgcm

 
 

    


File indexing completed on 2024-11-30 06:11:14 UTC

view on githubraw file Latest commit 7bb5a8a1 on 2024-11-29 14:30:55 UTC
6d54cf9ca1 Ed H*0001 #include "MOM_FLUXFORM_OPTIONS.h"
7bb5a8a109 Jean*0002 #ifdef ALLOW_MOM_COMMON
                0003 # include "MOM_COMMON_OPTIONS.h"
                0004 #endif
aea29c8517 Alis*0005 
71207ba845 Alis*0006 CBOP
                0007 C !ROUTINE: MOM_U_DEL2U
                0008 
                0009 C !INTERFACE: ==========================================================
aea29c8517 Alis*0010       SUBROUTINE MOM_U_DEL2U(
fd362e9f7c Jean*0011      I        bi, bj, k,
                0012      I        uFld, hFacZ, h0FacZ,
aea29c8517 Alis*0013      O        del2u,
fd362e9f7c Jean*0014      I        myThid )
aea29c8517 Alis*0015 
71207ba845 Alis*0016 C !DESCRIPTION:
                0017 C Calculates the Laplacian of zonal flow
                0018 
                0019 C !USES: ===============================================================
                0020       IMPLICIT NONE
aea29c8517 Alis*0021 #include "SIZE.h"
                0022 #include "EEPARAMS.h"
                0023 #include "PARAMS.h"
                0024 #include "GRID.h"
bf5496678a Jean*0025 #include "SURFACE.h"
aea29c8517 Alis*0026 
71207ba845 Alis*0027 C !INPUT PARAMETERS: ===================================================
                0028 C  bi,bj                :: tile indices
                0029 C  k                    :: vertical level
                0030 C  uFld                 :: zonal flow
                0031 C  hFacZ                :: fractional thickness at vorticity points
fd362e9f7c Jean*0032 C  h0FacZ               :: fixed fractional thickness at vorticity points
                0033 C  myThid               :: my Thread Id number
                0034       INTEGER bi, bj, k
                0035       _RL uFld  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0036       _RS hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0037       _RS h0FacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
aea29c8517 Alis*0038       INTEGER myThid
                0039 
71207ba845 Alis*0040 C !OUTPUT PARAMETERS: ==================================================
                0041 C  del2u                :: Laplacian
                0042       _RL del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0043 
                0044 C !LOCAL VARIABLES: ====================================================
                0045 C  i,j                  :: loop indices
7bb5a8a109 Jean*0046       INTEGER i,j
aea29c8517 Alis*0047       _RL fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0048       _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
fd362e9f7c Jean*0049       _RS hFacZClosedS, hFacZClosedN
71207ba845 Alis*0050 CEOP
aea29c8517 Alis*0051 
                0052 C     Zonal flux d/dx U
fd362e9f7c Jean*0053       DO j=1-OLy+1,sNy+OLy-1
                0054        DO i=1-OLx,sNx+OLx-1
aea29c8517 Alis*0055         fZon(i,j) = drF(k)*_hFacC(i,j,k,bi,bj)
                0056      &   *_dyF(i,j,bi,bj)
                0057      &   *_recip_dxF(i,j,bi,bj)
                0058      &   *(uFld(i+1,j)-uFld(i,j))
                0059 #ifdef COSINEMETH_III
7bb5a8a109 Jean*0060      &   *sqCosFacU(j,bi,bj)
aea29c8517 Alis*0061 #endif
c19923126b Jean*0062 #ifdef ALLOW_OBCS
                0063      &   *maskInC(i,j,bi,bj)
                0064 #endif
eaba2fd266 Jean*0065 c    &   *deepFacC(k)        ! dyF scaling factor
                0066 c    &   *recip_deepFacC(k)  ! recip_dxF scaling factor
aea29c8517 Alis*0067        ENDDO
                0068       ENDDO
                0069 
                0070 C     Meridional flux d/dy U
fd362e9f7c Jean*0071       DO j=1-OLy+1,sNy+OLy
                0072        DO i=1-OLx+1,sNx+OLx-1
aea29c8517 Alis*0073         fMer(i,j) = drF(k)*hFacZ(i,j)
                0074      &   *_dxV(i,j,bi,bj)
                0075      &   *_recip_dyU(i,j,bi,bj)
                0076      &   *(uFld(i,j)-uFld(i,j-1))
5bc29fe512 Mart*0077 #if (defined (ISOTROPIC_COS_SCALING) && defined (COSINEMETH_III))
7bb5a8a109 Jean*0078      &   *sqCosFacV(j,bi,bj)
5bc29fe512 Mart*0079 #endif
eaba2fd266 Jean*0080 c    &   *deepFacC(k)        ! dxV scaling factor
                0081 c    &   *recip_deepFacC(k)  ! recip_dyU scaling factor
aea29c8517 Alis*0082        ENDDO
                0083       ENDDO
                0084 
                0085 C     del^2 U
fd362e9f7c Jean*0086       DO j=1-OLy+1,sNy+OLy-1
                0087        DO i=1-OLx+1,sNx+OLx-1
aea29c8517 Alis*0088         del2u(i,j) =
eaba2fd266 Jean*0089      &   recip_drF(k)*_recip_hFacW(i,j,k,bi,bj)
                0090      &  *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k)
aea29c8517 Alis*0091      &  *( fZon(i,j  )    - fZon(i-1,j)
                0092      &    +fMer(i,j+1)    - fMer(i  ,j)
                0093      &   )*_maskW(i,j,k,bi,bj)
c19923126b Jean*0094 #ifdef ALLOW_OBCS
                0095      &    *maskInW(i,j,bi,bj)
                0096 #endif
aea29c8517 Alis*0097        ENDDO
                0098       ENDDO
                0099 
                0100       IF (no_slip_sides) THEN
                0101 C-- No-slip BCs impose a drag at walls...
fd362e9f7c Jean*0102        DO j=1-OLy+1,sNy+OLy-1
                0103         DO i=1-OLx+1,sNx+OLx-1
bf5496678a Jean*0104 #ifdef NONLIN_FRSURF
fd362e9f7c Jean*0105          hFacZClosedS = h0FacW(i,j,k,bi,bj) - h0FacZ(i,j)
                0106          hFacZClosedN = h0FacW(i,j,k,bi,bj) - h0FacZ(i,j+1)
bf5496678a Jean*0107 #else
fd362e9f7c Jean*0108          hFacZClosedS = _hFacW(i,j,k,bi,bj) - h0FacZ(i,j)
                0109          hFacZClosedN = _hFacW(i,j,k,bi,bj) - h0FacZ(i,j+1)
bf5496678a Jean*0110 #endif
                0111          del2u(i,j) = del2u(i,j)
                0112      &    -_recip_hFacW(i,j,k,bi,bj)
                0113      &       *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k)
                0114      &       *( hFacZClosedS*dxV(i, j ,bi,bj)
                0115      &                      *_recip_dyU(i, j ,bi,bj)
                0116      &         +hFacZClosedN*dxV(i,j+1,bi,bj)
                0117      &                      *_recip_dyU(i,j+1,bi,bj)
                0118      &        )*uFld(i,j)*sideDragFactor
                0119      &         *_maskW(i,j,k,bi,bj)
                0120         ENDDO
aea29c8517 Alis*0121        ENDDO
                0122       ENDIF
                0123 
                0124       RETURN
                0125       END