C $Header: /u/gcmpack/MITgcm/pkg/autodiff/addamp_adj.F,v 1.1 2010/04/17 20:47:24 gforget Exp $
C $Name:  $

#include "CPP_OPTIONS.h"

C     !ROUTINE: ADDAMP_ADJ
C     !INTERFACE:
      SUBROUTINE ADDAMP_ADJ(
     I    NrIn,minRef,maxRef,timeDamp,
     I    fieldRef,adfieldDamp,myThid)
C     !DESCRIPTION: \bv
C     *==========================================================*
C     | author: Gael Forget
C     *==========================================================*

      IMPLICIT NONE

C     == Global arguments ==
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GRID.h"

C     == Routine arguments ==
C     myThid - Thread number for this instance of the routine.
      integer NrIn, myThid
      _RL fieldRef(1-Olx:sNx+Olx,1-Oly:sNy+Oly,NrIn,nSx,nSy)
      _RL adfieldDamp(1-Olx:sNx+Olx,1-Oly:sNy+Oly,NrIn,nSx,nSy)
      _RL minRef,maxRef,timeDamp,facDamp
      integer bi,bj,i,j,k

      DO bj=myByLo(myThid),myByHi(myThid)
       DO bi=myBxLo(myThid),myBxHi(myThid)
        DO k=1,NrIn
         DO j=1-Oly,sNy+Oly
          DO i=1-Olx,sNx+Olx
           if ( (fieldRef(i,j,k,bi,bj).GE.maxRef).OR.
     &          (fieldRef(i,j,k,bi,bj).LE.minRef) ) then
              facDamp=(1. _d 0-deltaTClock/timeDamp)
           else
              facDamp=1. _d 0
           endif
           adfieldDamp(i,j,k,bi,bj)=facDamp*
     &        adfieldDamp(i,j,k,bi,bj)
          ENDDO
         ENDDO
        ENDDO
       ENDDO
      ENDDO

      end