/[MITgcm]/MITgcm/pkg/timeave/timeave_statvars.F
ViewVC logotype

Annotation of /MITgcm/pkg/timeave/timeave_statvars.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.14 - (hide annotations) (download)
Fri Dec 5 02:33:56 2003 UTC (20 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint52d_pre, checkpoint52f_post, checkpoint52i_pre, hrcube_1, checkpoint52e_pre, checkpoint52e_post, checkpoint52f_pre, checkpoint52d_post, checkpoint52i_post, checkpoint52h_pre
Branch point for: netcdf-sm0
Changes since 1.13: +2 -51 lines
move time-Aver of surface fluxes (forcing) outside of timeave_statvars.F
 to a new S/R: timeave_surf_flux.F (called from external_forcing_surf)

1 jmc 1.14 C $Header: /u/gcmpack/MITgcm/pkg/timeave/timeave_statvars.F,v 1.13 2003/11/13 06:35:15 dimitri Exp $
2 jmc 1.1 C $Name: $
3 edhill 1.9 #include "TIMEAVE_OPTIONS.h"
4 jmc 1.1
5     SUBROUTINE TIMEAVE_STATVARS(
6     I myTime, myIter, bi, bj, myThid)
7     C /==========================================================\
8     C | SUBROUTINE TIMEAVE_STATVARS |
9     C | o Time averaging routine for eta, U, V, W, T, S, UT, VT |
10     C | in model main time-stepping |
11     C \==========================================================/
12     IMPLICIT NONE
13    
14     C == Global variables ===
15     #include "SIZE.h"
16     #include "EEPARAMS.h"
17     #include "PARAMS.h"
18     #include "DYNVARS.h"
19 jmc 1.3 #include "GRID.h"
20 jmc 1.1 #include "TIMEAVE_STATV.h"
21    
22     LOGICAL DIFFERENT_MULTIPLE
23     EXTERNAL DIFFERENT_MULTIPLE
24    
25     C == Routine arguments ==
26     C myThid - Thread number for this instance of the routine.
27     C myIter - Iteration number
28     C myTime - Current time of simulation ( s )
29     INTEGER myThid
30     INTEGER myIter, bi, bj
31     _RL myTime
32    
33 jmc 1.3 #ifdef ALLOW_TIMEAVE
34    
35 jmc 1.1 C == Local variables ==
36 dimitri 1.13 INTEGER I, J, K
37 jmc 1.1 _RL DDTT
38 dimitri 1.13 _RL tempArray (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
39 jmc 1.1
40     C- Initialize fields for the first call ever
41     IF ( myIter .EQ. nIter0 ) THEN
42 dimitri 1.13 CALL TIMEAVE_RESET(uFluxtave, 1, bi, bj, myThid)
43     CALL TIMEAVE_RESET(vFluxtave, 1, bi, bj, myThid)
44     CALL TIMEAVE_RESET(tFluxtave, 1, bi, bj, myThid)
45     CALL TIMEAVE_RESET(sFluxtave, 1, bi, bj, myThid)
46 jmc 1.3 CALL TIMEAVE_RESET(etatave, 1, bi, bj, myThid)
47 jmc 1.1 CALL TIMEAVE_RESET(thetatave, Nr, bi, bj, myThid)
48     CALL TIMEAVE_RESET(salttave, Nr, bi, bj, myThid)
49     CALL TIMEAVE_RESET(uVeltave, Nr, bi, bj, myThid)
50     CALL TIMEAVE_RESET(vVeltave, Nr, bi, bj, myThid)
51     CALL TIMEAVE_RESET(wVeltave, Nr, bi, bj, myThid)
52 jmc 1.3
53     CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid)
54 adcroft 1.2 CALL TIMEAVE_RESET(TTtave, Nr, bi, bj, myThid)
55     CALL TIMEAVE_RESET(UUtave, Nr, bi, bj, myThid)
56     CALL TIMEAVE_RESET(VVtave, Nr, bi, bj, myThid)
57 jmc 1.7 CALL TIMEAVE_RESET(UVtave, Nr, bi, bj, myThid)
58 jmc 1.3 c CALL TIMEAVE_RESET(KEtave, Nr, bi, bj, myThid)
59     CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid)
60     CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid)
61     CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid)
62 jmc 1.7 CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid)
63 edhill 1.12 #ifdef ALLOW_MOM_VECINV
64 jmc 1.8 CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid)
65     CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid)
66     #endif
67 jmc 1.3 CALL TIMEAVE_RESET(phiHydtave,Nr, bi, bj, myThid)
68 mlosch 1.4 CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
69     CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
70 jmc 1.1 CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
71 jmc 1.3 #ifdef NONLIN_FRSURF
72     CALL TIMEAVE_RESET(hUtave, Nr, bi, bj, myThid)
73     CALL TIMEAVE_RESET(hVtave, Nr, bi, bj, myThid)
74     c CALL TIMEAVE_RESET(hFacCtave, Nr, bi, bj, myThid)
75     c CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid)
76     c CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid)
77     #endif /* NONLIN_FRSURF */
78 jmc 1.1 DO K=1,Nr
79     TimeAve_half(k,bi,bj)=0.
80     TimeAve_full(k,bi,bj)=0.
81     ENDDO
82     ENDIF
83    
84     C-- Cumulate state-variables with Half or Full time step :
85 jmc 1.5 IF ( myIter .EQ. nIter0 ) THEN
86     DDTT = deltaTclock*(1. _d 0 - tave_lastIter)
87     ELSEIF (
88 jmc 1.1 & DIFFERENT_MULTIPLE(taveFreq, myTime, myTime-deltaTClock)) THEN
89 jmc 1.5 DDTT = deltaTclock*tave_lastIter
90 jmc 1.1 ELSE
91 jmc 1.5 DDTT = deltaTclock
92 jmc 1.1 ENDIF
93    
94 jmc 1.5 IF ( DDTT .NE. 0. _d 0) THEN
95    
96 jmc 1.3 C- Time Averages of single fields (no hFactor)
97     CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid)
98 jmc 1.1 CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
99     CALL TIMEAVE_CUMULATE(salttave, salt, Nr, DDTT, bi, bj, myThid)
100     CALL TIMEAVE_CUMULATE(uVeltave, uVel, Nr, DDTT, bi, bj, myThid)
101     CALL TIMEAVE_CUMULATE(vVeltave, vVel, Nr, DDTT, bi, bj, myThid)
102 jmc 1.7 CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid)
103 jmc 1.1
104 jmc 1.3 C- Time Averages of "double" fields (no hFactor)
105     CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0,
106     & DDTT, bi, bj, myThid)
107     CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
108     & DDTT, bi, bj, myThid)
109     CALL TIMEAVE_CUMUL_2V(UUtave, uVel, uVel, Nr, 0,
110     & DDTT, bi, bj, myThid)
111     CALL TIMEAVE_CUMUL_2V(VVtave, vVel, vVel, Nr, 0,
112 jmc 1.7 & DDTT, bi, bj, myThid)
113     CALL TIMEAVE_CUMUL_2V(UVtave, uVel, vVel, Nr, 12,
114 jmc 1.3 & DDTT, bi, bj, myThid)
115     c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr,
116     c & DDTT, bi, bj, myThid)
117 jmc 1.5 CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
118     & DDTT, bi, bj, myThid)
119 jmc 1.3
120     #ifdef NONLIN_FRSURF
121    
122     c CALL TIMEAVE_CUMUL_FC(hFacCtave,hFacC, Nr, DDTT, bi, bj, myThid)
123     c CALL TIMEAVE_CUMUL_FC(hFacWtave,hFacW, Nr, DDTT, bi, bj, myThid)
124     c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid)
125    
126     C- Time Averages of single fields (* hFactor)
127     CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr,
128     & DDTT, bi, bj, myThid)
129     CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr,
130     & DDTT, bi, bj, myThid)
131    
132     #endif /* NONLIN_FRSURF */
133    
134     C- Time Averages of "double" fields (* hFactor)
135     CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel, hFacW, Nr, 1,
136     & DDTT, bi, bj, myThid)
137     CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2,
138     & DDTT, bi, bj, myThid)
139    
140     C- Time Averages of "double" fields (no hFactor)
141     c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1,
142     c & DDTT, bi, bj, myThid)
143     c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2,
144     c & DDTT, bi, bj, myThid)
145    
146 jmc 1.1
147     C- Keep record of how much time has been integrated over
148     DO K=1,Nr
149     TimeAve_half(k,bi,bj)=TimeAve_half(k,bi,bj)+DDTT
150     ENDDO
151    
152 jmc 1.5 C-- end if DDTT ...
153     ENDIF
154 jmc 1.3
155     C- Time Averages of "intermediate" fields (no hFactor)
156 jmc 1.1 IF ( myIter .NE. nIter0 ) THEN
157 dimitri 1.13
158     C- Time Averages of surface fluxes
159 jmc 1.14 C <- moved to external_forcing_surf
160 dimitri 1.13
161 jmc 1.6 CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd, Nr,
162     & deltaTclock, bi, bj, myThid)
163     CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1,
164     & deltaTclock, bi, bj, myThid)
165 mlosch 1.4 CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
166     & phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid)
167 jmc 1.1 DO K=1,Nr
168     TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock
169     ENDDO
170     ENDIF
171 jmc 1.3
172     #endif /* ALLOW_TIMEAVE */
173 jmc 1.1
174     RETURN
175     END

  ViewVC Help
Powered by ViewVC 1.1.22