C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_swapffields.F,v 1.7 2011/09/02 18:22:24 jmc Exp $ C $Name: $ #include "EXF_OPTIONS.h" C-- File exf_swapffields.F: Routines to swap 2 fields C-- Contents C-- o EXF_SWAPFFIELDS C-- o EXF_SWAPFFIELDS_3D C-- o EXF_SWAPFFIELDS_XZ C-- o EXF_SWAPFFIELDS_YZ C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| SUBROUTINE EXF_SWAPFFIELDS( O ffld0, U ffld1, I myThid ) C ================================================================== C SUBROUTINE exf_SwapFFields C ================================================================== C C o Copy a forcing field ffld1 to ffld0 and set ffld0 to zero. C C started: Christian Eckert eckert@mit.edu 30-Jun-1999 C C changed: Christian Eckert eckert@mit.edu 14-Jan-2000 C C - Restructured the code in order to create a package C for the MITgcmUV. C C Christian Eckert eckert@mit.edu 12-Feb-2000 C C - Changed Routine names (package prefix: exf_) C C ================================================================== C SUBROUTINE exf_SwapFFields C ================================================================== IMPLICIT NONE C == global variables == #include "EEPARAMS.h" #include "SIZE.h" C == routine arguments == _RL ffld0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL ffld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) INTEGER myThid C == local variables == INTEGER bi, bj INTEGER i, j C == end of interface == DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO j = 1,sNy DO i = 1,sNx ffld0(i,j,bi,bj) = ffld1(i,j,bi,bj) ffld1(i,j,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| SUBROUTINE EXF_SWAPFFIELDS_3D( O ffld0, U ffld1, I nNz, myThid ) C ================================================================== C SUBROUTINE exf_SwapFFields_3d C ================================================================== C C o Copy a forcing field ffld1 to ffld0 and set ffld0 to zero. C C ================================================================== C SUBROUTINE exf_SwapFFields C ================================================================== IMPLICIT NONE C == global variables == #include "EEPARAMS.h" #include "SIZE.h" C == routine arguments == C nNz :: number of levels to process INTEGER nNz _RL ffld0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nNz,nSx,nSy) _RL ffld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nNz,nSx,nSy) INTEGER myThid C == local variables == INTEGER bi, bj INTEGER i, j, k C == end of interface == DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO k = 1,nNz DO j = 1,sNy DO i = 1,sNx ffld0(i,j,k,bi,bj) = ffld1(i,j,k,bi,bj) ffld1(i,j,k,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO ENDDO RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| SUBROUTINE EXF_SWAPFFIELDS_XZ( O ffld0, U ffld1, I nNz, myThid ) C ================================================================== C SUBROUTINE exf_swapffields_xz C ================================================================== C C o Copy a forcing field ffld1 to ffld0 and set ffld0 to zero. C C started: heimbach@mit.edu 01-May-2001 C C ================================================================== C SUBROUTINE exf_swapffields_xz C ================================================================== IMPLICIT NONE C == global variables == #include "EEPARAMS.h" #include "SIZE.h" C == routine arguments == C nNz :: number of levels to process INTEGER nNz _RL ffld0(1-OLx:sNx+OLx,nNz,nSx,nSy) _RL ffld1(1-OLx:sNx+OLx,nNz,nSx,nSy) INTEGER myThid C == local variables == INTEGER bi, bj INTEGER i, k C == end of interface == DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO k = 1,nNz DO i = 1,sNx ffld0(i,k,bi,bj) = ffld1(i,k,bi,bj) ffld1(i,k,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO RETURN END C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| SUBROUTINE EXF_SWAPFFIELDS_YZ( O ffld0, U ffld1, I nNz, myThid ) C ================================================================== C SUBROUTINE exf_swapffields_yz C ================================================================== C C o Copy a forcing field ffld1 to ffld0 and set ffld0 to zero. C C started: heimbach@mit.edu 01-May-2001 C C ================================================================== C SUBROUTINE exf_swapffields_yz C ================================================================== IMPLICIT NONE C == global variables == #include "EEPARAMS.h" #include "SIZE.h" C == routine arguments == C nNz :: number of levels to process INTEGER nNz _RL ffld0(1-OLy:sNy+OLy,nNz,nSx,nSy) _RL ffld1(1-OLy:sNy+OLy,nNz,nSx,nSy) INTEGER myThid C == local variables == INTEGER bi, bj INTEGER j, k C == end of interface == DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO k = 1,nNz DO j = 1,sNy ffld0(j,k,bi,bj) = ffld1(j,k,bi,bj) ffld1(j,k,bi,bj) = 0. _d 0 ENDDO ENDDO ENDDO ENDDO RETURN END