/[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.11 - (hide annotations) (download)
Mon Nov 13 16:10:38 2000 UTC (23 years, 6 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint34, branch-atmos-merge-zonalfilt, branch-atmos-merge-shapiro, branch-atmos-merge-phase4, branch-atmos-merge-phase3, branch-atmos-merge-phase2, branch-atmos-merge-phase5, branch-atmos-merge-phase7, branch-atmos-merge-phase1, branch-atmos-merge-phase6, branch-atmos-merge-start, checkpoint33, checkpoint32, branch-atmos-merge-freeze
Branch point for: branch-atmos-merge
Changes since 1.10: +9 -0 lines
Adding diagnostics for GM, KPP.

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

  ViewVC Help
Powered by ViewVC 1.1.22