/[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.23 - (hide annotations) (download)
Fri Nov 4 01:35:33 2005 UTC (18 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58b_post, checkpoint57y_post, checkpoint58, checkpoint58a_post, checkpoint57z_post, checkpoint57y_pre, checkpoint57x_post
Changes since 1.22: +5 -4 lines
remove unused variables (reduces number of compiler warning)

1 jmc 1.23 C $Header: /u/gcmpack/MITgcm/pkg/timeave/timeave_statvars.F,v 1.22 2005/08/24 23:17:22 jmc 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 jmc 1.21 LOGICAL DIFFERENT_MULTIPLE
23     EXTERNAL DIFFERENT_MULTIPLE
24 jmc 1.1
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 jmc 1.23 INTEGER k
37 jmc 1.1 _RL DDTT
38 jmc 1.23 #ifdef ALLOW_CAL
39 dimitri 1.19 INTEGER thisdate(4), prevdate(4)
40 jmc 1.23 #endif
41 jmc 1.1
42     C- Initialize fields for the first call ever
43     IF ( myIter .EQ. nIter0 ) THEN
44 dimitri 1.13 CALL TIMEAVE_RESET(uFluxtave, 1, bi, bj, myThid)
45     CALL TIMEAVE_RESET(vFluxtave, 1, bi, bj, myThid)
46     CALL TIMEAVE_RESET(tFluxtave, 1, bi, bj, myThid)
47     CALL TIMEAVE_RESET(sFluxtave, 1, bi, bj, myThid)
48 jmc 1.3 CALL TIMEAVE_RESET(etatave, 1, bi, bj, myThid)
49 jmc 1.1 CALL TIMEAVE_RESET(thetatave, Nr, bi, bj, myThid)
50     CALL TIMEAVE_RESET(salttave, Nr, bi, bj, myThid)
51     CALL TIMEAVE_RESET(uVeltave, Nr, bi, bj, myThid)
52     CALL TIMEAVE_RESET(vVeltave, Nr, bi, bj, myThid)
53     CALL TIMEAVE_RESET(wVeltave, Nr, bi, bj, myThid)
54 dimitri 1.18 CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
55 dimitri 1.15 CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid)
56     CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid)
57     CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid)
58 adcroft 1.16 CALL TIMEAVE_RESET(UStave, Nr, bi, bj, myThid)
59     CALL TIMEAVE_RESET(VStave, Nr, bi, bj, myThid)
60 adcroft 1.17 CALL TIMEAVE_RESET(WStave, Nr, bi, bj, myThid)
61 jmc 1.3 CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid)
62 adcroft 1.2 CALL TIMEAVE_RESET(TTtave, Nr, bi, bj, myThid)
63     CALL TIMEAVE_RESET(UUtave, Nr, bi, bj, myThid)
64     CALL TIMEAVE_RESET(VVtave, Nr, bi, bj, myThid)
65 jmc 1.7 CALL TIMEAVE_RESET(UVtave, Nr, bi, bj, myThid)
66 jmc 1.3 c CALL TIMEAVE_RESET(KEtave, Nr, bi, bj, myThid)
67 jmc 1.7 CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid)
68 edhill 1.12 #ifdef ALLOW_MOM_VECINV
69 jmc 1.8 CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid)
70     CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid)
71     #endif
72 jmc 1.3 CALL TIMEAVE_RESET(phiHydtave,Nr, bi, bj, myThid)
73 mlosch 1.4 CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
74 jmc 1.1 CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
75 jmc 1.3 #ifdef NONLIN_FRSURF
76     CALL TIMEAVE_RESET(hUtave, Nr, bi, bj, myThid)
77     CALL TIMEAVE_RESET(hVtave, Nr, bi, bj, myThid)
78     c CALL TIMEAVE_RESET(hFacCtave, Nr, bi, bj, myThid)
79     c CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid)
80     c CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid)
81     #endif /* NONLIN_FRSURF */
82 jmc 1.23 DO k=1,Nr
83 jmc 1.1 TimeAve_half(k,bi,bj)=0.
84     TimeAve_full(k,bi,bj)=0.
85     ENDDO
86     ENDIF
87    
88     C-- Cumulate state-variables with Half or Full time step :
89 dimitri 1.19 DDTT = deltaTclock
90 jmc 1.5 IF ( myIter .EQ. nIter0 ) THEN
91     DDTT = deltaTclock*(1. _d 0 - tave_lastIter)
92 dimitri 1.19 #ifdef ALLOW_CAL
93     ELSEIF ( calendarDumps .AND. (
94     & ( taveFreq.GE. 2592000 .AND. taveFreq.LE. 2678400 ) .OR.
95     & ( taveFreq.GE.31104000 .AND. taveFreq.LE.31968000 ))) THEN
96     C-- Convert approximate months (30-31 days) and years (360-372 days)
97     C to exact calendar months and years.
98     C- First determine calendar dates for this and previous time step.
99     call cal_GetDate( myiter ,mytime ,thisdate,mythid )
100     call cal_GetDate( myiter-1,mytime-deltaTClock,prevdate,mythid )
101     C- Monthly taveFreq:
102     IF(taveFreq.GE. 2592000 .AND. taveFreq.LE. 2678400 .AND.
103     & (thisdate(1)-prevdate(1)).GT.50 )DDTT=deltaTclock*tave_lastIter
104     C- Yearly taveFreq:
105     IF(taveFreq.GE.31104000 .AND. taveFreq.LE.31968000 .AND.
106     & (thisdate(1)-prevdate(1)).GT.5000)DDTT=deltaTclock*tave_lastIter
107     #endif
108 jmc 1.21 ELSEIF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock) ) THEN
109 jmc 1.5 DDTT = deltaTclock*tave_lastIter
110 jmc 1.1 ENDIF
111    
112 jmc 1.5 IF ( DDTT .NE. 0. _d 0) THEN
113    
114 jmc 1.3 C- Time Averages of single fields (no hFactor)
115     CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid)
116 jmc 1.1 CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
117     CALL TIMEAVE_CUMULATE(salttave, salt, Nr, DDTT, bi, bj, myThid)
118     CALL TIMEAVE_CUMULATE(uVeltave, uVel, Nr, DDTT, bi, bj, myThid)
119     CALL TIMEAVE_CUMULATE(vVeltave, vVel, Nr, DDTT, bi, bj, myThid)
120 jmc 1.7 CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid)
121 jmc 1.1
122 jmc 1.3 C- Time Averages of "double" fields (no hFactor)
123     CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0,
124     & DDTT, bi, bj, myThid)
125     CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
126     & DDTT, bi, bj, myThid)
127     CALL TIMEAVE_CUMUL_2V(UUtave, uVel, uVel, Nr, 0,
128     & DDTT, bi, bj, myThid)
129     CALL TIMEAVE_CUMUL_2V(VVtave, vVel, vVel, Nr, 0,
130 jmc 1.7 & DDTT, bi, bj, myThid)
131     CALL TIMEAVE_CUMUL_2V(UVtave, uVel, vVel, Nr, 12,
132 jmc 1.3 & DDTT, bi, bj, myThid)
133     c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr,
134     c & DDTT, bi, bj, myThid)
135 jmc 1.5 CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
136 adcroft 1.17 & DDTT, bi, bj, myThid)
137     CALL TIMEAVE_CUMUL_2V(WStave, salt, wVel, Nr, 3,
138 jmc 1.5 & DDTT, bi, bj, myThid)
139 jmc 1.3
140     #ifdef NONLIN_FRSURF
141    
142     c CALL TIMEAVE_CUMUL_FC(hFacCtave,hFacC, Nr, DDTT, bi, bj, myThid)
143     c CALL TIMEAVE_CUMUL_FC(hFacWtave,hFacW, Nr, DDTT, bi, bj, myThid)
144     c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid)
145    
146     C- Time Averages of single fields (* hFactor)
147     CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr,
148     & DDTT, bi, bj, myThid)
149     CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr,
150     & DDTT, bi, bj, myThid)
151    
152     #endif /* NONLIN_FRSURF */
153    
154     C- Time Averages of "double" fields (* hFactor)
155     CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel, hFacW, Nr, 1,
156     & DDTT, bi, bj, myThid)
157     CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2,
158     & DDTT, bi, bj, myThid)
159 adcroft 1.16 CALL TIMEAVE_CUMUL_2VFC(UStave, salt, uVel, hFacW, Nr, 1,
160     & DDTT, bi, bj, myThid)
161     CALL TIMEAVE_CUMUL_2VFC(VStave, salt, vVel, hFacS, Nr, 2,
162     & DDTT, bi, bj, myThid)
163 jmc 1.3
164     C- Time Averages of "double" fields (no hFactor)
165     c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1,
166     c & DDTT, bi, bj, myThid)
167     c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2,
168 adcroft 1.16 c & DDTT, bi, bj, myThid)
169     c CALL TIMEAVE_CUMUL_2V(UStave, salt, uVel, Nr, 1,
170     c & DDTT, bi, bj, myThid)
171     c CALL TIMEAVE_CUMUL_2V(VStave, salt, vVel, Nr, 2,
172 jmc 1.3 c & DDTT, bi, bj, myThid)
173 jmc 1.1
174     C- Keep record of how much time has been integrated over
175     DO K=1,Nr
176     TimeAve_half(k,bi,bj)=TimeAve_half(k,bi,bj)+DDTT
177     ENDDO
178    
179 jmc 1.5 C-- end if DDTT ...
180     ENDIF
181 jmc 1.3
182     C- Time Averages of "intermediate" fields (no hFactor)
183 jmc 1.1 IF ( myIter .NE. nIter0 ) THEN
184 dimitri 1.13
185     C- Time Averages of surface fluxes
186 jmc 1.14 C <- moved to external_forcing_surf
187 dimitri 1.13
188 dimitri 1.18 CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1,
189     & deltaTclock, bi, bj, myThid)
190 jmc 1.6 CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd, Nr,
191     & deltaTclock, bi, bj, myThid)
192 mlosch 1.4 CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
193     & phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid)
194 jmc 1.1 DO K=1,Nr
195     TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock
196     ENDDO
197     ENDIF
198 jmc 1.3
199     #endif /* ALLOW_TIMEAVE */
200 jmc 1.1
201     RETURN
202     END

  ViewVC Help
Powered by ViewVC 1.1.22