Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:37:09 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6d54cf9ca1 Ed H*0001 #include "PACKAGES_CONFIG.h"
aea29c8517 Alis*0002 #include "CPP_OPTIONS.h"
                0003 
9366854e02 Chri*0004 CBOP
fb5eaa30cd Jean*0005 C     !ROUTINE: UPDATE_ETAH
9366854e02 Chri*0006 C     !INTERFACE:
fb5eaa30cd Jean*0007       SUBROUTINE UPDATE_ETAH( myTime, myIter, myThid )
9366854e02 Chri*0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
a2a20dcddc Jean*0010 C     | SUBROUTINE UPDATE_ETAH
a0c1d60019 Jean*0011 C     | o Update etaH after mom-correction-step/integr_continuity
fb5eaa30cd Jean*0012 C     |  (required with NLFS to derive surface layer thickness)
9366854e02 Chri*0013 C     *==========================================================*
                0014 C     \ev
aea29c8517 Alis*0015 
9366854e02 Chri*0016 C     !USES:
                0017       IMPLICIT NONE
aea29c8517 Alis*0018 C     == Global variables
                0019 #include "SIZE.h"
                0020 #include "EEPARAMS.h"
                0021 #include "PARAMS.h"
                0022 #include "DYNVARS.h"
                0023 #include "GRID.h"
11cbc41716 Jean*0024 #include "SURFACE.h"
aea29c8517 Alis*0025 
9366854e02 Chri*0026 C     !INPUT/OUTPUT PARAMETERS:
aea29c8517 Alis*0027 C     == Routine arguments ==
9366854e02 Chri*0028 C     myTime  :: Current time in simulation
c1e2d059e3 Jean*0029 C     myIter  :: Current iteration number
                0030 C     myThid  :: my Thread Id number
aea29c8517 Alis*0031       _RL myTime
                0032       INTEGER myIter
                0033       INTEGER myThid
                0034 
9366854e02 Chri*0035 C     !LOCAL VARIABLES:
aea29c8517 Alis*0036 #ifdef EXACT_CONSERV
                0037 C     Local variables in common block
                0038 
                0039 C     Local variables
7418e6b1e6 Jean*0040 C     i,j,bi,bj  :: Loop counters
                0041       INTEGER i,j,bi,bj
9366854e02 Chri*0042 CEOP
aea29c8517 Alis*0043 
c1e2d059e3 Jean*0044 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
9fdcce8056 Jean*0045 
fb5eaa30cd Jean*0046       DO bj=myByLo(myThid),myByHi(myThid)
a2a20dcddc Jean*0047        DO bi=myBxLo(myThid),myBxHi(myThid)
5da7194a36 Jean*0048 
615c650f5e Jean*0049 C--   before updating etaH, save current etaH field in etaHnm1
c1e2d059e3 Jean*0050         DO j=1-Oly,sNy+Oly
                0051           DO i=1-Olx,sNx+Olx
                0052             etaHnm1(i,j,bi,bj) = etaH(i,j,bi,bj)
                0053           ENDDO
                0054         ENDDO
615c650f5e Jean*0055 
a2a20dcddc Jean*0056 C--   Update etaH at the end of the time step :
9fdcce8056 Jean*0057 C     Incorporate the Explicit part of -Divergence(Barotropic_Flow)
5da7194a36 Jean*0058 
615c650f5e Jean*0059         IF (implicDiv2Dflow.EQ. 1. _d 0) THEN
                0060          DO j=1-Oly,sNy+Oly
                0061           DO i=1-Olx,sNx+Olx
a2a20dcddc Jean*0062             etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
615c650f5e Jean*0063           ENDDO
5da7194a36 Jean*0064          ENDDO
                0065 
615c650f5e Jean*0066         ELSE
                0067          DO j=1,sNy
                0068           DO i=1,sNx
a2a20dcddc Jean*0069             etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
615c650f5e Jean*0070      &       + (1. - implicDiv2Dflow)*dEtaHdt(i,j,bi,bj)
                0071      &                               *deltaTfreesurf
                0072           ENDDO
9fdcce8056 Jean*0073          ENDDO
615c650f5e Jean*0074         ENDIF
9fdcce8056 Jean*0075 
8d8e492d23 Jean*0076 #ifdef ALLOW_OBCS
a0c1d60019 Jean*0077 C--    Apply OBC to etaH (NonLin-FreeSurf): needed since viscous terms
                0078 C       depend on hFacZ which is not only function of boundary hFac values.
c1e2d059e3 Jean*0079         IF ( useOBCS.AND.nonlinFreeSurf.GT.0 )
                0080      &     CALL OBCS_APPLY_ETA( bi, bj, etaH, myThid )
8d8e492d23 Jean*0081 #endif /* ALLOW_OBCS */
                0082 
fb5eaa30cd Jean*0083 C- end bi,bj loop.
                0084        ENDDO
a2a20dcddc Jean*0085       ENDDO
fb5eaa30cd Jean*0086 
c1e2d059e3 Jean*0087 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0088 
a0c1d60019 Jean*0089       IF ( implicDiv2Dflow .NE. 1. _d 0 .OR.
                0090      &    ( useOBCS.AND.nonlinFreeSurf.GT.0 ) )
a2a20dcddc Jean*0091      &    CALL EXCH_XY_RL( etaH, myThid )
fb5eaa30cd Jean*0092 
8dc89a3cca Jean*0093 #endif /* EXACT_CONSERV */
e0c3eb6fa1 Jean*0094 
aea29c8517 Alis*0095       RETURN
                0096       END