C $Header: /u/gcmpack/MITgcm/model/src/calc_grad_phi_surf.F,v 1.2 2001/09/26 18:09:13 cnh Exp $
C $Name: $
#include "CPP_OPTIONS.h"
CBOP
C !ROUTINE: CALC_GRAD_PHI_SURF
C !INTERFACE:
SUBROUTINE CALC_GRAD_PHI_SURF( bi, bj, iMin, iMax, jMin, jMax,
I etaFld,
O phiSurfX, phiSurfY,
I myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | S/R CALC_GRAD_PHI_SURF
C | o Calculate the gradient of the surface Potential anomaly
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 ==
C etaFld :: free-surface r-anomaly (r unit).
C phiSurfX, phiSurfY :: Gradient in the X and Y directions of surface
C Potentiel anomaly (atmos: =Geopotential ; ocean: =Pressure/rho)
C bi,bj,iMin,iMax,jMin,jMax :: Loop counters
C myThid :: Instance number for this call of the routine.
INTEGER bi,bj,iMin,iMax,jMin,jMax
_RL etaFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RL phiSurfX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
_RL phiSurfY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
C !LOCAL VARIABLES:
C == Local variables ==
C i,j :: Loop counters
INTEGER i,j
CEOP
C Zonal term
DO j=jMin,jMax
DO i=iMin,iMax
phiSurfX(i,j)=_recip_dxC(i,j,bi,bj)*
& ( Bo_surf(i,j,bi,bj)*etaFld(i,j,bi,bj)
& - Bo_surf(i-1,j,bi,bj)*etaFld(i-1,j,bi,bj) )
ENDDO
ENDDO
C Meridional term
DO j=jMin,jMax
DO i=iMin,iMax
phiSurfY(i,j)=_recip_dyC(i,j,bi,bj)*
& ( Bo_surf(i,j,bi,bj)*etaFld(i,j,bi,bj)
& - Bo_surf(i,j-1,bi,bj)*etaFld(i,j-1,bi,bj) )
ENDDO
ENDDO
RETURN
END