C $Header: /u/gcmpack/MITgcm/pkg/autodiff/adzero_adj.F,v 1.7 2012/08/12 18:46:20 jmc Exp $ C $Name: $ #include "CPP_EEOPTIONS.h" C-- File zero_adj.F: C-- Contents C-- o ADZERO_ADJ_1D C-- o ADZERO_ADJ_LOC C-- o ADZERO_ADJ C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: ADZERO_ADJ_1D C !INTERFACE: SUBROUTINE ADZERO_ADJ_1D( I NrIn, adFieldFwd, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | o zero out a 1D adjoint field C | author: Gael Forget C *==========================================================* C \ev C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" C !INPUT/OUTPUT PARAMETERS: C myThid :: my Thread Id number INTEGER NrIn, myThid _RL adFieldFwd(NrIn) C !LOCAL VARIABLES: INTEGER k CEOP DO k=1,NrIn adFieldFwd(k) = 0. _d 0 ENDDO RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: ADZERO_ADJ_LOC C !INTERFACE: SUBROUTINE ADZERO_ADJ_LOC( I NrIn, adFieldFwd, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | o zero out a local (no nsx,nsy dims.) adjoint field C | author: Gael Forget C *==========================================================* C \ev C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" C !INPUT/OUTPUT PARAMETERS: C myThid :: my Thread Id number INTEGER NrIn, myThid _RL adFieldFwd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrIn) C !LOCAL VARIABLES: INTEGER i,j,k CEOP DO k=1,NrIn DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx adFieldFwd(i,j,k) = 0. _d 0 ENDDO ENDDO ENDDO RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: ADZERO_ADJ C !INTERFACE: SUBROUTINE ADZERO_ADJ( I NrIn, adFieldFwd, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | o zero out a full (incl. nsx,nsy dims.) adjoint field C | author: Gael Forget C *==========================================================* C \ev C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" C !INPUT/OUTPUT PARAMETERS: C myThid :: my Thread Id number INTEGER NrIn, myThid _RL adFieldFwd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrIn,nSx,nSy) C !LOCAL VARIABLES: INTEGER bi,bj INTEGER i,j,k CEOP 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 adFieldFwd(i,j,k,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO ENDDO RETURN END