/[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.4 - (hide annotations) (download)
Wed Sep 18 16:38:02 2002 UTC (21 years, 9 months ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint46j_pre, checkpoint46h_pre, checkpoint46g_post, checkpoint46i_post, checkpoint46h_post
Changes since 1.3: +7 -1 lines
o Include a new diagnostic variable phiHydLow for the ocean model
  - in z-coordinates, it is the bottom pressure anomaly
  - in p-coordinates, it is the sea surface elevation
  - in both cases, these variable have global drift, reflecting the mass
    drift in z-coordinates and the volume drift in p-coordinates
  - included time averaging for phiHydLow, be aware of the drift!
o depth-dependent computation of Bo_surf for pressure coordinates
  in the ocean (buoyancyRelation='OCEANICP')
  - requires a new routine (FIND_RHO_SCALAR) to compute density with only
    Theta, Salinity, and Pressure in the parameter list. This routine is
    presently contained in find_rho.F. This routine does not give the
    correct density for 'POLY3', which would be a z-dependent reference
    density.
o cleaned up find_rho
  - removed obsolete 'eqn' from the parameter list.
o added two new verification experiments: gop and goz
  (4x4 degree global ocean, 15 layers in pressure and height coordinates)

1 mlosch 1.4 C $Header: /u/gcmpack/MITgcm/pkg/timeave/timeave_statvars.F,v 1.3 2002/01/03 16:25:44 jmc Exp $
2 jmc 1.1 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 jmc 1.3 #include "GRID.h"
20 jmc 1.1 #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 jmc 1.3 #ifdef ALLOW_TIMEAVE
34    
35 jmc 1.1 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 jmc 1.3 CALL TIMEAVE_RESET(etatave, 1, bi, bj, myThid)
42 jmc 1.1 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 jmc 1.3
48     CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid)
49 adcroft 1.2 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 jmc 1.3 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 mlosch 1.4 CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
58     CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
59 jmc 1.1 CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
60 jmc 1.3 #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 jmc 1.1 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 .OR.
75     & DIFFERENT_MULTIPLE(taveFreq, myTime, myTime-deltaTClock)) THEN
76     DDTT=0.5*deltaTclock
77     ELSE
78     DDTT=deltaTclock
79     ENDIF
80    
81 jmc 1.3 C- Time Averages of single fields (no hFactor)
82     CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid)
83 jmc 1.1 CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
84     CALL TIMEAVE_CUMULATE(salttave, salt, Nr, DDTT, bi, bj, myThid)
85     CALL TIMEAVE_CUMULATE(uVeltave, uVel, Nr, DDTT, bi, bj, myThid)
86     CALL TIMEAVE_CUMULATE(vVeltave, vVel, Nr, DDTT, bi, bj, myThid)
87    
88 jmc 1.3 C- Time Averages of "double" fields (no hFactor)
89     CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0,
90     & DDTT, bi, bj, myThid)
91     CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
92     & DDTT, bi, bj, myThid)
93     CALL TIMEAVE_CUMUL_2V(UUtave, uVel, uVel, Nr, 0,
94     & DDTT, bi, bj, myThid)
95     CALL TIMEAVE_CUMUL_2V(VVtave, vVel, vVel, Nr, 0,
96     & DDTT, bi, bj, myThid)
97     c CALL TIMEAVE_CUMUL_KE(KEtave, uVel, vVel, Nr,
98     c & DDTT, bi, bj, myThid)
99    
100     #ifdef NONLIN_FRSURF
101    
102     c CALL TIMEAVE_CUMUL_FC(hFacCtave,hFacC, Nr, DDTT, bi, bj, myThid)
103     c CALL TIMEAVE_CUMUL_FC(hFacWtave,hFacW, Nr, DDTT, bi, bj, myThid)
104     c CALL TIMEAVE_CUMUL_FC(hFacStave,hFacS, Nr, DDTT, bi, bj, myThid)
105    
106     C- Time Averages of single fields (* hFactor)
107     CALL TIMEAVE_CUMUL_1VFC(hUtave, uVel, hFacW, Nr,
108     & DDTT, bi, bj, myThid)
109     CALL TIMEAVE_CUMUL_1VFC(hVtave, vVel, hFacS, Nr,
110     & DDTT, bi, bj, myThid)
111    
112     #endif /* NONLIN_FRSURF */
113    
114     C- Time Averages of "double" fields (* hFactor)
115     CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel, hFacW, Nr, 1,
116     & DDTT, bi, bj, myThid)
117     CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2,
118     & DDTT, bi, bj, myThid)
119    
120     C- Time Averages of "double" fields (no hFactor)
121     c CALL TIMEAVE_CUMUL_2V(UTtave, theta, uVel, Nr, 1,
122     c & DDTT, bi, bj, myThid)
123     c CALL TIMEAVE_CUMUL_2V(VTtave, theta, vVel, Nr, 2,
124     c & DDTT, bi, bj, myThid)
125    
126 jmc 1.1
127     C- Keep record of how much time has been integrated over
128     DO K=1,Nr
129     TimeAve_half(k,bi,bj)=TimeAve_half(k,bi,bj)+DDTT
130     ENDDO
131    
132 jmc 1.3 C- CAUTIOUS : wVel and theta are not synchronously updated during the model
133     C time-stepping, so that the time-average diagnostic of the cross product
134     C W*Theta is not perfectly accurate.
135    
136     C- Time Averages of "intermediate" fields (no hFactor)
137 jmc 1.1 IF ( myIter .NE. nIter0 ) THEN
138     CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, deltaTclock,
139     & bi, bj, myThid)
140 jmc 1.3 CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
141     & deltaTclock, bi, bj, myThid)
142 mlosch 1.4 CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1, deltaTclock,
143     & bi, bj, myThid)
144     CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
145     & phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid)
146 jmc 1.1 DO K=1,Nr
147     TimeAve_full(k,bi,bj)=TimeAve_full(k,bi,bj)+deltaTclock
148     ENDDO
149     ENDIF
150 jmc 1.3
151     #endif /* ALLOW_TIMEAVE */
152 jmc 1.1
153     RETURN
154     END

  ViewVC Help
Powered by ViewVC 1.1.22