/[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.8 - (hide annotations) (download)
Thu Aug 26 17:47:37 1999 UTC (24 years, 9 months ago) by adcroft
Branch: MAIN
Changes since 1.7: +5 -0 lines
Added IVDC (Implicit Vertical Diffusion Convection).
Also facilitated a "convection counter" that is output through "diags".

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(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 adcroft 1.8 CALL TIMEAVER_FINAL_XYZ(ConvectCountTave,intertimeave,
63     & bi,bj,K,myThid)
64 adcroft 1.1 ENDDO
65 adcroft 1.3 CALL TIMEAVER_FINAL_XY(KapGMtave,intertimeave,bi,bj,myThid)
66 adcroft 1.1 ENDDO
67     ENDDO
68    
69     C Write to files
70     _BARRIER
71     _BEGIN_MASTER( myThid )
72 adcroft 1.2
73     C-- Set IO "context" for writing state
74     CALL DFILE_SET_RW
75     CALL DFILE_SET_CONT_ON_ERROR
76     C-- Read IO error counter
77     beginIOErrCount = IO_ERRCOUNT(myThid)
78 adcroft 1.1 prevPrec = writeBinaryPrec
79     writeBinaryPrec = precFloat32
80     CALL WRITE_FLD_XYZ_RL('Ttave.',suff,thetatave,myIter,myThid)
81     CALL WRITE_FLD_XYZ_RL('Stave.',suff,salttave,myIter,myThid)
82     CALL WRITE_FLD_XYZ_RL('uVeltave.',suff,uVeltave,myIter,myThid)
83     CALL WRITE_FLD_XYZ_RL('vVeltave.',suff,vVeltave,myIter,myThid)
84     CALL WRITE_FLD_XYZ_RL('UTtave.',suff,uttave,myIter,myThid)
85     CALL WRITE_FLD_XYZ_RL('VTtave.',suff,vttave,myIter,myThid)
86     CALL WRITE_FLD_XYZ_RL('K13tave.',suff,k13tave,myIter,myThid)
87     CALL WRITE_FLD_XYZ_RL('K23tave.',suff,k23tave,myIter,myThid)
88     CALL WRITE_FLD_XYZ_RL('WTtave.',suff,wVeltave,myIter,myThid)
89 adcroft 1.3 CALL WRITE_FLD_XY_RL('KapGMtave.',suff,KapGMtave,myIter,myThid)
90 adcroft 1.8 CALL WRITE_FLD_XYZ_RL('ConvectCntTave.',suff,ConvectCountTave,
91     & myIter,myThid)
92 adcroft 1.1 writeBinaryPrec = prevPrec
93 adcroft 1.2 C-- Reread IO error counter
94     endIOErrCount = IO_ERRCOUNT(myThid)
95    
96     C-- Check for IO errors
97     IF ( endIOErrCount .NE. beginIOErrCount ) THEN
98     WRITE(msgBuf,'(A)') 'S/R WRITE_TIME_AVERAGES'
99     CALL PRINT_ERROR( msgBuf, 1 )
100     WRITE(msgBuf,'(A)') 'Error writing out data'
101     CALL PRINT_ERROR( msgBuf, 1 )
102     WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
103     CALL PRINT_ERROR( msgBuf, 1 )
104     ELSE
105 cnh 1.5 WRITE(msgBuf,'(A,I10)')
106     & '// Time-average data written, t-step', myIter
107     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
108     & SQUEEZE_RIGHT, 1 )
109 adcroft 1.2 WRITE(msgBuf,'(A)') ' '
110 cnh 1.5 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
111     & SQUEEZE_RIGHT, 1 )
112 adcroft 1.2 ENDIF
113    
114 adcroft 1.1 _END_MASTER( myThid )
115     _BARRIER
116    
117     DO bj = myByLo(myThid), myByHi(myThid)
118     DO bi = myBxLo(myThid), myBxHi(myThid)
119 cnh 1.4 DO k=1,Nr
120 adcroft 1.1
121     C Reset the averages to zero
122     CALL TIMEAVER_INI_XYZ(thetatave, bi,bj,K,myThid)
123     CALL TIMEAVER_INI_XYZ(salttave, bi,bj,K,myThid)
124     CALL TIMEAVER_INI_XYZ(uVeltave, bi,bj,K,myThid)
125     CALL TIMEAVER_INI_XYZ(vVeltave, bi,bj,K,myThid)
126     CALL TIMEAVER_INI_XYZ(uttave, bi,bj,K,myThid)
127     CALL TIMEAVER_INI_XYZ(vttave, bi,bj,K,myThid)
128     CALL TIMEAVER_INI_XYZ(k13tave, bi,bj,K,myThid)
129     CALL TIMEAVER_INI_XYZ(k23tave, bi,bj,K,myThid)
130     CALL TIMEAVER_INI_XYZ(wVeltave, bi,bj,K,myThid)
131 adcroft 1.3 IF (K.EQ.1) CALL TIMEAVER_INI_XY(KapGMtave, bi,bj,myThid)
132 adcroft 1.8 CALL TIMEAVER_INI_XYZ(ConvectCountTave, bi,bj,K,myThid)
133 adcroft 1.1 TimeAve(k,bi,bj)=0.
134     InterTimeAve(k,bi,bj)=0.
135    
136     C Time Averages of single fields
137     DDTT=0.5*deltaTclock
138     CALL TIMEAVER_1FLD_XYZ(theta, thetatave, DDTT, bi,bj,K,myThid)
139     CALL TIMEAVER_1FLD_XYZ(salt, salttave, DDTT, bi,bj,K,myThid)
140     CALL TIMEAVER_1FLD_XYZ(uVel, uVeltave, DDTT, bi,bj,K,myThid)
141     CALL TIMEAVER_1FLD_XYZ(vVel, vVeltave, DDTT, bi,bj,K,myThid)
142    
143     C Time Averages of "double" fields
144 cnh 1.5 CALL TIMEAVER_2FLD_XYZ(theta, uVel, uttave, 1, DDTT,
145     & bi,bj,K,myThid)
146     CALL TIMEAVER_2FLD_XYZ(theta, vVel, vttave, 2, DDTT,
147     & bi,bj,K,myThid)
148 adcroft 1.1
149     C Keep record of how much time has been integrated over
150     TimeAve(k,bi,bj)=TimeAve(k,bi,bj)+DDTT
151    
152     ENDDO
153     ENDDO
154     ENDDO
155    
156     ENDIF
157    
158     RETURN
159     END

  ViewVC Help
Powered by ViewVC 1.1.22