Back to home page

MITgcm

 
 

    


File indexing completed on 2025-05-05 05:08:24 UTC

view on githubraw file Latest commit 31fb0e0e on 2025-05-05 02:15:14 UTC
6d54cf9ca1 Ed H*0001 #include "MOM_FLUXFORM_OPTIONS.h"
aea29c8517 Alis*0002 
71207ba845 Alis*0003 CBOP
                0004 C !ROUTINE: MOM_U_METRIC_SPHERE
                0005 
                0006 C !INTERFACE: ==========================================================
aea29c8517 Alis*0007       SUBROUTINE MOM_U_METRIC_SPHERE(
31fb0e0e6d Jean*0008      I        bi, bj, k,
aea29c8517 Alis*0009      I        uFld, vFld,
                0010      O        uMetricTerms,
eaba2fd266 Jean*0011      I        myThid )
aea29c8517 Alis*0012 
71207ba845 Alis*0013 C !DESCRIPTION:
                0014 C Calculates the zonal metric term due to sphericity:
                0015 C \begin{equation}
                0016 C \frac{u}{a} \overline{v}^{ij} \tan{\phi}
                0017 C \end{equation}
                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"
                0025 
71207ba845 Alis*0026 C !INPUT PARAMETERS: ===================================================
31fb0e0e6d Jean*0027 C  bi, bj               :: tile indices
71207ba845 Alis*0028 C  k                    :: vertical level
31fb0e0e6d Jean*0029 C  uFld                 :: zonal velocity
                0030 C  vFld                 :: meridional velocity
                0031 C  myThid               :: my Thread Id number
                0032       INTEGER bi, bj, k
aea29c8517 Alis*0033       _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0034       _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0035       INTEGER myThid
                0036 
71207ba845 Alis*0037 C !OUTPUT PARAMETERS: ==================================================
                0038 C  uMetricTerms         :: metric term
                0039       _RL uMetricTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0040 
                0041 C !LOCAL VARIABLES: ====================================================
31fb0e0e6d Jean*0042 C  i, j                 :: loop indices
                0043       INTEGER i, j
71207ba845 Alis*0044 CEOP
aea29c8517 Alis*0045 
31fb0e0e6d Jean*0046       IF ( selectMetricTerms.EQ.1 ) THEN
                0047 C-    Using analytical expression for tan(Phi) (stored in: tanPhiAtU)
                0048         DO j=1-OLx,sNy+OLy-1
                0049          DO i=1-OLx+1,sNx+OLx
                0050            uMetricTerms(i,j) =
                0051      &      uFld(i,j)*recip_rSphere*recip_deepFacC(k)*0.25 _d 0
                0052      &          *( vFld(i,j  ) + vFld(i-1,j  )
                0053      &           + vFld(i,j+1) + vFld(i-1,j+1)
                0054      &           )*_tanPhiAtU(i,j,bi,bj)
                0055          ENDDO
                0056         ENDDO
                0057       ELSE
                0058 C-    Using grid-spacing gradient: estimates tan(Phi)/rSphere as -del^j(dxC)/rAz
                0059         DO j=2-OLx,sNy+OLy-1
                0060          DO i=2-OLx,sNx+OLx
                0061            uMetricTerms(i,j) = -halfRL*
                0062      &     ( ( uFld(i,j-1) + uFld(i,j) )*halfRL
                0063      &      *( dxC(i,j,bi,bj)-dxC(i,j-1,bi,bj) )*recip_rAz(i, j, bi,bj)
                0064      &      *( vFld(i-1, j )*dxG(i-1, j, bi,bj)*hFacS(i-1, j, k,bi,bj)
                0065      &       + vFld( i,  j )*dxG( i,  j, bi,bj)*hFacS( i,  j, k,bi,bj)
                0066      &       )*halfRL
                0067      &     + ( uFld(i,j) + uFld(i,j+1) )*halfRL
                0068      &      *( dxC(i,j+1,bi,bj)-dxC(i,j,bi,bj) )*recip_rAz(i,j+1,bi,bj)
                0069      &      *( vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj)
                0070      &       + vFld( i, j+1)*dxG( i, j+1,bi,bj)*hFacS( i, j+1,k,bi,bj)
                0071      &       )*halfRL
                0072      &     )*recip_hFacW(i,j,k,bi,bj)
                0073      &      *recip_dxC(i,j,bi,bj)*recip_deepFacC(k)
                0074          ENDDO
                0075         ENDDO
                0076       ENDIF
aea29c8517 Alis*0077 
                0078       RETURN
                0079       END