C $Header: /u/gcmpack/MITgcm/eesupp/src/reset_halo.F,v 1.1 2013/07/04 22:49:16 jmc Exp $ C $Name: $ #include "CPP_EEOPTIONS.h" C-- File reset_halo.F: to fill-up halo region with constant value C-- Contents C-- o RESET_HALO_RL C-- o RESET_HALO_RS C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: RESET_HALO_RL C !INTERFACE: SUBROUTINE RESET_HALO_RL( U glFld, I fixVal, kSize, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R RESET_HALO_RL C *==========================================================* C | o Reset to constant value the halo region of a global C | 3-D array. Note: used for debugging only . C *==========================================================* C \ev C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" C !INPUT/OUTPUT PARAMETERS: C == Routine Arguments == C glFld :: field global array to update in halo-region C fixVal :: constant value to fill-up the halo region with C kSize :: size of 3-D field-array C myThid :: my Thread Id number INTEGER kSize _RL glFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize,nSx,nSy) _RL fixVal INTEGER myThid C !LOCAL VARIABLES: C == Local variables == INTEGER bi, bj, k INTEGER ii, i, j CEOP DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO k=1,kSize DO j=1-OLy,sNy+OLy IF ( j.LT.1 .OR. j.GT.sNy ) THEN DO i=1-OLx,sNx+OLx glFld(i,j,k,bi,bj) = fixVal ENDDO ELSE DO ii=1-OLx,OLx i = ii IF ( ii.GE.1 ) i= ii+sNx glFld(i,j,k,bi,bj) = fixVal ENDDO ENDIF ENDDO ENDDO C- end bi,bj loops ENDDO ENDDO RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: RESET_HALO_RS C !INTERFACE: SUBROUTINE RESET_HALO_RS( U glFld, I fixVal, kSize, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R RESET_HALO_RS C *==========================================================* C | o Reset to constant value the halo region of a global C | 3-D array. Note: used for debugging only . C *==========================================================* C \ev C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" C !INPUT/OUTPUT PARAMETERS: C == Routine Arguments == C glFld :: field global array to update in halo-region C fixVal :: constant value to fill-up the halo region with C kSize :: size of 3-D field-array C myThid :: my Thread Id number INTEGER kSize _RS glFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize,nSx,nSy) _RS fixVal INTEGER myThid C !LOCAL VARIABLES: C == Local variables == INTEGER bi, bj, k INTEGER ii, i, j CEOP DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO k=1,kSize DO j=1-OLy,sNy+OLy IF ( j.LT.1 .OR. j.GT.sNy ) THEN DO i=1-OLx,sNx+OLx glFld(i,j,k,bi,bj) = fixVal ENDDO ELSE DO ii=1-OLx,OLx i = ii IF ( ii.GE.1 ) i= ii+sNx glFld(i,j,k,bi,bj) = fixVal ENDDO ENDIF ENDDO ENDDO C- end bi,bj loops ENDDO ENDDO RETURN END