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

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

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


Revision 1.25 - (show annotations) (download)
Mon Dec 28 02:43:52 2009 UTC (14 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62c, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62w, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint63g, checkpoint63, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint62b
Changes since 1.24: +33 -28 lines
use simpler cumulative-time array (no level index)

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

  ViewVC Help
Powered by ViewVC 1.1.22