Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6d54cf9ca1 Ed H*0001 #include "TIMEAVE_OPTIONS.h"
5f2402791d Jean*0002 
9a31010562 Jean*0003 CBOP
                0004 C     !ROUTINE: TIMEAVE_STATV_WRITE
                0005 
                0006 C     !INTERFACE:
5f2402791d Jean*0007       SUBROUTINE TIMEAVE_STATVARS(
9a31010562 Jean*0008      I                   myTime, myIter, bi, bj, myThid )
                0009 
                0010 C     !DESCRIPTION:
                0011 C     *==========================================================*
                0012 C     | SUBROUTINE TIMEAVE_STATVARS
                0013 C     | o Time averaging routine for eta, U, V, W, T, S, UT, VT
                0014 C     |   in model main time-stepping
                0015 C     *==========================================================*
5f2402791d Jean*0016 
9a31010562 Jean*0017 C     !USES:
                0018       IMPLICIT NONE
5f2402791d Jean*0019 C     == Global variables ===
                0020 #include "SIZE.h"
                0021 #include "EEPARAMS.h"
                0022 #include "PARAMS.h"
                0023 #include "DYNVARS.h"
aa7db3783b Jean*0024 #include "GRID.h"
5f2402791d Jean*0025 #include "TIMEAVE_STATV.h"
                0026 
9a31010562 Jean*0027 C     !INPUT PARAMETERS:
5f2402791d Jean*0028 C     == Routine arguments ==
9a31010562 Jean*0029 C     myTime :: Current time of simulation ( s )
                0030 C     myIter :: Iteration number
                0031 C     myThid :: Thread number for this instance of the routine.
5f2402791d Jean*0032       _RL     myTime
9a31010562 Jean*0033       INTEGER myIter, bi, bj
                0034       INTEGER myThid
                0035 CEOP
5f2402791d Jean*0036 
aa7db3783b Jean*0037 #ifdef ALLOW_TIMEAVE
9a31010562 Jean*0038 C     !FUNCTIONS:
                0039       LOGICAL  DIFFERENT_MULTIPLE
                0040       EXTERNAL DIFFERENT_MULTIPLE
aa7db3783b Jean*0041 
9a31010562 Jean*0042 C     !LOCAL VARIABLES:
742cf4499c Jean*0043       LOGICAL dumpFiles
5f2402791d Jean*0044       _RL DDTT
742cf4499c Jean*0045 
9a31010562 Jean*0046 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0047 
5f2402791d Jean*0048 C-    Initialize fields for the first call ever
                0049       IF ( myIter .EQ. nIter0 ) THEN
9d36aec500 Dimi*0050         CALL TIMEAVE_RESET(uFluxtave, 1,  bi, bj, myThid)
                0051         CALL TIMEAVE_RESET(vFluxtave, 1,  bi, bj, myThid)
                0052         CALL TIMEAVE_RESET(tFluxtave, 1,  bi, bj, myThid)
                0053         CALL TIMEAVE_RESET(sFluxtave, 1,  bi, bj, myThid)
aa7db3783b Jean*0054         CALL TIMEAVE_RESET(etatave,   1,  bi, bj, myThid)
5f2402791d Jean*0055         CALL TIMEAVE_RESET(thetatave, Nr, bi, bj, myThid)
                0056         CALL TIMEAVE_RESET(salttave,  Nr, bi, bj, myThid)
                0057         CALL TIMEAVE_RESET(uVeltave,  Nr, bi, bj, myThid)
                0058         CALL TIMEAVE_RESET(vVeltave,  Nr, bi, bj, myThid)
                0059         CALL TIMEAVE_RESET(wVeltave,  Nr, bi, bj, myThid)
52dd3ef4ea Dimi*0060         CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
e7f0a9dbe1 Dimi*0061         CALL TIMEAVE_RESET(UTtave,    Nr, bi, bj, myThid)
                0062         CALL TIMEAVE_RESET(VTtave,    Nr, bi, bj, myThid)
                0063         CALL TIMEAVE_RESET(WTtave,    Nr, bi, bj, myThid)
03afacb44c Alis*0064         CALL TIMEAVE_RESET(UStave,    Nr, bi, bj, myThid)
                0065         CALL TIMEAVE_RESET(VStave,    Nr, bi, bj, myThid)
1a4a1e8371 Alis*0066         CALL TIMEAVE_RESET(WStave,    Nr, bi, bj, myThid)
aa7db3783b Jean*0067         CALL TIMEAVE_RESET(Eta2tave,  1,  bi, bj, myThid)
aea29c8517 Alis*0068         CALL TIMEAVE_RESET(TTtave,    Nr, bi, bj, myThid)
                0069         CALL TIMEAVE_RESET(UUtave,    Nr, bi, bj, myThid)
                0070         CALL TIMEAVE_RESET(VVtave,    Nr, bi, bj, myThid)
4237a8e6b2 Jean*0071         CALL TIMEAVE_RESET(UVtave,    Nr, bi, bj, myThid)
aa7db3783b Jean*0072 c       CALL TIMEAVE_RESET(KEtave,    Nr, bi, bj, myThid)
4237a8e6b2 Jean*0073         CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid)
99bc607d7a Ed H*0074 #ifdef ALLOW_MOM_VECINV
6add245ab0 Jean*0075         CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid)
                0076         CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid)
                0077 #endif
aa7db3783b Jean*0078         CALL TIMEAVE_RESET(phiHydtave,Nr, bi, bj, myThid)
60c223928f Mart*0079         CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
5f2402791d Jean*0080         CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
aa7db3783b Jean*0081 #ifdef NONLIN_FRSURF
                0082         CALL TIMEAVE_RESET(hUtave,    Nr, bi, bj, myThid)
                0083         CALL TIMEAVE_RESET(hVtave,    Nr, bi, bj, myThid)
                0084 c       CALL TIMEAVE_RESET(hFacCtave, Nr, bi, bj, myThid)
                0085 c       CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid)
                0086 c       CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid)
                0087 #endif /* NONLIN_FRSURF */
9a31010562 Jean*0088         timeAve_half(bi,bj) = 0. _d 0
                0089         timeAve_full(bi,bj) = 0. _d 0
5f2402791d Jean*0090       ENDIF
742cf4499c Jean*0091 
                0092 C--   Cumulate state-variables with Half or Full time step :
f829564431 Jean*0093       IF ( myIter .EQ. nIter0 ) THEN
                0094         DDTT = deltaTclock*(1. _d 0 - tave_lastIter)
742cf4499c Jean*0095       ELSE
                0096         DDTT = deltaTclock
                0097         dumpFiles = DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)
fc64655a31 Dimi*0098 #ifdef ALLOW_CAL
742cf4499c Jean*0099         IF ( useCAL ) THEN
7a31080eb8 Jean*0100           CALL CAL_TIME2DUMP( zeroRL, taveFreq, deltaTClock,
742cf4499c Jean*0101      U                        dumpFiles,
                0102      I                        myTime, myIter, myThid )
                0103         ENDIF
                0104 #endif /* ALLOW_CAL */
                0105         IF ( dumpFiles ) DDTT = deltaTclock*tave_lastIter
5f2402791d Jean*0106       ENDIF
                0107 
f829564431 Jean*0108       IF ( DDTT .NE. 0. _d 0) THEN
                0109 
aa7db3783b Jean*0110 C-    Time Averages of single fields (no hFactor)
                0111       CALL TIMEAVE_CUMULATE(etatave,  etaN,  1 , DDTT, bi, bj, myThid)
5f2402791d Jean*0112       CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
                0113       CALL TIMEAVE_CUMULATE(salttave, salt,  Nr, DDTT, bi, bj, myThid)
                0114       CALL TIMEAVE_CUMULATE(uVeltave, uVel,  Nr, DDTT, bi, bj, myThid)
                0115       CALL TIMEAVE_CUMULATE(vVeltave, vVel,  Nr, DDTT, bi, bj, myThid)
4237a8e6b2 Jean*0116       CALL TIMEAVE_CUMULATE(wVeltave, wVel,  Nr, DDTT, bi, bj, myThid)
5f2402791d Jean*0117 
aa7db3783b Jean*0118 C-    Time Averages of "double" fields (no hFactor)
                0119       CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1,  0,
                0120      &     DDTT, bi, bj, myThid)
                0121       CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
                0122      &     DDTT, bi, bj, myThid)
                0123       CALL TIMEAVE_CUMUL_2V(UUtave, uVel,  uVel, Nr, 0,
                0124      &     DDTT, bi, bj, myThid)
                0125       CALL TIMEAVE_CUMUL_2V(VVtave, vVel,  vVel, Nr, 0,
                0126      &     DDTT, bi, bj, myThid)
4237a8e6b2 Jean*0127       CALL TIMEAVE_CUMUL_2V(UVtave, uVel,  vVel, Nr, 12,
                0128      &     DDTT, bi, bj, myThid)
aa7db3783b Jean*0129 c     CALL TIMEAVE_CUMUL_KE(KEtave, uVel,  vVel, Nr,
                0130 c    &     DDTT, bi, bj, myThid)
f829564431 Jean*0131       CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
                0132      &     DDTT, bi, bj, myThid)
1a4a1e8371 Alis*0133       CALL TIMEAVE_CUMUL_2V(WStave, salt,  wVel, Nr, 3,
                0134      &     DDTT, bi, bj, myThid)
aa7db3783b Jean*0135 
                0136 #ifdef NONLIN_FRSURF
                0137 
                0138 c     CALL TIMEAVE_CUMUL_FC(hFacCtave,hFacC, Nr, DDTT, bi, bj, myThid)
                0139 c     CALL TIMEAVE_CUMUL_FC(hFacWtave,hFacW, Nr, DDTT, bi, bj, myThid)
                0140 c     CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid)
                0141 
                0142 C-    Time Averages of single fields (* hFactor)
                0143       CALL TIMEAVE_CUMUL_1VFC(hUtave,  uVel,  hFacW, Nr,
                0144      &     DDTT, bi, bj, myThid)
                0145       CALL TIMEAVE_CUMUL_1VFC(hVtave,  vVel,  hFacS, Nr,
                0146      &     DDTT, bi, bj, myThid)
                0147 
                0148 #endif /* NONLIN_FRSURF */
                0149 
                0150 C-    Time Averages of "double" fields (* hFactor)
                0151       CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel,  hFacW, Nr, 1,
                0152      &     DDTT, bi, bj, myThid)
                0153       CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel,  hFacS, Nr, 2,
                0154      &     DDTT, bi, bj, myThid)
03afacb44c Alis*0155       CALL TIMEAVE_CUMUL_2VFC(UStave, salt, uVel,  hFacW, Nr, 1,
                0156      &     DDTT, bi, bj, myThid)
                0157       CALL TIMEAVE_CUMUL_2VFC(VStave, salt, vVel,  hFacS, Nr, 2,
                0158      &     DDTT, bi, bj, myThid)
aa7db3783b Jean*0159 
                0160 C-    Time Averages of "double" fields (no hFactor)
                0161 c     CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1,
                0162 c    &     DDTT, bi, bj, myThid)
                0163 c     CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2,
                0164 c    &     DDTT, bi, bj, myThid)
03afacb44c Alis*0165 c     CALL TIMEAVE_CUMUL_2V(UStave, salt, uVel, Nr, 1,
                0166 c    &     DDTT, bi, bj, myThid)
                0167 c     CALL TIMEAVE_CUMUL_2V(VStave, salt, vVel, Nr, 2,
                0168 c    &     DDTT, bi, bj, myThid)
5f2402791d Jean*0169 
                0170 C-    Keep record of how much time has been integrated over
9a31010562 Jean*0171       timeAve_half(bi,bj) = timeAve_half(bi,bj)+DDTT
5f2402791d Jean*0172 
f829564431 Jean*0173 C-- end if DDTT ...
                0174       ENDIF
aa7db3783b Jean*0175 
                0176 C-    Time Averages of "intermediate" fields (no hFactor)
5f2402791d Jean*0177       IF ( myIter .NE. nIter0 ) THEN
742cf4499c Jean*0178 
9d36aec500 Dimi*0179 C-    Time Averages of surface fluxes
1ce64188ac Jean*0180 C     <- moved to external_forcing_surf
9d36aec500 Dimi*0181 
52a99445be Jean*0182         CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1,
                0183      &                                   deltaTclock, bi, bj, myThid)
742cf4499c Jean*0184         CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd,  Nr,
52dd3ef4ea Dimi*0185      &                                   deltaTclock, bi, bj, myThid)
742cf4499c Jean*0186         CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
60c223928f Mart*0187      &       phiHydLow,phiHydLow, 1,  0, deltaTclock, bi, bj, myThid)
9a31010562 Jean*0188         timeAve_full(bi,bj) = timeAve_full(bi,bj)+deltaTclock
5f2402791d Jean*0189       ENDIF
                0190 
742cf4499c Jean*0191 #endif /* ALLOW_TIMEAVE */
aa7db3783b Jean*0192 
5f2402791d Jean*0193       RETURN
                0194       END