/[MITgcm]/MITgcm/diags/src/write_time_averages.F
ViewVC logotype

Annotation of /MITgcm/diags/src/write_time_averages.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.12 - (hide annotations) (download)
Sun Feb 4 14:38:41 2001 UTC (23 years, 4 months ago) by cnh
Branch: MAIN
CVS Tags: checkpoint35
Changes since 1.11: +2 -0 lines
Made sure each .F and .h file had
the CVS keywords Header and Name at its start.
Most had header but very few currently have Name, so
lots of changes!

1 cnh 1.12 C $Header: $
2     C $Name: $
3 adcroft 1.1 #include "CPP_EEOPTIONS.h"
4    
5     SUBROUTINE WRITE_TIME_AVERAGES(myCurrentTime, myIter, myThid)
6     C /==========================================================\
7     C | SUBROUTINE WRITE_TIME_AVERAGES |
8     C | |
9     C \==========================================================/
10 adcroft 1.6 IMPLICIT NONE
11 adcroft 1.1
12     C == Global variables ===
13     #include "SIZE.h"
14     #include "EEPARAMS.h"
15     #include "PARAMS.h"
16     #include "AVER.h"
17     #include "DYNVARS.h"
18    
19     LOGICAL DIFFERENT_MULTIPLE
20     EXTERNAL DIFFERENT_MULTIPLE
21 adcroft 1.2 INTEGER IO_ERRCOUNT
22     EXTERNAL IO_ERRCOUNT
23 adcroft 1.1
24     C == Routine arguments ==
25     C myThid - Thread number for this instance of the routine.
26     C myIter - Iteration number
27     C myCurrentTime - Current time of simulation ( s )
28     INTEGER myThid
29     INTEGER myIter
30 adcroft 1.7 _RL myCurrentTime
31 adcroft 1.1 INTEGER prevPrec
32    
33     C == Local variables ==
34     C suff - Hold suffix part of a filename
35     C TimeAve - total time over average
36     CHARACTER*(MAX_LEN_FNAM) suff
37 adcroft 1.7 _RL DDTT
38 adcroft 1.1 INTEGER bi,bj,k
39 adcroft 1.2 INTEGER beginIOErrCount
40     INTEGER endIOErrCount
41     CHARACTER*(MAX_LEN_MBUF) msgBuf
42 adcroft 1.1
43     C Final Time Averages and Dump Files if needed
44     IF ( myIter.NE.nIter0 .AND.
45 cnh 1.5 & DIFFERENT_MULTIPLE(taveFreq,myCurrentTime,
46     & myCurrentTime-deltaTClock)
47 adcroft 1.1 & ) THEN
48    
49     WRITE(suff,'(I10.10)') myIter
50    
51     C Normalize by integrated time
52     DO bj = myByLo(myThid), myByHi(myThid)
53     DO bi = myBxLo(myThid), myBxHi(myThid)
54 cnh 1.4 DO k=1,Nr
55 adcroft 1.1 CALL TIMEAVER_FINAL_XYZ(thetatave,timeave,bi,bj,K,myThid)
56     CALL TIMEAVER_FINAL_XYZ(salttave,timeave,bi,bj,K,myThid)
57     CALL TIMEAVER_FINAL_XYZ(uVeltave,timeave,bi,bj,K,myThid)
58     CALL TIMEAVER_FINAL_XYZ(vVeltave,timeave,bi,bj,K,myThid)
59     CALL TIMEAVER_FINAL_XYZ(uttave,timeave,bi,bj,K,myThid)
60     CALL TIMEAVER_FINAL_XYZ(vttave,timeave,bi,bj,K,myThid)
61 heimbach 1.11 CALL TIMEAVER_FINAL_XYZ(k13tave,intertimeave,bi,bj,K,myThid)
62     CALL TIMEAVER_FINAL_XYZ(k23tave,intertimeave,bi,bj,K,myThid)
63 adcroft 1.1 CALL TIMEAVER_FINAL_XYZ(wVeltave,intertimeave,bi,bj,K,myThid)
64 adcroft 1.8 CALL TIMEAVER_FINAL_XYZ(ConvectCountTave,intertimeave,
65     & bi,bj,K,myThid)
66 adcroft 1.1 ENDDO
67 heimbach 1.11 CALL TIMEAVER_FINAL_XY(KapGMtave,intertimeave,bi,bj,myThid)
68 adcroft 1.1 ENDDO
69     ENDDO
70    
71     C Write to files
72     _BARRIER
73     _BEGIN_MASTER( myThid )
74 adcroft 1.2
75     C-- Set IO "context" for writing state
76 adcroft 1.9 #ifdef USE_DFILE
77 adcroft 1.2 CALL DFILE_SET_RW
78     CALL DFILE_SET_CONT_ON_ERROR
79 adcroft 1.9 #endif
80 adcroft 1.2 C-- Read IO error counter
81     beginIOErrCount = IO_ERRCOUNT(myThid)
82 adcroft 1.1 prevPrec = writeBinaryPrec
83     writeBinaryPrec = precFloat32
84     CALL WRITE_FLD_XYZ_RL('Ttave.',suff,thetatave,myIter,myThid)
85     CALL WRITE_FLD_XYZ_RL('Stave.',suff,salttave,myIter,myThid)
86     CALL WRITE_FLD_XYZ_RL('uVeltave.',suff,uVeltave,myIter,myThid)
87     CALL WRITE_FLD_XYZ_RL('vVeltave.',suff,vVeltave,myIter,myThid)
88     CALL WRITE_FLD_XYZ_RL('UTtave.',suff,uttave,myIter,myThid)
89     CALL WRITE_FLD_XYZ_RL('VTtave.',suff,vttave,myIter,myThid)
90 heimbach 1.11 CALL WRITE_FLD_XYZ_RL('K13tave.',suff,k13tave,myIter,myThid)
91     CALL WRITE_FLD_XYZ_RL('K23tave.',suff,k23tave,myIter,myThid)
92 adcroft 1.1 CALL WRITE_FLD_XYZ_RL('WTtave.',suff,wVeltave,myIter,myThid)
93 heimbach 1.11 CALL WRITE_FLD_XY_RL('KapGMtave.',suff,KapGMtave,myIter,myThid)
94 adcroft 1.8 CALL WRITE_FLD_XYZ_RL('ConvectCntTave.',suff,ConvectCountTave,
95     & myIter,myThid)
96 adcroft 1.1 writeBinaryPrec = prevPrec
97 adcroft 1.2 C-- Reread IO error counter
98     endIOErrCount = IO_ERRCOUNT(myThid)
99    
100     C-- Check for IO errors
101     IF ( endIOErrCount .NE. beginIOErrCount ) THEN
102     WRITE(msgBuf,'(A)') 'S/R WRITE_TIME_AVERAGES'
103     CALL PRINT_ERROR( msgBuf, 1 )
104     WRITE(msgBuf,'(A)') 'Error writing out data'
105     CALL PRINT_ERROR( msgBuf, 1 )
106     WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
107     CALL PRINT_ERROR( msgBuf, 1 )
108     ELSE
109 cnh 1.5 WRITE(msgBuf,'(A,I10)')
110     & '// Time-average data written, t-step', myIter
111     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
112     & SQUEEZE_RIGHT, 1 )
113 adcroft 1.2 WRITE(msgBuf,'(A)') ' '
114 cnh 1.5 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
115     & SQUEEZE_RIGHT, 1 )
116 adcroft 1.2 ENDIF
117    
118 adcroft 1.1 _END_MASTER( myThid )
119     _BARRIER
120    
121     DO bj = myByLo(myThid), myByHi(myThid)
122     DO bi = myBxLo(myThid), myBxHi(myThid)
123 cnh 1.4 DO k=1,Nr
124 adcroft 1.1
125     C Reset the averages to zero
126     CALL TIMEAVER_INI_XYZ(thetatave, bi,bj,K,myThid)
127     CALL TIMEAVER_INI_XYZ(salttave, bi,bj,K,myThid)
128     CALL TIMEAVER_INI_XYZ(uVeltave, bi,bj,K,myThid)
129     CALL TIMEAVER_INI_XYZ(vVeltave, bi,bj,K,myThid)
130     CALL TIMEAVER_INI_XYZ(uttave, bi,bj,K,myThid)
131     CALL TIMEAVER_INI_XYZ(vttave, bi,bj,K,myThid)
132 heimbach 1.11 CALL TIMEAVER_INI_XYZ(k13tave, bi,bj,K,myThid)
133     CALL TIMEAVER_INI_XYZ(k23tave, bi,bj,K,myThid)
134 adcroft 1.1 CALL TIMEAVER_INI_XYZ(wVeltave, bi,bj,K,myThid)
135 heimbach 1.11 IF (K.EQ.1) CALL TIMEAVER_INI_XY(KapGMtave, bi,bj,myThid)
136 adcroft 1.8 CALL TIMEAVER_INI_XYZ(ConvectCountTave, bi,bj,K,myThid)
137 adcroft 1.1 TimeAve(k,bi,bj)=0.
138     InterTimeAve(k,bi,bj)=0.
139    
140     C Time Averages of single fields
141     DDTT=0.5*deltaTclock
142     CALL TIMEAVER_1FLD_XYZ(theta, thetatave, DDTT, bi,bj,K,myThid)
143     CALL TIMEAVER_1FLD_XYZ(salt, salttave, DDTT, bi,bj,K,myThid)
144     CALL TIMEAVER_1FLD_XYZ(uVel, uVeltave, DDTT, bi,bj,K,myThid)
145     CALL TIMEAVER_1FLD_XYZ(vVel, vVeltave, DDTT, bi,bj,K,myThid)
146    
147     C Time Averages of "double" fields
148 cnh 1.5 CALL TIMEAVER_2FLD_XYZ(theta, uVel, uttave, 1, DDTT,
149     & bi,bj,K,myThid)
150     CALL TIMEAVER_2FLD_XYZ(theta, vVel, vttave, 2, DDTT,
151     & bi,bj,K,myThid)
152 adcroft 1.1
153     C Keep record of how much time has been integrated over
154     TimeAve(k,bi,bj)=TimeAve(k,bi,bj)+DDTT
155    
156     ENDDO
157     ENDDO
158     ENDDO
159    
160     ENDIF
161    
162     RETURN
163     END

  ViewVC Help
Powered by ViewVC 1.1.22