/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_write.F
ViewVC logotype

Contents of /MITgcm/pkg/diagnostics/diagnostics_write.F

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


Revision 1.29 - (show annotations) (download)
Mon Jun 5 18:17:23 2006 UTC (17 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58l_post, mitgcm_mapl_00, checkpoint58r_post, checkpoint58n_post, checkpoint58t_post, checkpoint58h_post, checkpoint58q_post, checkpoint58j_post, checkpoint58i_post, checkpoint58g_post, checkpoint58o_post, checkpoint58k_post, checkpoint58s_post, checkpoint58p_post, checkpoint58m_post
Changes since 1.28: +15 -15 lines
Implement periodic averaging diagnostics (e.g., mean seasonal cycle,
 mean diurnal cycle)

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write.F,v 1.28 2006/03/20 15:15:39 jmc Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 SUBROUTINE DIAGNOSTICS_WRITE ( myTime, myIter, myThid )
7 C***********************************************************************
8 C Purpose
9 C -------
10 C Output sequence for the (multiple) diagnostics output files
11 C
12 C Arguments Description
13 C ----------------------
14 C myTime :: Current time of simulation ( s )
15 C myIter :: Current Iteration Number
16 C myThid :: my Thread Id number
17 C***********************************************************************
18 IMPLICIT NONE
19 #include "EEPARAMS.h"
20 #include "SIZE.h"
21 #include "DIAGNOSTICS_SIZE.h"
22 #include "PARAMS.h"
23 #include "DIAGNOSTICS.h"
24
25 C !INPUT PARAMETERS:
26 _RL myTime
27 INTEGER myIter, myThid
28
29 c Local variables
30 c ===============
31 INTEGER n
32 INTEGER myItM1, wrIter
33 LOGICAL dump2fileNow, write2file
34 _RL phiSec, freqSec, wrTime
35 #ifdef ALLOW_FIZHI
36 LOGICAL alarm2
37 CHARACTER *9 tagname
38 #endif
39
40 LOGICAL DIFF_PHASE_MULTIPLE
41 EXTERNAL DIFF_PHASE_MULTIPLE
42
43 IF ( myIter.NE.nIter0 ) THEN
44 myItM1 = myIter - 1
45
46 C***********************************************************************
47 C*** Check to see IF its time for Diagnostic Output ***
48 C***********************************************************************
49
50 write2file = .FALSE.
51 DO n = 1,nlists
52 freqSec = freq(n)
53 phiSec = phase(n)
54
55 IF ( freqSec.LT.0. ) THEN
56 C-- write snap-shot with suffix = myIter to be consistent with
57 C time-average diagnostics (e.g., freq=-1 & freq=1):
58 c wrIter = myIter
59 c wrTime = myTime
60 C-- write snap-shot with suffix = myIter-1 to be consistent with
61 C state-variable time-step:
62 wrIter = myItM1
63 wrTime = myTime - deltaTclock
64 ELSE
65 wrIter = myIter
66 wrTime = myTime
67 ENDIF
68 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
69 & wrTime, deltaTclock )
70 #ifdef ALLOW_FIZHI
71 IF ( useFIZHI ) THEN
72 WRITE(tagname,'(A,I2.2)')'diagtag',n
73 dump2fileNow = alarm2(tagname)
74 ENDIF
75 #endif
76 #ifdef ALLOW_CAL
77 IF ( useCAL ) THEN
78 CALL CAL_TIME2DUMP( freqSec, deltaTClock,
79 U dump2fileNow,
80 I myTime, myIter, myThid )
81 ENDIF
82 #endif /* ALLOW_CAL */
83 IF ( dump2fileNow .OR.
84 & (myTime.EQ.endTime .AND. dumpAtLast) ) THEN
85 write2file = .TRUE.
86 CALL DIAGNOSTICS_OUT(n,wrIter,wrTime,myThid)
87 ENDIF
88 ENDDO
89
90 C--- Check to see IF its time for Statistics Diag. Output
91
92 DO n = 1,diagSt_nbLists
93 freqSec = diagSt_freq(n)
94 phiSec = diagSt_phase(n)
95
96 IF ( freqSec.LT.0. ) THEN
97 C-- write snap-shot with suffix = myIter to be consistent with
98 C time-average diagnostics (e.g., freq=-1 & freq=1):
99 c wrIter = myIter
100 c wrTime = myTime
101 C-- write snap-shot with suffix = myIter-1 to be consistent with
102 C state-variable time-step:
103 wrIter = myItM1
104 wrTime = myTime - deltaTclock
105 ELSE
106 wrIter = myIter
107 wrTime = myTime
108 ENDIF
109 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
110 & wrTime, deltaTclock )
111 #ifdef ALLOW_FIZHI
112 IF ( useFIZHI ) THEN
113 WRITE(tagname,'(A,I2.2)')'diagStg',n
114 dump2fileNow = alarm2(tagname)
115 ENDIF
116 #endif
117 IF ( dump2fileNow .OR.
118 & (myTime.EQ.endTime .AND. dumpAtLast) ) THEN
119 write2file = .TRUE.
120 CALL DIAGSTATS_OUTPUT(n,wrTime,wrIter,myThid)
121 ENDIF
122 ENDDO
123
124 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
125
126 IF ( write2file ) THEN
127 IF ( debugLevel.GE.debLevB ) THEN
128 CALL DIAGNOSTICS_SUMMARY( myTime, myIter, myThid )
129 ENDIF
130 C- wait for everyone before setting arrays to zero:
131 _BARRIER
132 ENDIF
133
134 C-- Clear storage space:
135
136 DO n = 1,nlists
137 freqSec = freq(n)
138 phiSec = phase(n)
139
140 wrTime = myTime
141 IF ( freqSec.LT.0. ) wrTime = myTime - deltaTclock
142 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
143 & wrTime, deltaTclock )
144 #ifdef ALLOW_FIZHI
145 IF ( useFIZHI ) THEN
146 WRITE(tagname,'(A,I2.2)')'diagtag',n
147 dump2fileNow = alarm2(tagname)
148 ENDIF
149 #endif
150 #ifdef ALLOW_CAL
151 IF ( useCAL ) THEN
152 CALL CAL_TIME2DUMP( freqSec, deltaTClock,
153 U dump2fileNow,
154 I myTime, myIter, myThid )
155 ENDIF
156 #endif /* ALLOW_CAL */
157 IF ( dump2fileNow .OR.
158 & (myTime.EQ.endTime .AND. dumpAtLast)
159 & ) CALL DIAGNOSTICS_CLEAR(n,myThid)
160 ENDDO
161
162 DO n = 1,diagSt_nbLists
163 freqSec = diagSt_freq(n)
164 phiSec = diagSt_phase(n)
165 wrTime = myTime
166 IF ( freqSec.LT.0. ) wrTime = myTime - deltaTclock
167 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
168 & wrTime, deltaTclock )
169 #ifdef ALLOW_FIZHI
170 IF ( useFIZHI ) THEN
171 WRITE(tagname,'(A,I2.2)')'diagStg',n
172 dump2fileNow = alarm2(tagname)
173 ENDIF
174 #endif
175 IF ( dump2fileNow .OR.
176 & (myTime.EQ.endTime .AND. dumpAtLast)
177 & ) CALL DIAGSTATS_CLEAR( n, myThid )
178 ENDDO
179
180 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
181 ENDIF
182
183 RETURN
184 END

  ViewVC Help
Powered by ViewVC 1.1.22