/[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.33 - (hide annotations) (download)
Mon Jun 6 15:42:58 2011 UTC (12 years, 11 months ago) by jmc
Branch: MAIN
Changes since 1.32: +2 -2 lines
refine debugLevel criteria when printing messages

1 jmc 1.33 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write.F,v 1.32 2010/01/13 01:42:48 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     c Local variables
34     c ===============
35 jmc 1.8 INTEGER n
36 jmc 1.9 INTEGER myItM1, wrIter
37 jmc 1.23 LOGICAL dump2fileNow, write2file
38 jmc 1.14 _RL phiSec, freqSec, wrTime
39     #ifdef ALLOW_FIZHI
40 jmc 1.29 LOGICAL alarm2
41     CHARACTER *9 tagname
42 jmc 1.14 #endif
43    
44     LOGICAL DIFF_PHASE_MULTIPLE
45     EXTERNAL DIFF_PHASE_MULTIPLE
46 jmc 1.8
47 jmc 1.9 IF ( myIter.NE.nIter0 ) THEN
48     myItM1 = myIter - 1
49 molod 1.1
50     C***********************************************************************
51 jmc 1.30 C*** Check to see if its time for Diagnostic Output ***
52 molod 1.1 C***********************************************************************
53    
54 jmc 1.23 write2file = .FALSE.
55 jmc 1.8 DO n = 1,nlists
56 jmc 1.14 freqSec = freq(n)
57     phiSec = phase(n)
58 molod 1.12
59 jmc 1.14 IF ( freqSec.LT.0. ) THEN
60 jmc 1.23 C-- write snap-shot with suffix = myIter to be consistent with
61 jmc 1.9 C time-average diagnostics (e.g., freq=-1 & freq=1):
62     c wrIter = myIter
63 jmc 1.14 c wrTime = myTime
64 jmc 1.9 C-- write snap-shot with suffix = myIter-1 to be consistent with
65     C state-variable time-step:
66     wrIter = myItM1
67 jmc 1.14 wrTime = myTime - deltaTclock
68 jmc 1.9 ELSE
69     wrIter = myIter
70 jmc 1.14 wrTime = myTime
71 jmc 1.9 ENDIF
72 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
73 jmc 1.14 & wrTime, deltaTclock )
74 molod 1.15 #ifdef ALLOW_FIZHI
75 jmc 1.29 IF ( useFIZHI ) THEN
76     WRITE(tagname,'(A,I2.2)')'diagtag',n
77 jmc 1.28 dump2fileNow = alarm2(tagname)
78     ENDIF
79 molod 1.15 #endif
80 dimitri 1.10 #ifdef ALLOW_CAL
81 jmc 1.28 IF ( useCAL ) THEN
82     CALL CAL_TIME2DUMP( freqSec, deltaTClock,
83     U dump2fileNow,
84     I myTime, myIter, myThid )
85 dimitri 1.10 ENDIF
86 jmc 1.28 #endif /* ALLOW_CAL */
87 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
88 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
89     IF ( dump2fileNow ) THEN
90 jmc 1.23 write2file = .TRUE.
91 edhill 1.26 CALL DIAGNOSTICS_OUT(n,wrIter,wrTime,myThid)
92 jmc 1.8 ENDIF
93     ENDDO
94    
95 jmc 1.30 C--- Check to see if its time for Statistics Diag. Output
96 jmc 1.17
97     DO n = 1,diagSt_nbLists
98     freqSec = diagSt_freq(n)
99     phiSec = diagSt_phase(n)
100    
101     IF ( freqSec.LT.0. ) THEN
102 jmc 1.23 C-- write snap-shot with suffix = myIter to be consistent with
103 jmc 1.17 C time-average diagnostics (e.g., freq=-1 & freq=1):
104     c wrIter = myIter
105     c wrTime = myTime
106     C-- write snap-shot with suffix = myIter-1 to be consistent with
107     C state-variable time-step:
108     wrIter = myItM1
109     wrTime = myTime - deltaTclock
110     ELSE
111     wrIter = myIter
112     wrTime = myTime
113     ENDIF
114 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
115 jmc 1.17 & wrTime, deltaTclock )
116 jmc 1.18 #ifdef ALLOW_FIZHI
117 jmc 1.29 IF ( useFIZHI ) THEN
118     WRITE(tagname,'(A,I2.2)')'diagStg',n
119 jmc 1.28 dump2fileNow = alarm2(tagname)
120     ENDIF
121 jmc 1.18 #endif
122 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
123 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
124     IF ( dump2fileNow ) THEN
125 jmc 1.23 write2file = .TRUE.
126 edhill 1.26 CALL DIAGSTATS_OUTPUT(n,wrTime,wrIter,myThid)
127 jmc 1.17 ENDIF
128     ENDDO
129    
130     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
131 jmc 1.23
132     IF ( write2file ) THEN
133 jmc 1.33 IF ( debugLevel.GE.debLevC ) THEN
134 jmc 1.23 CALL DIAGNOSTICS_SUMMARY( myTime, myIter, myThid )
135     ENDIF
136     C- wait for everyone before setting arrays to zero:
137     _BARRIER
138     ENDIF
139 jmc 1.32 IF ( modelEnd ) THEN
140     C Close all Stat-diags output files
141     CALL DIAGSTATS_CLOSE_IO( myThid )
142     ENDIF
143 jmc 1.17
144     C-- Clear storage space:
145    
146 jmc 1.8 DO n = 1,nlists
147 jmc 1.14 freqSec = freq(n)
148     phiSec = phase(n)
149 jmc 1.17
150 jmc 1.14 wrTime = myTime
151     IF ( freqSec.LT.0. ) wrTime = myTime - deltaTclock
152 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
153 jmc 1.14 & wrTime, deltaTclock )
154 molod 1.15 #ifdef ALLOW_FIZHI
155 jmc 1.29 IF ( useFIZHI ) THEN
156     WRITE(tagname,'(A,I2.2)')'diagtag',n
157 molod 1.15 dump2fileNow = alarm2(tagname)
158 jmc 1.28 ENDIF
159 molod 1.15 #endif
160 dimitri 1.19 #ifdef ALLOW_CAL
161 jmc 1.28 IF ( useCAL ) THEN
162     CALL CAL_TIME2DUMP( freqSec, deltaTClock,
163     U dump2fileNow,
164     I myTime, myIter, myThid )
165 dimitri 1.19 ENDIF
166 jmc 1.28 #endif /* ALLOW_CAL */
167 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
168 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
169     IF ( dump2fileNow ) CALL DIAGNOSTICS_CLEAR(n,myThid)
170 jmc 1.8 ENDDO
171    
172 jmc 1.17 DO n = 1,diagSt_nbLists
173     freqSec = diagSt_freq(n)
174     phiSec = diagSt_phase(n)
175     wrTime = myTime
176     IF ( freqSec.LT.0. ) wrTime = myTime - deltaTclock
177 jmc 1.23 dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
178 jmc 1.17 & wrTime, deltaTclock )
179 jmc 1.18 #ifdef ALLOW_FIZHI
180 jmc 1.29 IF ( useFIZHI ) THEN
181     WRITE(tagname,'(A,I2.2)')'diagStg',n
182 jmc 1.28 dump2fileNow = alarm2(tagname)
183     ENDIF
184 jmc 1.18 #endif
185 jmc 1.31 IF ( dumpAtLast .AND. modelEnd
186 jmc 1.30 & .AND. freqSec.GE.0. ) dump2fileNow = .TRUE.
187     IF ( dump2fileNow ) CALL DIAGSTATS_CLEAR( n, myThid )
188 jmc 1.17 ENDDO
189    
190 jmc 1.8 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
191     ENDIF
192    
193 jmc 1.23 RETURN
194 jmc 1.8 END

  ViewVC Help
Powered by ViewVC 1.1.22