Back to home page

MITgcm

 
 

    


File indexing completed on 2019-06-12 05:10:50 UTC

view on githubraw file Latest commit 7843dde2 on 2019-06-11 16:37:20 UTC
6d54cf9ca1 Ed H*0001 #include "MOM_FLUXFORM_OPTIONS.h"
aea29c8517 Alis*0002 
71207ba845 Alis*0003 CBOP
                0004 C !ROUTINE: MOM_V_CORIOLIS
                0005 
                0006 C !INTERFACE: ==========================================================
010a91abcf Jean*0007       SUBROUTINE MOM_V_CORIOLIS(
aea29c8517 Alis*0008      I        bi,bj,k,uFld,
                0009      U        vCoriolisTerm,
                0010      I        myThid)
                0011 
71207ba845 Alis*0012 C !DESCRIPTION:
                0013 C Calculates the horizontal Coriolis term in the meridional equation:
                0014 C \begin{equation*}
                0015 C -\overline{f}^j \overline{u}^{ij}
                0016 C \end{equation*}
aea29c8517 Alis*0017 
71207ba845 Alis*0018 C !USES: ===============================================================
                0019       IMPLICIT NONE
aea29c8517 Alis*0020 #include "SIZE.h"
                0021 #include "EEPARAMS.h"
                0022 #include "PARAMS.h"
                0023 #include "GRID.h"
                0024 #include "SURFACE.h"
                0025 
71207ba845 Alis*0026 C !INPUT PARAMETERS: ===================================================
                0027 C  bi,bj                :: tile indices
                0028 C  k                    :: vertical level
                0029 C  uFld                 :: zonal flow
                0030 C  myThid               :: thread number
010a91abcf Jean*0031       INTEGER bi,bj,k
aea29c8517 Alis*0032       _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0033       INTEGER myThid
                0034 
71207ba845 Alis*0035 C !OUTPUT PARAMETERS: ==================================================
                0036 C  vCoriolisTerm        :: Coriolis term
                0037       _RL vCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0038 
                0039 C !LOCAL VARIABLES: ====================================================
                0040 C  i,j                  :: loop indices
010a91abcf Jean*0041       INTEGER i,j
                0042       _RS one
                0043       PARAMETER( one = 1. _d 0 )
71207ba845 Alis*0044 CEOP
aea29c8517 Alis*0045 
7843dde2de jm-c 0046       IF ( selectCoriScheme.GE.2 ) THEN
04a64662e0 Alis*0047 C Energy conserving discretization
7843dde2de jm-c 0048        DO j=1-OLy+1,sNy+OLy
                0049         DO i=1-OLx,sNx+OLx-1
04a64662e0 Alis*0050          vCoriolisTerm(i,j) =
e14f6a4c02 Alis*0051      &    -0.5*( _fCori(i, j ,bi,bj)
04a64662e0 Alis*0052      &          *0.5*( uFld( i , j )+uFld(i+1, j ) )
                0053      &         + _fCori(i,j-1,bi,bj)
                0054      &          *0.5*( uFld( i ,j-1)+uFld(i+1,j-1) ) )
                0055         ENDDO
                0056        ENDDO
                0057       ELSE
                0058 C Original discretization
7843dde2de jm-c 0059        DO j=1-OLy+1,sNy+OLy
                0060         DO i=1-OLx,sNx+OLx-1
aea29c8517 Alis*0061         vCoriolisTerm(i,j) =
                0062      &    -0.5*(_fCori(i, j ,bi,bj)+_fCori(i,j-1,bi,bj))
                0063      &   *0.25*( uFld(i, j )+uFld(i+1, j )
                0064      &          +uFld(i,j-1)+uFld(i+1,j-1)
                0065      &         )
04a64662e0 Alis*0066         ENDDO
aea29c8517 Alis*0067        ENDDO
04a64662e0 Alis*0068       ENDIF
aea29c8517 Alis*0069 
7843dde2de jm-c 0070       IF ( selectCoriScheme.EQ.1 .OR. selectCoriScheme.EQ.3 ) THEN
8088b71082 Alis*0071 C Scale term so that only "wet" points are used
                0072 C Due to: Jamart and Ozer, 1986, JGR 91 (C9), 10,621-10,631
                0073 C         "Numerical Boundary Layers and Spurious Residual Flows"
7843dde2de jm-c 0074        DO j=1-OLy+1,sNy+OLy
                0075         DO i=1-OLx,sNx+OLx-1
8088b71082 Alis*0076          vCoriolisTerm(i,j) = vCoriolisTerm(i,j)
010a91abcf Jean*0077      &   *4. _d 0/MAX( one,
                0078      &                 maskW( i , j ,k,bi,bj)+maskW(i+1, j ,k,bi,bj)
                0079      &                +maskW( i ,j-1,k,bi,bj)+maskW(i+1,j-1,k,bi,bj) )
8088b71082 Alis*0080         ENDDO
                0081        ENDDO
                0082       ENDIF
                0083 
aea29c8517 Alis*0084       RETURN
                0085       END