Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:42:06 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
9c05b3873e Alis*0001 #include "MOM_COMMON_OPTIONS.h"
07cc642809 Alis*0002 
                0003       SUBROUTINE MOM_HDISSIP(
02512ff234 Jean*0004      I        bi, bj, k,
                0005      I        tension, strain, hFacZ,
                0006      I        viscAh_s, viscAh_t, viscA4_s, viscA4_t,
                0007      I        harmonic, biharmonic, useVariableViscosity,
                0008      O        uDissip, vDissip,
                0009      I        myThid )
                0010 
07cc642809 Alis*0011       IMPLICIT NONE
02512ff234 Jean*0012 
07cc642809 Alis*0013 C     Calculate horizontal dissipation terms in terms of tension and strain
                0014 C       Du = d/dx At Tension + d/dy As Strain
                0015 C       Dv = d/dx As Strain  - d/dy At Tension
                0016 
                0017 C     == Global variables ==
                0018 #include "SIZE.h"
f293e6030b Bayl*0019 #include "EEPARAMS.h"
                0020 #include "PARAMS.h"
02512ff234 Jean*0021 #include "GRID.h"
07cc642809 Alis*0022 
                0023 C     == Routine arguments ==
                0024       INTEGER bi,bj,k
                0025       _RL tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
02512ff234 Jean*0026       _RL strain (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0027       _RS hFacZ  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
b0c3bd7ab0 Bayl*0028       _RL viscAh_s(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
998681995e Bayl*0029       _RL viscAh_t(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
b0c3bd7ab0 Bayl*0030       _RL viscA4_s(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
998681995e Bayl*0031       _RL viscA4_t(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
b0c3bd7ab0 Bayl*0032       LOGICAL harmonic, biharmonic, useVariableViscosity
02512ff234 Jean*0033       _RL uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0034       _RL vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
998681995e Bayl*0035       INTEGER myThid
f293e6030b Bayl*0036 
998681995e Bayl*0037 C     == Local variables ==
02512ff234 Jean*0038       INTEGER i, j
07cc642809 Alis*0039 
b0c3bd7ab0 Bayl*0040 C     - Laplacian and bi-harmonic terms
                0041       IF (harmonic) THEN
02512ff234 Jean*0042        DO j=2-OLy,sNy+OLy-1
                0043         DO i=2-OLx,sNx+OLx-1
b0c3bd7ab0 Bayl*0044 
02512ff234 Jean*0045          uDissip(i,j) =
                0046      &    recip_dyG(i,j,bi,bj)*recip_dyG(i,j,bi,bj)
                0047      &    *recip_dxC(i,j,bi,bj)
b0c3bd7ab0 Bayl*0048      &    *(
02512ff234 Jean*0049      &       dyF( i , j ,bi,bj)*dyF( i , j ,bi,bj)
b0c3bd7ab0 Bayl*0050      &         *viscAh_t( i , j )*tension( i , j )
02512ff234 Jean*0051      &      -dyF(i-1, j ,bi,bj)*dyF(i-1, j ,bi,bj)
b0c3bd7ab0 Bayl*0052      &         *viscAh_t(i-1, j )*tension(i-1, j )
                0053      &     )
02512ff234 Jean*0054      &    +recip_dxC(i,j,bi,bj)*recip_dxC(i,j,bi,bj)
                0055      &    *recip_dyG(i,j,bi,bj)
b0c3bd7ab0 Bayl*0056      &    *(
02512ff234 Jean*0057      &       dxV( i ,j+1,bi,bj)*dxV( i ,j+1,bi,bj)
b0c3bd7ab0 Bayl*0058      &         *viscAh_s(i,j+1)*strain( i ,j+1)
02512ff234 Jean*0059      &      -dxV( i , j ,bi,bj)*dxV( i , j ,bi,bj)
b0c3bd7ab0 Bayl*0060      &         *viscAh_s(i, j )*strain( i , j )
                0061      &     )
                0062 
02512ff234 Jean*0063          vDissip(i,j) =
                0064      &    recip_dyC(i,j,bi,bj)*recip_dyC(i,j,bi,bj)
                0065      &    *recip_dxG(i,j,bi,bj)
b0c3bd7ab0 Bayl*0066      &    *(
02512ff234 Jean*0067      &       dyU(i+1, j ,bi,bj)*dyU(i+1, j ,bi,bj)
b0c3bd7ab0 Bayl*0068      &         *viscAh_s(i+1,j)*strain(i+1,j)
02512ff234 Jean*0069      &      -dyU( i , j ,bi,bj)*dyU( i , j ,bi,bj)
b0c3bd7ab0 Bayl*0070      &         *viscAh_s( i ,j)*strain( i ,j)
                0071      &     )
02512ff234 Jean*0072      &    -recip_dxG(i,j,bi,bj)*recip_dxG(i,j,bi,bj)
                0073      &    *recip_dyC(i,j,bi,bj)
b0c3bd7ab0 Bayl*0074      &    *(
02512ff234 Jean*0075      &       dxF( i , j ,bi,bj)*dxF( i , j ,bi,bj)
b0c3bd7ab0 Bayl*0076      &         *viscAh_t(i, j )*tension(i, j )
02512ff234 Jean*0077      &      -dxF( i ,j-1,bi,bj)*dxF( i ,j-1,bi,bj)
b0c3bd7ab0 Bayl*0078      &         *viscAh_t(i,j-1)*tension(i,j-1)
                0079      &     )
                0080 
                0081         ENDDO
07cc642809 Alis*0082        ENDDO
b0c3bd7ab0 Bayl*0083       ENDIF
                0084       IF (biharmonic) THEN
                0085        STOP 'MOM_HDISSIP: BIHARMONIC NOT ALLOWED WITH STRAIN-TENSION'
                0086       ENDIF
07cc642809 Alis*0087 
                0088       RETURN
                0089       END