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

  ViewVC Help
Powered by ViewVC 1.1.22