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

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

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


Revision 1.39 - (hide annotations) (download)
Tue Jun 2 20:58:22 2015 UTC (8 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65n, checkpoint65o, checkpoint65m, HEAD
Changes since 1.38: +4 -2 lines
add few _BARRIER around anyupdate of "diag_pkgStatus"

1 jmc 1.39 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write.F,v 1.38 2013/08/14 00:57:33 jmc Exp $
2 edhill 1.6 C $Name: $
3    
4 edhill 1.7 #include "DIAG_OPTIONS.h"
5    
6 jmc 1.31 SUBROUTINE DIAGNOSTICS_WRITE (
7     I modelEnd,
8     I myTime, myIter, myThid )
9 molod 1.1 C***********************************************************************
10     C Purpose
11     C -------
12 molod 1.2 C Output sequence for the (multiple) diagnostics output files
13 molod 1.1 C
14     C Arguments Description
15     C ----------------------
16 jmc 1.31 C modelEnd :: true if call at end of model run.
17     C myTime :: Current time of simulation ( s )
18     C myIter :: Current Iteration Number
19     C myThid :: my Thread Id number
20 molod 1.1 C***********************************************************************
21 jmc 1.8 IMPLICIT NONE
22 jmc 1.27 #include "EEPARAMS.h"
23 molod 1.1 #include "SIZE.h"
24 jmc 1.8 #include "DIAGNOSTICS_SIZE.h"
25 jmc 1.27 #include "PARAMS.h"
26 jmc 1.8 #include "DIAGNOSTICS.h"
27 molod 1.1
28 jmc 1.14 C !INPUT PARAMETERS:
29 jmc 1.31 LOGICAL modelEnd
30 jmc 1.9 _RL myTime
31 jmc 1.8 INTEGER myIter, myThid
32 molod 1.1
33 jmc 1.35 C !FUNCTIONS:
34     LOGICAL DIFF_PHASE_MULTIPLE
35     EXTERNAL DIFF_PHASE_MULTIPLE
36     #ifdef ALLOW_FIZHI
37     LOGICAL ALARM2
38     EXTERNAL ALARM2
39     #endif
40    
41 molod 1.1 c Local variables
42     c ===============
43 jmc 1.8 INTEGER n
44 jmc 1.9 INTEGER myItM1, wrIter
45 jmc 1.23 LOGICAL dump2fileNow, write2file
46 jmc 1.14 _RL phiSec, freqSec, wrTime
47     #ifdef ALLOW_FIZHI
48 jmc 1.29 CHARACTER *9 tagname
49 jmc 1.14 #endif
50    
51 jmc 1.9 IF ( myIter.NE.nIter0 ) THEN
52     myItM1 = myIter - 1
53 molod 1.1
54     C***********************************************************************
55 jmc 1.30 C*** Check to see if its time for Diagnostic Output ***
56 molod 1.1 C***********************************************************************
57    
58 jmc 1.23 write2file = .FALSE.
59 jmc 1.8 DO n = 1,nlists
60 jmc 1.14 freqSec = freq(n)
61     phiSec = phase(n)
62 molod 1.12
63 jmc 1.14 IF ( freqSec.LT.0. ) THEN
64 jmc 1.23 C-- write snap-shot with suffix = myIter to be consistent with
65 jmc 1.9 C time-average diagnostics (e.g., freq=-1 & freq=1):
66     c wrIter = myIter
67 jmc 1.14 c wrTime = myTime
68 jmc 1.9 C-- write snap-shot with suffix = myIter-1 to be consistent with
69     C state-variable time-step:
70     wrIter = myItM1
71 jmc 1.35 wrTime = myTime - deltaTClock
72 jmc 1.9 ELSE
73     wrIter = myIter
74 jmc 1.14 wrTime = myTime
75 jmc 1.9 ENDIF
76 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
77 jmc 1.35 & wrTime, deltaTClock )
78 molod 1.15 #ifdef ALLOW_FIZHI
79 jmc 1.29 IF ( useFIZHI ) THEN
80     WRITE(tagname,'(A,I2.2)')'diagtag',n
81 jmc 1.35 dump2fileNow = ALARM2(tagname)
82 jmc 1.28 ENDIF
83 molod 1.15 #endif
84 dimitri 1.10 #ifdef ALLOW_CAL
85 jmc 1.28 IF ( useCAL ) THEN
86 jmc 1.36 CALL CAL_TIME2DUMP( phiSec, freqSec, deltaTClock,
87 jmc 1.28 U dump2fileNow,
88 jmc 1.37 I wrTime, myIter, myThid )
89 dimitri 1.10 ENDIF
90 jmc 1.28 #endif /* ALLOW_CAL */
91 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
92 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
93     IF ( dump2fileNow ) THEN
94 jmc 1.23 write2file = .TRUE.
95 jmc 1.34 CALL DIAGNOSTICS_OUT(n,wrTime,wrIter,myThid)
96 jmc 1.8 ENDIF
97     ENDDO
98    
99 jmc 1.30 C--- Check to see if its time for Statistics Diag. Output
100 jmc 1.17
101     DO n = 1,diagSt_nbLists
102     freqSec = diagSt_freq(n)
103     phiSec = diagSt_phase(n)
104    
105     IF ( freqSec.LT.0. ) THEN
106 jmc 1.23 C-- write snap-shot with suffix = myIter to be consistent with
107 jmc 1.17 C time-average diagnostics (e.g., freq=-1 & freq=1):
108     c wrIter = myIter
109     c wrTime = myTime
110     C-- write snap-shot with suffix = myIter-1 to be consistent with
111     C state-variable time-step:
112     wrIter = myItM1
113 jmc 1.35 wrTime = myTime - deltaTClock
114 jmc 1.17 ELSE
115     wrIter = myIter
116     wrTime = myTime
117     ENDIF
118 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
119 jmc 1.35 & wrTime, deltaTClock )
120 jmc 1.18 #ifdef ALLOW_FIZHI
121 jmc 1.29 IF ( useFIZHI ) THEN
122     WRITE(tagname,'(A,I2.2)')'diagStg',n
123 jmc 1.35 dump2fileNow = ALARM2(tagname)
124 jmc 1.28 ENDIF
125 jmc 1.18 #endif
126 jmc 1.35 #ifdef ALLOW_CAL
127     IF ( useCAL ) THEN
128 jmc 1.36 CALL CAL_TIME2DUMP( phiSec, freqSec, deltaTClock,
129 jmc 1.35 U dump2fileNow,
130 jmc 1.37 I wrTime, myIter, myThid )
131 jmc 1.35 ENDIF
132     #endif /* ALLOW_CAL */
133 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
134 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
135     IF ( dump2fileNow ) THEN
136 jmc 1.23 write2file = .TRUE.
137 edhill 1.26 CALL DIAGSTATS_OUTPUT(n,wrTime,wrIter,myThid)
138 jmc 1.17 ENDIF
139     ENDDO
140    
141     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
142 jmc 1.23
143     IF ( write2file ) THEN
144 jmc 1.33 IF ( debugLevel.GE.debLevC ) THEN
145 jmc 1.23 CALL DIAGNOSTICS_SUMMARY( myTime, myIter, myThid )
146     ENDIF
147     C- wait for everyone before setting arrays to zero:
148     _BARRIER
149     ENDIF
150 jmc 1.32 IF ( modelEnd ) THEN
151 jmc 1.38 C- Track diagnostics pkg activation status:
152 jmc 1.39 c IF ( diag_pkgStatus.NE.ready2fillDiags ) STOP
153     _BARRIER
154 jmc 1.38 _BEGIN_MASTER(myThid)
155     diag_pkgStatus = 99
156     _END_MASTER(myThid)
157 jmc 1.39 _BARRIER
158 jmc 1.32 C Close all Stat-diags output files
159     CALL DIAGSTATS_CLOSE_IO( myThid )
160     ENDIF
161 jmc 1.17
162     C-- Clear storage space:
163    
164 jmc 1.8 DO n = 1,nlists
165 jmc 1.14 freqSec = freq(n)
166     phiSec = phase(n)
167 jmc 1.17
168 jmc 1.14 wrTime = myTime
169 jmc 1.35 IF ( freqSec.LT.0. ) wrTime = myTime - deltaTClock
170 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
171 jmc 1.35 & wrTime, deltaTClock )
172 molod 1.15 #ifdef ALLOW_FIZHI
173 jmc 1.29 IF ( useFIZHI ) THEN
174     WRITE(tagname,'(A,I2.2)')'diagtag',n
175 jmc 1.35 dump2fileNow = ALARM2(tagname)
176 jmc 1.28 ENDIF
177 molod 1.15 #endif
178 dimitri 1.19 #ifdef ALLOW_CAL
179 jmc 1.28 IF ( useCAL ) THEN
180 jmc 1.36 CALL CAL_TIME2DUMP( phiSec, freqSec, deltaTClock,
181 jmc 1.28 U dump2fileNow,
182 jmc 1.37 I wrTime, myIter, myThid )
183 dimitri 1.19 ENDIF
184 jmc 1.28 #endif /* ALLOW_CAL */
185 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
186 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
187     IF ( dump2fileNow ) CALL DIAGNOSTICS_CLEAR(n,myThid)
188 jmc 1.8 ENDDO
189    
190 jmc 1.17 DO n = 1,diagSt_nbLists
191     freqSec = diagSt_freq(n)
192     phiSec = diagSt_phase(n)
193     wrTime = myTime
194 jmc 1.35 IF ( freqSec.LT.0. ) wrTime = myTime - deltaTClock
195 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
196 jmc 1.35 & wrTime, deltaTClock )
197 jmc 1.18 #ifdef ALLOW_FIZHI
198 jmc 1.29 IF ( useFIZHI ) THEN
199     WRITE(tagname,'(A,I2.2)')'diagStg',n
200 jmc 1.35 dump2fileNow = ALARM2(tagname)
201 jmc 1.28 ENDIF
202 jmc 1.18 #endif
203 jmc 1.35 #ifdef ALLOW_CAL
204     IF ( useCAL ) THEN
205 jmc 1.36 CALL CAL_TIME2DUMP( phiSec, freqSec, deltaTClock,
206 jmc 1.35 U dump2fileNow,
207 jmc 1.37 I wrTime, myIter, myThid )
208 jmc 1.35 ENDIF
209     #endif /* ALLOW_CAL */
210 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
211 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
212     IF ( dump2fileNow ) CALL DIAGSTATS_CLEAR( n, myThid )
213 jmc 1.17 ENDDO
214    
215 jmc 1.8 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
216     ENDIF
217    
218 jmc 1.23 RETURN
219 jmc 1.8 END

  ViewVC Help
Powered by ViewVC 1.1.22