C $Header: /u/gcmpack/MITgcm/model/src/freesurf_rescale_g.F,v 1.8 2014/08/14 16:49:19 jmc Exp $
C $Name: $
#include "CPP_OPTIONS.h"
CBOP
C !ROUTINE: FREESURF_RESCALE_G
C !INTERFACE:
SUBROUTINE FREESURF_RESCALE_G(
I bi, bj, k,
U gTracer,
I myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | S/R FREESURF_RESCALE_G
C | o Re-scale Gs to account for change in free-surface
C | hieght. Only meaningful with non-linear free-surface.
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GRID.h"
#include "SURFACE.h"
C !INPUT/OUTPUT PARAMETERS:
C == Routine Arguments ==
INTEGER bi,bj,k
_RL gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
#ifdef NONLIN_FRSURF
C == Local variables ==
INTEGER i,j
CEOP
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
IF ( nonlinFreeSurf.GT.0 ) THEN
IF ( select_rStar.GT.0 ) THEN
# ifndef DISABLE_RSTAR_CODE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
gTracer(i,j,k) = gTracer(i,j,k)
& / rStarExpC(i,j,bi,bj)
ENDDO
ENDDO
# endif /* DISABLE_RSTAR_CODE */
ELSEIF ( selectSigmaCoord.NE.0 ) THEN
# ifndef DISABLE_SIGMA_CODE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
gTracer(i,j,k) = gTracer(i,j,k)
& /( 1. _d 0 + dEtaHdt(i,j,bi,bj)*deltaTFreeSurf
& *dBHybSigF(k)*recip_drF(k)
& *recip_hFacC(i,j,k,bi,bj)
& )
ENDDO
ENDDO
# endif /* DISABLE_SIGMA_CODE */
ELSE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
IF (k.EQ.kSurfC(i,j,bi,bj)) THEN
gTracer(i,j,k) = gTracer(i,j,k)
& *_hFacC(i,j,k,bi,bj)/hFac_surfC(i,j,bi,bj)
ENDIF
ENDDO
ENDDO
ENDIF
ENDIF
#endif /* NONLIN_FRSURF */
RETURN
END