/[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.10 - (hide annotations) (download)
Wed Jun 21 19:28:40 2000 UTC (23 years, 11 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint30, checkpoint29, checkpoint31
Changes since 1.9: +0 -9 lines
Time-averaging of GM/Redi quantities is now done by the GM/Redi package.

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

  ViewVC Help
Powered by ViewVC 1.1.22