/[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.9 - (show annotations) (download)
Thu Oct 9 04:19:20 2003 UTC (20 years, 6 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint51k_post, checkpoint51l_post, checkpoint51n_pre, checkpoint51l_pre, checkpoint51i_post, checkpoint51m_post
Branch point for: tg2-branch
Changes since 1.8: +2 -2 lines
 o first check-in for the "branch-genmake2" merge
 o verification suite as run on shelley (gcc 3.2.2):

Wed Oct  8 23:42:29 EDT 2003
                T           S           U           V
G D M    c        m  s        m  s        m  s        m  s
E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  .
N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d
2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  .

OPTFILE=NONE

Y Y Y Y 13 16 16 16  0 16 16 16 16 16 16 16 16 13 12  0  0 pass  adjustment.128x64x1
Y Y Y Y 16 16 16 16  0 16 16 16 16 16 16  0  0 16 16  0  0 pass  adjustment.cs-32x32x1
Y Y Y Y 16 16 16 16  0 16 16 16 16 16 16 22  0 16 16 22  0 pass  adjust_nlfs.cs-32x32x1
Y Y Y Y -- 13 13 16 16 13 13 13 13 16 16 16 16 16 16 16 16 N/O   advect_cs
Y Y Y Y -- 22 16 16 16 16 16 16 13 16 16 16 16 16 16 16 16 N/O   advect_xy
Y Y Y Y -- 13 16 13 16 16 16 16 16 16 16 22 16 16 16 16 16 N/O   advect_xz
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  aim.5l_cs
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 16 16 16 16 13 16 pass  aim.5l_Equatorial_Channel
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 13 16 16 13 13 16 pass  aim.5l_LatLon
Y Y Y Y 13 16 16 16 16 16 16 16 16 16 13 12 13 13 16 13 16 pass  exp0
Y Y Y Y 14 16 16 16 16 16 16 16 22 16 16 16 13 16 16 22 16 pass  exp1
Y Y Y Y 13 13 16 13 16 16 16 16 16 13 13 16 16 13 13 13 13 pass  exp2
Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass  exp4
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 22 16 16 16 22 16 pass  exp5
Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass  front_relax
Y Y Y Y 14 16 16 13 13 16 16 13 13 16 13 13 16 12 13 13 16 pass  global_ocean.90x40x15
Y Y Y Y 10 16 16 13 13 16 13 16 16 13 13 13 13 16 16 13 16 FAIL  global_ocean.cs32x15
Y Y Y Y  6 11 12 13 13 12 13 16 13  9  9  9  9 10  9  9 11 FAIL  global_ocean_pressure
Y Y Y Y 14 16 16 13 16 16 16 13 13 13 13 13 16 12 16 13 16 pass  global_with_exf
Y Y Y Y 14 16 16 16 16 16 16 16 16 11 13 22 13 16 16  9 16 pass  hs94.128x64x5
Y Y Y Y 13 16 16 16 16 16 16 16 16 11 16 16 16 13 16 22 13 pass  hs94.1x64x5
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 13 13 16 16 22 13 pass  hs94.cs-32x32x5
Y Y Y Y 10 10 16 13 13 16 16 16 22 16 13 13 13 13 13 22 13 FAIL  ideal_2D_oce
Y Y Y Y  8 16 16 16 16 16 16 16 16 13 13  8 16 16 16 16 16 FAIL  internal_wave
Y Y Y Y 14 16 16 16 16 16 16 16 16 13 13 22 13 13 13 22 16 pass  inverted_barometer
Y Y Y Y 12 16 16 16 16 16 16 16 16 16 13 12 13 13 13 13 13 FAIL  lab_sea
Y Y Y Y 11 16 16 16 16 16 16 16 13 13 13 12 13 16 13 12 13 FAIL  natl_box
Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass  plume_on_slope
Y Y Y Y 13 16 16 16 16 13 16 16 16 16 16 16 16 13 16 16 16 pass  solid-body.cs-32x32x1

1 C $Header: /u/u3/gcmpack/MITgcm/pkg/timeave/timeave_statvars.F,v 1.8.2.1 2003/10/02 18:30:08 adcroft Exp $
2 C $Name: $
3 #include "TIMEAVE_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