/[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.5 - (show annotations) (download)
Mon Oct 7 16:29:04 2002 UTC (21 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint47e_post, checkpoint46l_post, checkpoint47c_post, checkpoint48e_post, checkpoint46l_pre, checkpoint48b_post, checkpoint48c_pre, checkpoint47d_pre, checkpoint47a_post, checkpoint48d_pre, checkpoint47i_post, checkpoint47d_post, checkpoint48d_post, checkpoint48f_post, checkpoint47g_post, checkpoint46j_post, checkpoint46k_post, checkpoint48a_post, checkpoint47j_post, branch-exfmods-tag, checkpoint48c_post, checkpoint47b_post, checkpoint46m_post, checkpoint47f_post, checkpoint47, checkpoint48, checkpoint47h_post
Branch point for: branch-exfmods-curt
Changes since 1.4: +13 -11 lines
* update timeave pkg for wVel diagnostic ; put convertEmP2rUnit in PARAMS.h

1 C $Header: /u/gcmpack/MITgcm/pkg/timeave/timeave_statvars.F,v 1.4 2002/09/18 16:38:02 mlosch 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 c CALL TIMEAVE_RESET(KEtave, Nr, bi, bj, myThid)
53 CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid)
54 CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid)
55 CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid)
56 CALL TIMEAVE_RESET(phiHydtave,Nr, bi, bj, myThid)
57 CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
58 CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
59 CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
60 #ifdef NONLIN_FRSURF
61 CALL TIMEAVE_RESET(hUtave, Nr, bi, bj, myThid)
62 CALL TIMEAVE_RESET(hVtave, Nr, bi, bj, myThid)
63 c CALL TIMEAVE_RESET(hFacCtave, Nr, bi, bj, myThid)
64 c CALL TIMEAVE_RESET(hFacWtave, Nr, bi, bj, myThid)
65 c CALL TIMEAVE_RESET(hFacStave, Nr, bi, bj, myThid)
66 #endif /* NONLIN_FRSURF */
67 DO K=1,Nr
68 TimeAve_half(k,bi,bj)=0.
69 TimeAve_full(k,bi,bj)=0.
70 ENDDO
71 ENDIF
72
73 C-- Cumulate state-variables with Half or Full time step :
74 IF ( myIter .EQ. nIter0 ) THEN
75 DDTT = deltaTclock*(1. _d 0 - tave_lastIter)
76 ELSEIF (
77 & DIFFERENT_MULTIPLE(taveFreq, myTime, myTime-deltaTClock)) THEN
78 DDTT = deltaTclock*tave_lastIter
79 ELSE
80 DDTT = deltaTclock
81 ENDIF
82
83 IF ( DDTT .NE. 0. _d 0) THEN
84
85 C- Time Averages of single fields (no hFactor)
86 CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid)
87 CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
88 CALL TIMEAVE_CUMULATE(salttave, salt, Nr, DDTT, bi, bj, myThid)
89 CALL TIMEAVE_CUMULATE(uVeltave, uVel, Nr, DDTT, bi, bj, myThid)
90 CALL TIMEAVE_CUMULATE(vVeltave, vVel, Nr, DDTT, bi, bj, myThid)
91 CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid)
92
93 C- Time Averages of "double" fields (no hFactor)
94 CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0,
95 & DDTT, bi, bj, myThid)
96 CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
97 & DDTT, bi, bj, myThid)
98 CALL TIMEAVE_CUMUL_2V(UUtave, uVel, uVel, Nr, 0,
99 & DDTT, bi, bj, myThid)
100 CALL TIMEAVE_CUMUL_2V(VVtave, vVel, vVel, Nr, 0,
101 & DDTT, bi, bj, myThid)
102 c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr,
103 c & DDTT, bi, bj, myThid)
104 CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
105 & DDTT, bi, bj, myThid)
106
107 #ifdef NONLIN_FRSURF
108
109 c CALL TIMEAVE_CUMUL_FC(hFacCtave,hFacC, Nr, DDTT, bi, bj, myThid)
110 c CALL TIMEAVE_CUMUL_FC(hFacWtave,hFacW, Nr, DDTT, bi, bj, myThid)
111 c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid)
112
113 C- Time Averages of single fields (* hFactor)
114 CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr,
115 & DDTT, bi, bj, myThid)
116 CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr,
117 & DDTT, bi, bj, myThid)
118
119 #endif /* NONLIN_FRSURF */
120
121 C- Time Averages of "double" fields (* hFactor)
122 CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel, hFacW, Nr, 1,
123 & DDTT, bi, bj, myThid)
124 CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2,
125 & DDTT, bi, bj, myThid)
126
127 C- Time Averages of "double" fields (no hFactor)
128 c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1,
129 c & DDTT, bi, bj, myThid)
130 c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2,
131 c & DDTT, bi, bj, myThid)
132
133
134 C- Keep record of how much time has been integrated over
135 DO K=1,Nr
136 TimeAve_half(k,bi,bj)=TimeAve_half(k,bi,bj)+DDTT
137 ENDDO
138
139 C-- end if DDTT ...
140 ENDIF
141
142 C- Time Averages of "intermediate" fields (no hFactor)
143 IF ( myIter .NE. nIter0 ) THEN
144 CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1, deltaTclock,
145 & bi, bj, myThid)
146 CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
147 & phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid)
148 DO K=1,Nr
149 TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock
150 ENDDO
151 ENDIF
152
153 #endif /* ALLOW_TIMEAVE */
154
155 RETURN
156 END

  ViewVC Help
Powered by ViewVC 1.1.22