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

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

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


Revision 1.4 - (show annotations) (download)
Fri May 20 07:28:49 2005 UTC (18 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57i_post
Changes since 1.3: +62 -6 lines
Add new capability: compute & write Global/Regional & per level statistics

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_check.F,v 1.3 2005/02/23 14:45:00 jmc Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP 0
8 C !ROUTINE: DIAGNOSTICS_CHECK
9
10 C !INTERFACE:
11 SUBROUTINE DIAGNOSTICS_CHECK(myThid)
12
13 C !DESCRIPTION:
14 C Check option and parameter consistency
15
16 C !USES:
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "DIAGNOSTICS_SIZE.h"
22 #include "DIAGNOSTICS.h"
23
24 C !INPUT PARAMETERS:
25 INTEGER myThid
26 CEOP
27
28 C !LOCAL VARIABLES:
29 CHARACTER*(MAX_LEN_MBUF) msgBuf
30 INTEGER k,l,n,m
31
32 _BEGIN_MASTER(myThid)
33
34 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
35 C Check diagnostics parameter consistency
36
37 #ifdef DIAGNOSTICS_HAS_PICKUP
38 IF ( diag_pickup_read ) THEN
39 WRITE(msgBuf,'(2A)') '**CAUTION** (DIAGNOSTICS_CHECK): ',
40 & 'reading diagnostics previous state'
41 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
42 & SQUEEZE_RIGHT , myThid)
43 WRITE(msgBuf,'(2A)') '**CAUTION** ',
44 & ' from a pickup file can only work if data.diagnostics'
45 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
46 & SQUEEZE_RIGHT , myThid)
47 WRITE(msgBuf,'(2A)') '**CAUTION** ',
48 & ' is not changed (<= further checking not yet implemented)'
49 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
50 & SQUEEZE_RIGHT , myThid)
51 ENDIF
52 #else /* undef DIAGNOSTICS_HAS_PICKUP */
53 C- stop if trying to use part of the code that is not compiled:
54 IF ( diag_pickup_read ) THEN
55 WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_CHECK: ',
56 & 'diag_pickup_read is TRUE ',
57 & 'but DIAGNOSTICS_HAS_PICKUP is "#undef"'
58 CALL PRINT_ERROR( msgBuf , myThid)
59 ENDIF
60 IF ( diag_pickup_write ) THEN
61 WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_CHECK: ',
62 & 'diag_pickup_write is TRUE ',
63 & 'but DIAGNOSTICS_HAS_PICKUP is "#undef"'
64 CALL PRINT_ERROR( msgBuf , myThid)
65 ENDIF
66 IF ( diag_pickup_read .OR. diag_pickup_write ) THEN
67 STOP 'ABNORMAL END: S/R DIAGNOSTICS_CHECK'
68 ENDIF
69 #endif /* DIAGNOSTICS_HAS_PICKUP */
70
71 C- File names:
72 DO n = 2,nlists
73 DO m = 1,n-1
74 IF ( fnames(n).EQ.fnames(m) ) THEN
75 WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_CHECK: ',
76 & 'found 2 identical filenames:'
77 CALL PRINT_ERROR( msgBuf , myThid )
78 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_CHECK: ',
79 & '1rst (m=', m, ' ): ', fnames(m)
80 CALL PRINT_ERROR( msgBuf , myThid )
81 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_CHECK: ',
82 & ' 2nd (n=', n, ' ): ', fnames(n)
83 CALL PRINT_ERROR( msgBuf , myThid )
84 STOP 'ABNORMAL END: S/R DIAGNOSTICS_CHECK'
85 ENDIF
86 ENDDO
87 ENDDO
88
89 DO n = 2,diagSt_nbLists
90 DO m = 1,n-1
91 IF ( diagSt_Fname(n).EQ.diagSt_Fname(m) ) THEN
92 WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_CHECK: ',
93 & 'found 2 identical stat_fname:'
94 CALL PRINT_ERROR( msgBuf , myThid )
95 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_CHECK: ',
96 & '1rst (m=', m, ' ): ', diagSt_Fname(m)
97 CALL PRINT_ERROR( msgBuf , myThid )
98 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_CHECK: ',
99 & ' 2nd (n=', n, ' ): ', diagSt_Fname(n)
100 CALL PRINT_ERROR( msgBuf , myThid )
101 STOP 'ABNORMAL END: S/R DIAGNOSTICS_CHECK'
102 ENDIF
103 ENDDO
104 ENDDO
105
106 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
107 C- Check for field that appears 2 times (or more) with differents frequency:
108
109 DO n = 2,nlists
110 DO m = 1,n-1
111 IF ( freq(m).NE.freq(n) .OR. phase(m).NE.phase(n) ) THEN
112 C-- once the SWITCH_ONOFF is changed to only turns ON diag with <0 freq
113 C and CLRDIAG is changed to turns OFF diag with <0 freq,
114 C then we can allow 1 diag to be used with 2 differents <0 freq.
115 C and this would become:
116 c IF ( ( freq(m).GT.0. .OR. freq(n).GT.0. )
117 c & .AND.( freq(m).NE.freq(n) .OR. phase(m).NE.phase(n) )
118 c & ) THEN
119 DO k = 1,nActive(n)
120 DO l = 1,nActive(m)
121 IF ( flds(k,n).EQ.flds(l,m) ) THEN
122 WRITE(msgBuf,'(4A)') 'DIAGNOSTICS_CHECK: ',
123 & 'field : ',flds(k,n),' use 2 different freq. :'
124 CALL PRINT_ERROR( msgBuf , myThid )
125 WRITE(msgBuf,'(2A,I3,A,2F17.6,2A)') 'DIAGNOSTICS_CHECK: ',
126 & '1rst (m=', m, ' ) freq,phase=', freq(m),phase(m),
127 & ' file:',fnames(m)
128 CALL PRINT_ERROR( msgBuf , myThid )
129 WRITE(msgBuf,'(2A,I3,A,2F17.6,2A)') 'DIAGNOSTICS_CHECK: ',
130 & ' 2nd (n=', n, ' ) freq,phase=', freq(n),phase(n),
131 & ' file:',fnames(n)
132 CALL PRINT_ERROR( msgBuf , myThid )
133 STOP 'ABNORMAL END: S/R DIAGNOSTICS_CHECK'
134 ENDIF
135 ENDDO
136 ENDDO
137 ENDIF
138 ENDDO
139 ENDDO
140
141 DO n = 2,diagSt_nbLists
142 DO m = 1,n-1
143 IF ( diagSt_freq(m) .NE. diagSt_freq(n) .OR.
144 & diagSt_phase(m).NE.diagSt_phase(n) ) THEN
145 c IF ( ( diagSt_freq(m).GT.0. .OR. diagSt_freq(n).GT.0. )
146 c & .AND.( diagSt_freq(m) .NE. diagSt_freq(n) .OR.
147 c & diagSt_phase(m).NE.diagSt_phase(n) )
148 c & ) THEN
149 DO k = 1,diagSt_nbActv(n)
150 DO l = 1,diagSt_nbActv(m)
151 IF ( diagSt_Flds(k,n).EQ.diagSt_Flds(l,m) ) THEN
152 WRITE(msgBuf,'(4A)') 'DIAGNOSTICS_CHECK: ',
153 & 'field : ',diagSt_Flds(k,n),' use 2 different stat_freq.:'
154 CALL PRINT_ERROR( msgBuf , myThid )
155 WRITE(msgBuf,'(2A,I3,A,2F17.6,2A)') 'DIAGNOSTICS_CHECK: ',
156 & '1rst (m=', m, ' ) freq,phase=', diagSt_freq(m),
157 & diagSt_phase(m), ' file:', diagSt_Fname(m)
158 CALL PRINT_ERROR( msgBuf , myThid )
159 WRITE(msgBuf,'(2A,I3,A,2F17.6,2A)') 'DIAGNOSTICS_CHECK: ',
160 & ' 2nd (n=', n, ' ) freq,phase=', diagSt_freq(n),
161 & diagSt_phase(n), ' file:', diagSt_Fname(n)
162 CALL PRINT_ERROR( msgBuf , myThid )
163 STOP 'ABNORMAL END: S/R DIAGNOSTICS_CHECK'
164 ENDIF
165 ENDDO
166 ENDDO
167 ENDIF
168 ENDDO
169 ENDDO
170
171 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
172
173 _END_MASTER(myThid)
174
175 RETURN
176 END

  ViewVC Help
Powered by ViewVC 1.1.22