/[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.8 - (show annotations) (download)
Sun Aug 3 02:58:29 2003 UTC (20 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint51f_post, checkpoint51j_post, checkpoint51h_pre, branchpoint-genmake2, checkpoint51i_pre, checkpoint51e_post, checkpoint51f_pre, checkpoint51g_post
Branch point for: branch-genmake2
Changes since 1.7: +5 -1 lines
add time-ave diagnostic of relative vorticity advection

1 C $Header: /u/gcmpack/MITgcm/pkg/timeave/timeave_statvars.F,v 1.7 2003/05/01 22:17:42 jmc Exp $
2 C $Name: $
3 #include "CPP_OPTIONS.h"
4
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 #include "GRID.h"
20 #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 #ifdef ALLOW_TIMEAVE
34
35 C == Local variables ==
36 INTEGER K
37 _RL DDTT
38
39 C- Initialize fields for the first call ever
40 IF ( myIter .EQ. nIter0 ) THEN
41 CALL TIMEAVE_RESET(etatave, 1, bi, bj, myThid)
42 CALL TIMEAVE_RESET(thetatave, Nr, bi, bj, myThid)
43 CALL TIMEAVE_RESET(salttave, Nr, bi, bj, myThid)
44 CALL TIMEAVE_RESET(uVeltave, Nr, bi, bj, myThid)
45 CALL TIMEAVE_RESET(vVeltave, Nr, bi, bj, myThid)
46 CALL TIMEAVE_RESET(wVeltave, Nr, bi, bj, myThid)
47
48 CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid)
49 CALL TIMEAVE_RESET(TTtave, Nr, bi, bj, myThid)
50 CALL TIMEAVE_RESET(UUtave, Nr, bi, bj, myThid)
51 CALL TIMEAVE_RESET(VVtave, Nr, bi, bj, myThid)
52 CALL TIMEAVE_RESET(UVtave, Nr, bi, bj, myThid)
53 c CALL TIMEAVE_RESET(KEtave, Nr, bi, bj, myThid)
54 CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid)
55 CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid)
56 CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid)
57 CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid)
58 #ifndef DISABLE_MOM_VECINV
59 CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid)
60 CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid)
61 #endif
62 CALL TIMEAVE_RESET(phiHydtave,Nr, bi, bj, myThid)
63 CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
64 CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
65 CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
66 #ifdef NONLIN_FRSURF
67 CALL TIMEAVE_RESET(hUtave, Nr, bi, bj, myThid)
68 CALL TIMEAVE_RESET(hVtave, Nr, bi, bj, myThid)
69 c CALL TIMEAVE_RESET(hFacCtave, Nr, bi, bj, myThid)
70 c CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid)
71 c CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid)
72 #endif /* NONLIN_FRSURF */
73 DO K=1,Nr
74 TimeAve_half(k,bi,bj)=0.
75 TimeAve_full(k,bi,bj)=0.
76 ENDDO
77 ENDIF
78
79 C-- Cumulate state-variables with Half or Full time step :
80 IF ( myIter .EQ. nIter0 ) THEN
81 DDTT = deltaTclock*(1. _d 0 - tave_lastIter)
82 ELSEIF (
83 & DIFFERENT_MULTIPLE(taveFreq, myTime, myTime-deltaTClock)) THEN
84 DDTT = deltaTclock*tave_lastIter
85 ELSE
86 DDTT = deltaTclock
87 ENDIF
88
89 IF ( DDTT .NE. 0. _d 0) THEN
90
91 C- Time Averages of single fields (no hFactor)
92 CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid)
93 CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
94 CALL TIMEAVE_CUMULATE(salttave, salt, Nr, DDTT, bi, bj, myThid)
95 CALL TIMEAVE_CUMULATE(uVeltave, uVel, Nr, DDTT, bi, bj, myThid)
96 CALL TIMEAVE_CUMULATE(vVeltave, vVel, Nr, DDTT, bi, bj, myThid)
97 CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid)
98
99 C- Time Averages of "double" fields (no hFactor)
100 CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0,
101 & DDTT, bi, bj, myThid)
102 CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
103 & DDTT, bi, bj, myThid)
104 CALL TIMEAVE_CUMUL_2V(UUtave, uVel, uVel, Nr, 0,
105 & DDTT, bi, bj, myThid)
106 CALL TIMEAVE_CUMUL_2V(VVtave, vVel, vVel, Nr, 0,
107 & DDTT, bi, bj, myThid)
108 CALL TIMEAVE_CUMUL_2V(UVtave, uVel, vVel, Nr, 12,
109 & DDTT, bi, bj, myThid)
110 c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr,
111 c & DDTT, bi, bj, myThid)
112 CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
113 & DDTT, bi, bj, myThid)
114
115 #ifdef NONLIN_FRSURF
116
117 c CALL TIMEAVE_CUMUL_FC(hFacCtave,hFacC, Nr, DDTT, bi, bj, myThid)
118 c CALL TIMEAVE_CUMUL_FC(hFacWtave,hFacW, Nr, DDTT, bi, bj, myThid)
119 c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid)
120
121 C- Time Averages of single fields (* hFactor)
122 CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr,
123 & DDTT, bi, bj, myThid)
124 CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr,
125 & DDTT, bi, bj, myThid)
126
127 #endif /* NONLIN_FRSURF */
128
129 C- Time Averages of "double" fields (* hFactor)
130 CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel, hFacW, Nr, 1,
131 & DDTT, bi, bj, myThid)
132 CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2,
133 & DDTT, bi, bj, myThid)
134
135 C- Time Averages of "double" fields (no hFactor)
136 c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1,
137 c & DDTT, bi, bj, myThid)
138 c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2,
139 c & DDTT, bi, bj, myThid)
140
141
142 C- Keep record of how much time has been integrated over
143 DO K=1,Nr
144 TimeAve_half(k,bi,bj)=TimeAve_half(k,bi,bj)+DDTT
145 ENDDO
146
147 C-- end if DDTT ...
148 ENDIF
149
150 C- Time Averages of "intermediate" fields (no hFactor)
151 IF ( myIter .NE. nIter0 ) THEN
152 CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd, Nr,
153 & deltaTclock, bi, bj, myThid)
154 CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1,
155 & deltaTclock, bi, bj, myThid)
156 CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
157 & phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid)
158 DO K=1,Nr
159 TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock
160 ENDDO
161 ENDIF
162
163 #endif /* ALLOW_TIMEAVE */
164
165 RETURN
166 END

  ViewVC Help
Powered by ViewVC 1.1.22