/[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.6 - (hide annotations) (download)
Mon May 24 15:15:10 1999 UTC (25 years ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint23
Changes since 1.5: +1 -0 lines
Added IMPLICIT NONE.

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     REAL myCurrentTime
29     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     REAL DDTT
36     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(k13tave,intertimeave,bi,bj,K,myThid)
60     CALL TIMEAVER_FINAL_XYZ(k23tave,intertimeave,bi,bj,K,myThid)
61     CALL TIMEAVER_FINAL_XYZ(wVeltave,intertimeave,bi,bj,K,myThid)
62     ENDDO
63 adcroft 1.3 CALL TIMEAVER_FINAL_XY(KapGMtave,intertimeave,bi,bj,myThid)
64 adcroft 1.1 ENDDO
65     ENDDO
66    
67     C Write to files
68     _BARRIER
69     _BEGIN_MASTER( myThid )
70 adcroft 1.2
71     C-- Set IO "context" for writing state
72     CALL DFILE_SET_RW
73     CALL DFILE_SET_CONT_ON_ERROR
74     C-- Read IO error counter
75     beginIOErrCount = IO_ERRCOUNT(myThid)
76 adcroft 1.1 prevPrec = writeBinaryPrec
77     writeBinaryPrec = precFloat32
78     CALL WRITE_FLD_XYZ_RL('Ttave.',suff,thetatave,myIter,myThid)
79     CALL WRITE_FLD_XYZ_RL('Stave.',suff,salttave,myIter,myThid)
80     CALL WRITE_FLD_XYZ_RL('uVeltave.',suff,uVeltave,myIter,myThid)
81     CALL WRITE_FLD_XYZ_RL('vVeltave.',suff,vVeltave,myIter,myThid)
82     CALL WRITE_FLD_XYZ_RL('UTtave.',suff,uttave,myIter,myThid)
83     CALL WRITE_FLD_XYZ_RL('VTtave.',suff,vttave,myIter,myThid)
84     CALL WRITE_FLD_XYZ_RL('K13tave.',suff,k13tave,myIter,myThid)
85     CALL WRITE_FLD_XYZ_RL('K23tave.',suff,k23tave,myIter,myThid)
86     CALL WRITE_FLD_XYZ_RL('WTtave.',suff,wVeltave,myIter,myThid)
87 adcroft 1.3 CALL WRITE_FLD_XY_RL('KapGMtave.',suff,KapGMtave,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(k13tave, bi,bj,K,myThid)
125     CALL TIMEAVER_INI_XYZ(k23tave, bi,bj,K,myThid)
126     CALL TIMEAVER_INI_XYZ(wVeltave, bi,bj,K,myThid)
127 adcroft 1.3 IF (K.EQ.1) CALL TIMEAVER_INI_XY(KapGMtave, bi,bj,myThid)
128 adcroft 1.1 TimeAve(k,bi,bj)=0.
129     InterTimeAve(k,bi,bj)=0.
130    
131     C Time Averages of single fields
132     DDTT=0.5*deltaTclock
133     CALL TIMEAVER_1FLD_XYZ(theta, thetatave, DDTT, bi,bj,K,myThid)
134     CALL TIMEAVER_1FLD_XYZ(salt, salttave, DDTT, bi,bj,K,myThid)
135     CALL TIMEAVER_1FLD_XYZ(uVel, uVeltave, DDTT, bi,bj,K,myThid)
136     CALL TIMEAVER_1FLD_XYZ(vVel, vVeltave, DDTT, bi,bj,K,myThid)
137    
138     C Time Averages of "double" fields
139 cnh 1.5 CALL TIMEAVER_2FLD_XYZ(theta, uVel, uttave, 1, DDTT,
140     & bi,bj,K,myThid)
141     CALL TIMEAVER_2FLD_XYZ(theta, vVel, vttave, 2, DDTT,
142     & bi,bj,K,myThid)
143 adcroft 1.1
144     C Keep record of how much time has been integrated over
145     TimeAve(k,bi,bj)=TimeAve(k,bi,bj)+DDTT
146    
147     ENDDO
148     ENDDO
149     ENDDO
150    
151     ENDIF
152    
153     RETURN
154     END

  ViewVC Help
Powered by ViewVC 1.1.22