3 |
|
|
4 |
#include "DIAG_OPTIONS.h" |
#include "DIAG_OPTIONS.h" |
5 |
|
|
6 |
SUBROUTINE DIAGNOSTICS_WRITE ( myTime, myIter, myThid ) |
SUBROUTINE DIAGNOSTICS_WRITE ( |
7 |
|
I modelEnd, |
8 |
|
I myTime, myIter, myThid ) |
9 |
C*********************************************************************** |
C*********************************************************************** |
10 |
C Purpose |
C Purpose |
11 |
C ------- |
C ------- |
13 |
C |
C |
14 |
C Arguments Description |
C Arguments Description |
15 |
C ---------------------- |
C ---------------------- |
16 |
C myTime :: Current time of simulation ( s ) |
C modelEnd :: true if call at end of model run. |
17 |
C myIter :: Current Iteration Number |
C myTime :: Current time of simulation ( s ) |
18 |
C myThid :: my Thread Id number |
C myIter :: Current Iteration Number |
19 |
|
C myThid :: my Thread Id number |
20 |
C*********************************************************************** |
C*********************************************************************** |
21 |
IMPLICIT NONE |
IMPLICIT NONE |
22 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
26 |
#include "DIAGNOSTICS.h" |
#include "DIAGNOSTICS.h" |
27 |
|
|
28 |
C !INPUT PARAMETERS: |
C !INPUT PARAMETERS: |
29 |
|
LOGICAL modelEnd |
30 |
_RL myTime |
_RL myTime |
31 |
INTEGER myIter, myThid |
INTEGER myIter, myThid |
32 |
|
|
37 |
LOGICAL dump2fileNow, write2file |
LOGICAL dump2fileNow, write2file |
38 |
_RL phiSec, freqSec, wrTime |
_RL phiSec, freqSec, wrTime |
39 |
#ifdef ALLOW_FIZHI |
#ifdef ALLOW_FIZHI |
40 |
logical alarm2 |
LOGICAL alarm2 |
41 |
character *9 tagname |
CHARACTER *9 tagname |
42 |
#endif |
#endif |
43 |
|
|
44 |
LOGICAL DIFF_PHASE_MULTIPLE |
LOGICAL DIFF_PHASE_MULTIPLE |
48 |
myItM1 = myIter - 1 |
myItM1 = myIter - 1 |
49 |
|
|
50 |
C*********************************************************************** |
C*********************************************************************** |
51 |
C*** Check to see IF its time for Diagnostic Output *** |
C*** Check to see if its time for Diagnostic Output *** |
52 |
C*********************************************************************** |
C*********************************************************************** |
53 |
|
|
54 |
write2file = .FALSE. |
write2file = .FALSE. |
72 |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
73 |
& wrTime, deltaTclock ) |
& wrTime, deltaTclock ) |
74 |
#ifdef ALLOW_FIZHI |
#ifdef ALLOW_FIZHI |
75 |
IF( useFIZHI) THEN |
IF ( useFIZHI ) THEN |
76 |
write(tagname,'(A,I2.2)')'diagtag',n |
WRITE(tagname,'(A,I2.2)')'diagtag',n |
77 |
dump2fileNow = alarm2(tagname) |
dump2fileNow = alarm2(tagname) |
78 |
ENDIF |
ENDIF |
79 |
#endif |
#endif |
84 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
85 |
ENDIF |
ENDIF |
86 |
#endif /* ALLOW_CAL */ |
#endif /* ALLOW_CAL */ |
87 |
IF ( dump2fileNow .OR. |
IF ( dumpAtLast .AND. modelEnd |
88 |
& (myTime.EQ.endTime .AND. dumpatlast) ) THEN |
& .AND. freqSec.GE.0. ) dump2fileNow = .TRUE. |
89 |
|
IF ( dump2fileNow ) THEN |
90 |
write2file = .TRUE. |
write2file = .TRUE. |
91 |
CALL DIAGNOSTICS_OUT(n,wrIter,wrTime,myThid) |
CALL DIAGNOSTICS_OUT(n,wrIter,wrTime,myThid) |
92 |
ENDIF |
ENDIF |
93 |
ENDDO |
ENDDO |
94 |
|
|
95 |
C--- Check to see IF its time for Statistics Diag. Output |
C--- Check to see if its time for Statistics Diag. Output |
96 |
|
|
97 |
DO n = 1,diagSt_nbLists |
DO n = 1,diagSt_nbLists |
98 |
freqSec = diagSt_freq(n) |
freqSec = diagSt_freq(n) |
114 |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
115 |
& wrTime, deltaTclock ) |
& wrTime, deltaTclock ) |
116 |
#ifdef ALLOW_FIZHI |
#ifdef ALLOW_FIZHI |
117 |
IF( useFIZHI) THEN |
IF ( useFIZHI ) THEN |
118 |
write(tagname,'(A,I2.2)')'diagStg',n |
WRITE(tagname,'(A,I2.2)')'diagStg',n |
119 |
dump2fileNow = alarm2(tagname) |
dump2fileNow = alarm2(tagname) |
120 |
ENDIF |
ENDIF |
121 |
#endif |
#endif |
122 |
IF ( dump2fileNow .OR. |
IF ( dumpAtLast .AND. modelEnd |
123 |
& (myTime.EQ.endTime .AND. dumpatlast) ) THEN |
& .AND. freqSec.GE.0. ) dump2fileNow = .TRUE. |
124 |
|
IF ( dump2fileNow ) THEN |
125 |
write2file = .TRUE. |
write2file = .TRUE. |
126 |
CALL DIAGSTATS_OUTPUT(n,wrTime,wrIter,myThid) |
CALL DIAGSTATS_OUTPUT(n,wrTime,wrIter,myThid) |
127 |
ENDIF |
ENDIF |
136 |
C- wait for everyone before setting arrays to zero: |
C- wait for everyone before setting arrays to zero: |
137 |
_BARRIER |
_BARRIER |
138 |
ENDIF |
ENDIF |
139 |
|
IF ( modelEnd ) THEN |
140 |
|
C Close all Stat-diags output files |
141 |
|
CALL DIAGSTATS_CLOSE_IO( myThid ) |
142 |
|
ENDIF |
143 |
|
|
144 |
C-- Clear storage space: |
C-- Clear storage space: |
145 |
|
|
152 |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
153 |
& wrTime, deltaTclock ) |
& wrTime, deltaTclock ) |
154 |
#ifdef ALLOW_FIZHI |
#ifdef ALLOW_FIZHI |
155 |
IF( useFIZHI) THEN |
IF ( useFIZHI ) THEN |
156 |
write(tagname,'(A,I2.2)')'diagtag',n |
WRITE(tagname,'(A,I2.2)')'diagtag',n |
157 |
dump2fileNow = alarm2(tagname) |
dump2fileNow = alarm2(tagname) |
158 |
ENDIF |
ENDIF |
159 |
#endif |
#endif |
164 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
165 |
ENDIF |
ENDIF |
166 |
#endif /* ALLOW_CAL */ |
#endif /* ALLOW_CAL */ |
167 |
IF ( dump2fileNow .OR. |
IF ( dumpAtLast .AND. modelEnd |
168 |
& (myTime.EQ.endTime .AND. dumpatlast) |
& .AND. freqSec.GE.0. ) dump2fileNow = .TRUE. |
169 |
& ) CALL DIAGNOSTICS_CLEAR(n,myThid) |
IF ( dump2fileNow ) CALL DIAGNOSTICS_CLEAR(n,myThid) |
170 |
ENDDO |
ENDDO |
171 |
|
|
172 |
DO n = 1,diagSt_nbLists |
DO n = 1,diagSt_nbLists |
177 |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
dump2fileNow = DIFF_PHASE_MULTIPLE( phiSec, freqSec, |
178 |
& wrTime, deltaTclock ) |
& wrTime, deltaTclock ) |
179 |
#ifdef ALLOW_FIZHI |
#ifdef ALLOW_FIZHI |
180 |
IF( useFIZHI) THEN |
IF ( useFIZHI ) THEN |
181 |
write(tagname,'(A,I2.2)')'diagStg',n |
WRITE(tagname,'(A,I2.2)')'diagStg',n |
182 |
dump2fileNow = alarm2(tagname) |
dump2fileNow = alarm2(tagname) |
183 |
ENDIF |
ENDIF |
184 |
#endif |
#endif |
185 |
IF ( dump2fileNow .OR. |
IF ( dumpAtLast .AND. modelEnd |
186 |
& (myTime.EQ.endTime .AND. dumpatlast) |
& .AND. freqSec.GE.0. ) dump2fileNow = .TRUE. |
187 |
& ) CALL DIAGSTATS_CLEAR( n, myThid ) |
IF ( dump2fileNow ) CALL DIAGSTATS_CLEAR( n, myThid ) |
188 |
ENDDO |
ENDDO |
189 |
|
|
190 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |