Back to home page

MITgcm

 
 

    


File indexing completed on 2021-04-28 05:11:51 UTC

view on githubraw file Latest commit 342b4ea4 on 2021-04-27 15:59:18 UTC
999b38430d Alis*0001 #include "MOM_COMMON_OPTIONS.h"
                0002 
12b389f505 Jean*0003       SUBROUTINE MOM_CALC_HDIV(
999b38430d Alis*0004      I        bi,bj,k, hDivScheme,
                0005      I        uFld, vFld,
                0006      O        hDiv,
220a9e88b5 Jean*0007      I        myThid )
999b38430d Alis*0008       IMPLICIT NONE
12b389f505 Jean*0009 C     *==========================================================*
999b38430d Alis*0010 C     | S/R MOM_CALC_HDIV                                        |
12b389f505 Jean*0011 C     *==========================================================*
                0012 C     *==========================================================*
999b38430d Alis*0013 
                0014 C     == Global variables ==
                0015 #include "SIZE.h"
                0016 #include "EEPARAMS.h"
                0017 #include "PARAMS.h"
                0018 #include "GRID.h"
                0019 C     == Routine arguments ==
342b4ea43e Mart*0020 C     myThid  :: my Thread Id number
999b38430d Alis*0021       INTEGER bi,bj,k,hDivScheme
                0022       _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0023       _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0024       _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0025       INTEGER myThid
                0026 
                0027 C     == Local variables ==
                0028       INTEGER i,j
                0029 
342b4ea43e Mart*0030 #ifdef ALLOW_AUTODIFF
                0031 C     Initialise (again) hDiv (in case it got dropped in calling S/R):
                0032       DO j=1-OLy,sNy+OLy
                0033        DO i=1-OLx,sNx+OLx
                0034         hDiv(i,j)=0. _d 0
                0035        ENDDO
                0036       ENDDO
                0037 #endif
999b38430d Alis*0038       IF (hDivScheme.EQ.1) THEN
220a9e88b5 Jean*0039        DO j=1-OLy,sNy+OLy-1
                0040         DO i=1-OLx,sNx+OLx-1
999b38430d Alis*0041 C       This discretization is the straight forward horizontal divergence
                0042 C       that only considers the horizontal grid variations.
12b389f505 Jean*0043          hDiv(i,j)=(
                0044      &       uFld(i+1, j )*dyG(i+1, j ,bi,bj)
                0045      &      -uFld( i , j )*dyG( i , j ,bi,bj)
                0046      &      +vFld( i ,j+1)*dxG( i ,j+1,bi,bj)
                0047      &      -vFld( i , j )*dxG( i , j ,bi,bj)
220a9e88b5 Jean*0048      &             )*recip_rA(i,j,bi,bj)*recip_deepFacC(k)
12b389f505 Jean*0049 #ifdef ALLOW_OBCS
                0050      &              *maskInC(i,j,bi,bj)
                0051 #endif
999b38430d Alis*0052         ENDDO
                0053        ENDDO
                0054 
                0055       ELSEIF (hDivScheme.EQ.2) THEN
220a9e88b5 Jean*0056        DO j=1-OLy,sNy+OLy-1
                0057         DO i=1-OLx,sNx+OLx-1
999b38430d Alis*0058 C       This discretization takes into account the fractional areas
                0059 C       due to the lopping. Whether we should do this is not clear!
12b389f505 Jean*0060          hDiv(i,j)=
                0061      &    ( ( uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacW(i+1, j ,k,bi,bj)
                0062      &       -uFld( i , j )*dyG( i , j ,bi,bj)*hFacW( i , j ,k,bi,bj) )
                0063      &     +( vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj)
                0064      &       -vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj) )
220a9e88b5 Jean*0065      &    )*recip_rA(i,j,bi,bj)*recip_deepFacC(k)
616600b8d2 Patr*0066      &     *_recip_hFacC(i,j,k,bi,bj)
12b389f505 Jean*0067 #ifdef ALLOW_OBCS
                0068      &     *maskInC(i,j,bi,bj)
                0069 #endif
999b38430d Alis*0070         ENDDO
                0071        ENDDO
                0072 
                0073       ELSE
                0074        STOP 'S/R MOM_CALC_HDIV: We should never reach this point!'
                0075       ENDIF
                0076 
                0077       RETURN
                0078       END