C $Header: /u/gcmpack/MITgcm/pkg/longstep/longstep_fill_3d_fac.F,v 1.2 2010/01/18 01:02:56 jmc Exp $
C $Name: $
#include "LONGSTEP_OPTIONS.h"
CBOP
C !ROUTINE: LONGSTEP_FILL_3D_FAC
C !INTERFACE:
SUBROUTINE LONGSTEP_FILL_3D_FAC(
U lsCnt, lsFld,
I fld, fac, myNr, myThid)
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE LONGSTEP_FILL_3D_FAC
C | o update longstep average for one field (incl. overlap)
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GRID.h"
C !INPUT/OUTPUT PARAMETERS:
C == Routine arguments ==
C lsCnt :: Counter to update
C lsFld :: average to update
C fld :: field to accumulate
C myNr :: number of levels to update
C myThid :: my Thread Id number
INTEGER myNr
_RL lsFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNr,nSx,nSy)
_RL Fld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNr,nSx,nSy)
_RS Fac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNr,nSx,nSy)
INTEGER lsCnt(nSx,nSy)
INTEGER myThid
#ifdef ALLOW_LONGSTEP
C !LOCAL VARIABLES:
C == Local variables ==
INTEGER i,j,k,bi,bj
CEOP
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
lsCnt(bi,bj) = lsCnt(bi,bj) + 1
DO k = 1,myNr
DO j = 1-OLy,sNy+OLy
DO i = 1-OLx,sNx+OLx
lsFld(i,j,k,bi,bj) = lsFld(i,j,k,bi,bj)
& + fld(i,j,k,bi,bj)*fac(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
#endif /* ALLOW_LONGSTEP */
RETURN
END