Back to home page

MITgcm

 
 

    


File indexing completed on 2025-09-19 05:08:10 UTC

view on githubraw file Latest commit c3be0435 on 2025-09-18 18:40:16 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:
                0027 C     myTime  :: Current time in simulation
c1e2d059e3 Jean*0028 C     myIter  :: Current iteration number
                0029 C     myThid  :: my Thread Id number
aea29c8517 Alis*0030       _RL myTime
                0031       INTEGER myIter
                0032       INTEGER myThid
                0033 
9366854e02 Chri*0034 C     !LOCAL VARIABLES:
7418e6b1e6 Jean*0035 C     i,j,bi,bj  :: Loop counters
                0036       INTEGER i,j,bi,bj
9366854e02 Chri*0037 CEOP
aea29c8517 Alis*0038 
c1e2d059e3 Jean*0039 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
9fdcce8056 Jean*0040 
fb5eaa30cd Jean*0041       DO bj=myByLo(myThid),myByHi(myThid)
a2a20dcddc Jean*0042        DO bi=myBxLo(myThid),myBxHi(myThid)
5da7194a36 Jean*0043 
615c650f5e Jean*0044 C--   before updating etaH, save current etaH field in etaHnm1
c3be04357d Jean*0045         DO j=1-OLy,sNy+OLy
                0046           DO i=1-OLx,sNx+OLx
c1e2d059e3 Jean*0047             etaHnm1(i,j,bi,bj) = etaH(i,j,bi,bj)
                0048           ENDDO
                0049         ENDDO
615c650f5e Jean*0050 
a2a20dcddc Jean*0051 C--   Update etaH at the end of the time step :
9fdcce8056 Jean*0052 C     Incorporate the Explicit part of -Divergence(Barotropic_Flow)
5da7194a36 Jean*0053 
615c650f5e Jean*0054         IF (implicDiv2Dflow.EQ. 1. _d 0) THEN
c3be04357d Jean*0055          DO j=1-OLy,sNy+OLy
                0056           DO i=1-OLx,sNx+OLx
a2a20dcddc Jean*0057             etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
615c650f5e Jean*0058           ENDDO
5da7194a36 Jean*0059          ENDDO
                0060 
615c650f5e Jean*0061         ELSE
                0062          DO j=1,sNy
                0063           DO i=1,sNx
a2a20dcddc Jean*0064             etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
615c650f5e Jean*0065      &       + (1. - implicDiv2Dflow)*dEtaHdt(i,j,bi,bj)
c3be04357d Jean*0066      &                               *deltaTFreeSurf
615c650f5e Jean*0067           ENDDO
9fdcce8056 Jean*0068          ENDDO
615c650f5e Jean*0069         ENDIF
9fdcce8056 Jean*0070 
8d8e492d23 Jean*0071 #ifdef ALLOW_OBCS
a0c1d60019 Jean*0072 C--    Apply OBC to etaH (NonLin-FreeSurf): needed since viscous terms
                0073 C       depend on hFacZ which is not only function of boundary hFac values.
c1e2d059e3 Jean*0074         IF ( useOBCS.AND.nonlinFreeSurf.GT.0 )
                0075      &     CALL OBCS_APPLY_ETA( bi, bj, etaH, myThid )
8d8e492d23 Jean*0076 #endif /* ALLOW_OBCS */
                0077 
fb5eaa30cd Jean*0078 C- end bi,bj loop.
                0079        ENDDO
a2a20dcddc Jean*0080       ENDDO
fb5eaa30cd Jean*0081 
c1e2d059e3 Jean*0082 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0083 
a0c1d60019 Jean*0084       IF ( implicDiv2Dflow .NE. 1. _d 0 .OR.
                0085      &    ( useOBCS.AND.nonlinFreeSurf.GT.0 ) )
a2a20dcddc Jean*0086      &    CALL EXCH_XY_RL( etaH, myThid )
fb5eaa30cd Jean*0087 
aea29c8517 Alis*0088       RETURN
                0089       END