Back to home page

darwin3

 
 

    


File indexing completed on 2024-12-17 18:37:06 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_V_DEL2V
                0008 
                0009 C !INTERFACE: ==========================================================
aea29c8517 Alis*0010       SUBROUTINE MOM_V_DEL2V(
fd362e9f7c Jean*0011      I        bi, bj, k,
                0012      I        vFld, hFacZ, h0FacZ,
aea29c8517 Alis*0013      O        del2v,
fd362e9f7c Jean*0014      I        myThid )
aea29c8517 Alis*0015 
71207ba845 Alis*0016 C !DESCRIPTION:
                0017 C Calculates the Laplacian of meridional 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  vFld                 :: meridional 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 vFld  (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
71207ba845 Alis*0039 C !OUTPUT PARAMETERS: ==================================================
                0040 C  del2v                :: Laplacian
                0041       _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
aea29c8517 Alis*0042 
71207ba845 Alis*0043 C !LOCAL VARIABLES: ====================================================
                0044 C  i,j                  :: loop indices
7bb5a8a109 Jean*0045       INTEGER i,j
aea29c8517 Alis*0046       _RL fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0047       _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
fd362e9f7c Jean*0048       _RS hFacZClosedE, hFacZClosedW
71207ba845 Alis*0049 CEOP
aea29c8517 Alis*0050 
                0051 C     Zonal flux d/dx V
fd362e9f7c Jean*0052       DO j=1-OLy+1,sNy+OLy-1
                0053        DO i=1-OLx+1,sNx+OLx
aea29c8517 Alis*0054         fZon(i,j) = drF(k)*hFacZ(i,j)
                0055      &   *_dyU(i,j,bi,bj)
                0056      &   *_recip_dxV(i,j,bi,bj)
                0057      &   *(vFld(i,j)-vFld(i-1,j))
                0058 #ifdef COSINEMETH_III
7bb5a8a109 Jean*0059      &   *sqCosFacV(j,bi,bj)
aea29c8517 Alis*0060 #endif
eaba2fd266 Jean*0061 c    &   *deepFacC(k)        ! dyU scaling factor
                0062 c    &   *recip_deepFacC(k)  ! recip_dxV scaling factor
aea29c8517 Alis*0063        ENDDO
                0064       ENDDO
                0065 
                0066 C     Meridional flux d/dy V
fd362e9f7c Jean*0067       DO j=1-OLy,sNy+OLy-1
                0068        DO i=1-OLx+1,sNx+OLx-1
aea29c8517 Alis*0069         fMer(i,j) = drF(k)*_hFacC(i,j,k,bi,bj)
                0070      &   *_dxF(i,j,bi,bj)
                0071      &   *_recip_dyF(i,j,bi,bj)
                0072      &   *(vFld(i,j+1)-vFld(i,j))
5bc29fe512 Mart*0073 #if (defined (ISOTROPIC_COS_SCALING) && defined (COSINEMETH_III))
7bb5a8a109 Jean*0074      &   *sqCosFacU(j,bi,bj)
5bc29fe512 Mart*0075 #endif
b72a39145f Jean*0076 #ifdef ALLOW_OBCS
                0077      &   *maskInC(i,j,bi,bj)
                0078 #endif
eaba2fd266 Jean*0079 c    &   *deepFacC(k)        ! dxF scaling factor
                0080 c    &   *recip_deepFacC(k)  ! recip_dyF scaling factor
aea29c8517 Alis*0081        ENDDO
                0082       ENDDO
                0083 
a67f2474bd Jean*0084 C     del^2 V
fd362e9f7c Jean*0085       DO j=1-OLy+1,sNy+OLy-1
                0086        DO i=1-OLx+1,sNx+OLx-1
eaba2fd266 Jean*0087         del2v(i,j) =
                0088      &   recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
                0089      &  *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
aea29c8517 Alis*0090      &  *( fZon(i+1,j)    - fZon(i, j )
                0091      &    +fMer( i ,j)    - fMer(i,j-1)
                0092      &   )*_maskS(i,j,k,bi,bj)
b72a39145f Jean*0093 #ifdef ALLOW_OBCS
                0094      &    *maskInS(i,j,bi,bj)
                0095 #endif
aea29c8517 Alis*0096        ENDDO
                0097       ENDDO
                0098 
                0099       IF (no_slip_sides) THEN
                0100 C-- No-slip BCs impose a drag at walls...
fd362e9f7c Jean*0101        DO j=1-OLy+1,sNy+OLy-1
                0102         DO i=1-OLx+1,sNx+OLx-1
bf5496678a Jean*0103 #ifdef NONLIN_FRSURF
fd362e9f7c Jean*0104          hFacZClosedW = h0FacS(i,j,k,bi,bj) - h0FacZ(i,j)
                0105          hFacZClosedE = h0FacS(i,j,k,bi,bj) - h0FacZ(i+1,j)
bf5496678a Jean*0106 #else
fd362e9f7c Jean*0107          hFacZClosedW = _hFacS(i,j,k,bi,bj) - h0FacZ(i,j)
                0108          hFacZClosedE = _hFacS(i,j,k,bi,bj) - h0FacZ(i+1,j)
bf5496678a Jean*0109 #endif
                0110          del2v(i,j) = del2v(i,j)
                0111      &    -_recip_hFacS(i,j,k,bi,bj)
                0112      &       *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
                0113      &       *( hFacZClosedW*dyU( i ,j,bi,bj)
                0114      &                      *_recip_dxV( i ,j,bi,bj)
                0115      &         +hFacZClosedE*dyU(i+1,j,bi,bj)
                0116      &                      *_recip_dxV(i+1,j,bi,bj)
                0117      &        )*vFld(i,j)*sideDragFactor
                0118      &         *_maskS(i,j,k,bi,bj)
                0119         ENDDO
aea29c8517 Alis*0120        ENDDO
                0121       ENDIF
                0122 
                0123       RETURN
                0124       END