C $Header: /u/gcmpack/MITgcm/model/src/update_etaws.F,v 1.2 2011/12/22 00:11:11 jmc Exp $ C $Name: $ #include "CPP_OPTIONS.h" CBOP C !ROUTINE: UPDATE_ETAWS C !INTERFACE: SUBROUTINE UPDATE_ETAWS( myTime, myIter, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE UPDATE_ETAWS C | o For hybrid sigma-coordinate, derive SSH value C | (etaHw & etaHs) and SSH tendency (dEtaWdt & dEtaSdt) C | at grid-cell Western and Southern edges. C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "DYNVARS.h" #include "GRID.h" #include "SURFACE.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C myTime :: Current time in simulation C myIter :: Current iteration number C myThid :: my Thread Id number _RL myTime INTEGER myIter INTEGER myThid C !LOCAL VARIABLES: #ifdef EXACT_CONSERV C Local variables in common block #ifdef NONLIN_FRSURF # ifndef DISABLE_SIGMA_CODE C Local variables C i,j,bi,bj :: Loop counters INTEGER i,j,bi,bj CEOP IF ( nonlinFreeSurf.GT.0 .AND. selectSigmaCoord.NE.0 ) THEN DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) C- 1rst bi,bj loop : C-- copy etaHX -> dEtaXdt DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx dEtaWdt(i,j,bi,bj) = etaHw(i,j,bi,bj) dEtaSdt(i,j,bi,bj) = etaHs(i,j,bi,bj) ENDDO ENDDO DO j=1,sNy+1 DO i=1,sNx+1 etaHw(i,j,bi,bj) = ( etaH (i-1,j,bi,bj) & + etaH ( i ,j,bi,bj) )*0.5 _d 0 etaHs(i,j,bi,bj) = ( etaH (i,j-1,bi,bj) & + etaH (i, j ,bi,bj) )*0.5 _d 0 c etaHw(i,j,bi,bj) = 0.5 _d 0 c & *( etaH (i-1,j,bi,bj)*rA(i-1,j,bi,bj) c & + etaH ( i ,j,bi,bj)*rA( i ,j,bi,bj) c & )*recip_rAw(i,j,bi,bj) c etaHs(i,j,bi,bj) = 0.5 _d 0 c & *( etaH (i,j-1,bi,bj)*rA(i,j-1,bi,bj) c & + etaH (i, j ,bi,bj)*rA(i, j ,bi,bj) c & )*recip_rAs(i,j,bi,bj) ENDDO ENDDO C- end 1rst bi,bj loop. ENDDO ENDDO CALL EXCH_UV_XY_RL( etaHw, etaHs, .FALSE., myThid ) DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) C- 2nd bi,bj loop : DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx dEtaWdt(i,j,bi,bj) = ( etaHw(i,j,bi,bj) & - dEtaWdt(i,j,bi,bj) )/deltaTfreesurf dEtaSdt(i,j,bi,bj) = ( etaHs(i,j,bi,bj) & - dEtaSdt(i,j,bi,bj) )/deltaTfreesurf ENDDO ENDDO C- end 2nd bi,bj loop. ENDDO ENDDO ENDIF # endif /* DISABLE_SIGMA_CODE */ #endif /* NONLIN_FRSURF */ #endif /* EXACT_CONSERV */ RETURN END