C $Header: /u/gcmpack/MITgcm/pkg/timeave/timeave_cumul_dif_1t.F,v 1.4 2014/08/14 16:47:25 jmc Exp $ C $Name: $ #include "TIMEAVE_OPTIONS.h" CStartofinterface SUBROUTINE TIMEAVE_CUMUL_DIF_1T( O fldtave, I fld1, fld2, Ksize, dir, deltaTloc, I bi, bj, myThid ) C /==========================================================* C | SUBROUTINE TIMEAVE_CUMUL_DIF_1T C | o Sum over time the product: C | minus gradient of 1rst field x 2nd field (1 tile) C \==========================================================* IMPLICIT NONE C == Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "GRID.h" C == Routine arguments == C myThid - Thread number for this instance of the routine. C fldtave - time averaged Field C fld1,fld2 - Input Field C dir - define the gradient direction: 1: X dir ; 2: Y dir ; 3: R dir C Ksize - 3rd dimension of local arrays (Input and Output fields) INTEGER Ksize, dir _RL fld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize) _RL fld2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize) _RL fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy) _RL deltaTloc INTEGER bi, bj, myThid CEndofinterface #ifdef ALLOW_TIMEAVE C == Local variables == C i,j,k,bi,bj - Loop counters INTEGER i, j, k IF ( dir.eq.1 ) THEN DO k=1,Ksize DO j=1,sNy DO i=1,sNx fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj) & - ( fld1(i,j,k) - fld1(i-1,j,k) ) & * recip_dxC(i,j,bi,bj) & * fld2(i,j,k) * deltaTloc ENDDO ENDDO ENDDO ELSEIF ( dir.eq.2 ) THEN DO k=1,Ksize DO j=1,sNy DO i=1,sNx fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj) & - ( fld1(i,j,k) - fld1(i,j-1,k) ) & * recip_dyC(i,j,bi,bj) & * fld2(i,j,k) * deltaTloc ENDDO ENDDO ENDDO ELSEIF ( dir.eq.3 ) THEN DO k=2,Ksize DO j=1,sNy DO i=1,sNx fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj) & + ( fld1(i,j,k) - fld1(i,j,k-1) ) & * recip_drC(k) & * fld2(i,j,k) * deltaTloc ENDDO ENDDO ENDDO ENDIF #endif /* ALLOW_TIMEAVE */ RETURN END