Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:44:35 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6d54cf9ca1 Ed H*0001 #include "TIMEAVE_OPTIONS.h"
4237a8e6b2 Jean*0002 
                0003 CStartofinterface
7db14aeb17 Jean*0004       SUBROUTINE TIMEAVE_CUMUL_DIF_1T(
4237a8e6b2 Jean*0005      O   fldtave,
873fffa31d Patr*0006      I   fld1, fld2, Ksize, dir, deltaTloc,
4237a8e6b2 Jean*0007      I   bi, bj, myThid )
                0008 C     /==========================================================*
                0009 C     | SUBROUTINE TIMEAVE_CUMUL_DIF_1T
                0010 C     | o Sum over time the product:
                0011 C     |   minus gradient of 1rst field  x  2nd field (1 tile)
                0012 C     \==========================================================*
                0013       IMPLICIT NONE
                0014 
                0015 C     == Global variables ===
                0016 #include "SIZE.h"
                0017 #include "EEPARAMS.h"
                0018 #include "GRID.h"
                0019 
                0020 C     == Routine arguments ==
                0021 C     myThid  - Thread number for this instance of the routine.
                0022 C     fldtave - time averaged Field
                0023 C     fld1,fld2  - Input Field
                0024 C     dir     - define the gradient direction: 1: X dir ; 2: Y dir ; 3: R dir
                0025 C     Ksize   - 3rd dimension of local arrays (Input and Output fields)
                0026       INTEGER Ksize, dir
7db14aeb17 Jean*0027       _RL fld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize)
4237a8e6b2 Jean*0028       _RL fld2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize)
                0029       _RL fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
873fffa31d Patr*0030       _RL deltaTloc
4237a8e6b2 Jean*0031       INTEGER bi, bj, myThid
                0032 
                0033 CEndofinterface
                0034 
                0035 #ifdef ALLOW_TIMEAVE
                0036 C     == Local variables ==
                0037 C     i,j,k,bi,bj  - Loop counters
                0038       INTEGER i, j, k
7db14aeb17 Jean*0039 
4237a8e6b2 Jean*0040       IF ( dir.eq.1 )  THEN
7db14aeb17 Jean*0041 
4237a8e6b2 Jean*0042         DO k=1,Ksize
                0043          DO j=1,sNy
                0044           DO i=1,sNx
                0045            fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
7db14aeb17 Jean*0046      &        - ( fld1(i,j,k) - fld1(i-1,j,k) )
4237a8e6b2 Jean*0047      &          * recip_dxC(i,j,bi,bj)
873fffa31d Patr*0048      &          * fld2(i,j,k) * deltaTloc
4237a8e6b2 Jean*0049           ENDDO
                0050          ENDDO
                0051         ENDDO
                0052 
                0053       ELSEIF ( dir.eq.2 ) THEN
7db14aeb17 Jean*0054 
4237a8e6b2 Jean*0055         DO k=1,Ksize
                0056          DO j=1,sNy
                0057           DO i=1,sNx
                0058            fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
7db14aeb17 Jean*0059      &        - ( fld1(i,j,k) - fld1(i,j-1,k) )
4237a8e6b2 Jean*0060      &          * recip_dyC(i,j,bi,bj)
873fffa31d Patr*0061      &          * fld2(i,j,k) * deltaTloc
4237a8e6b2 Jean*0062           ENDDO
                0063          ENDDO
                0064         ENDDO
                0065 
                0066       ELSEIF ( dir.eq.3 ) THEN
7db14aeb17 Jean*0067 
4237a8e6b2 Jean*0068         DO k=2,Ksize
                0069          DO j=1,sNy
                0070           DO i=1,sNx
                0071            fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
7db14aeb17 Jean*0072      &        + ( fld1(i,j,k) - fld1(i,j,k-1) )
4237a8e6b2 Jean*0073      &          * recip_drC(k)
873fffa31d Patr*0074      &          * fld2(i,j,k) * deltaTloc
4237a8e6b2 Jean*0075           ENDDO
                0076          ENDDO
                0077         ENDDO
                0078 
                0079       ENDIF
                0080 
                0081 #endif /* ALLOW_TIMEAVE */
                0082 
                0083       RETURN
                0084       END