C $Header: /u/gcmpack/MITgcm/pkg/longstep/longstep_average_3d_fac.F,v 1.3 2015/11/16 23:11:21 jmc Exp $
C $Name: $
#include "LONGSTEP_OPTIONS.h"
CBOP
C !ROUTINE: LONGSTEP_AVERAGE_3D_FAC
C !INTERFACE:
SUBROUTINE LONGSTEP_AVERAGE_3D_FAC(
I lsCnt,
U lsFld,
I fac,
I myNr, myThid)
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE LONGSTEP_AVERAGE_3D_FAC
C | o compute 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 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)
_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
_RL factor
CEOP
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO k = 1,myNr
DO j = 1-OLy,sNy+OLy
DO i = 1-OLx,sNx+OLx
factor = lsCnt(bi,bj)
factor = factor*fac(i,j,k,bi,bj)
IF (factor.NE.zeroRL) factor = 1. _d 0 / factor
lsFld(i,j,k,bi,bj) = lsFld(i,j,k,bi,bj)*factor
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
#endif /* ALLOW_LONGSTEP */
RETURN
END