C $Header: /u/gcmpack/MITgcm/model/src/quasihydrostaticterms.F,v 1.3 2005/04/06 18:20:22 jmc Exp $
C $Name:  $

#include "CPP_OPTIONS.h"

      SUBROUTINE QUASIHYDROSTATICTERMS(
     I      bi,bj,k,
     O      effectiveBuoy,
     I      myThid )

C     /==========================================================\
C     | o SUBROUTINE BUOYANCY                                    |
C     |   Calculates buoyancy for an XY slice of a tile.         |
C     |==========================================================|
C     |                                                          |
C     | k - is the density level                                 |
C     |                                                          |
C     \==========================================================/
      IMPLICIT NONE

C--   == Global data ==
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GRID.h"
#include "DYNVARS.h"

C--   == Routine arguments ==
      INTEGER bi,bj,k
      _RL effectiveBuoy(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
      INTEGER myThid

C--   == Local variables ==
      INTEGER i,j
      _RL scalingFactor

      scalingFactor=rhoConst/gravity
      scalingFactor=1./gravity

      DO j=1-Oly,sNy+Oly
       DO i=1-Olx,sNx+Olx-1
        effectiveBuoy(i,j)=effectiveBuoy(i,j)
     &    -scalingFactor*
     &     fCoriCos(i,j,bi,bj)*
     &     0.5*( uVel(i,j,k,bi,bj)+uVel(i+1,j,k,bi,bj) )
       ENDDO
      ENDDO

      IF (useNHMTerms) THEN
       DO j=1-Oly,sNy+Oly-1
        DO i=1-Olx,sNx+Olx-1
         effectiveBuoy(i,j)=effectiveBuoy(i,j)
     &    -scalingFactor*
     &     (
     &       0.5*( uVel(i,j,k,bi,bj)**2+uVel(i+1,j,k,bi,bj)**2 )
     &      +0.5*( vVel(i,j,k,bi,bj)**2+vVel(i,j+1,k,bi,bj)**2 )
     &     )*recip_RSphere
        ENDDO
       ENDDO
      ENDIF

      RETURN
      END