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

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

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


Revision 1.4 - (hide annotations) (download)
Wed Jul 6 13:52:31 2005 UTC (18 years, 10 months ago) by edhill
Branch: MAIN
Changes since 1.3: +3 -2 lines
 o add comment

1 edhill 1.4 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagstats_output.F,v 1.3 2005/07/06 02:13:52 edhill Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "DIAG_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7     CBOP 0
8     C !ROUTINE: DIAGSTATS_OUTPUT
9    
10     C !INTERFACE:
11     SUBROUTINE DIAGSTATS_OUTPUT(
12     I listId,
13 edhill 1.3 I myIter, myTime, myThid )
14 jmc 1.1
15     C !DESCRIPTION:
16     C Write output for diagnostics fields.
17 jmc 1.2
18 jmc 1.1 C !USES:
19     IMPLICIT NONE
20     #include "SIZE.h"
21     #include "EEPARAMS.h"
22     #include "PARAMS.h"
23     #include "GRID.h"
24     #include "DIAGNOSTICS_SIZE.h"
25     #include "DIAGNOSTICS.h"
26    
27     INTEGER nLev
28     #ifdef ALLOW_FIZHI
29     #include "fizhi_SIZE.h"
30     PARAMETER (nLev = Nr+Nrphys)
31     #else
32     PARAMETER (nLev = Nr)
33     #endif
34    
35     C !INPUT PARAMETERS:
36 edhill 1.4 C listId :: Diagnostics list number being written
37 jmc 1.1 C myIter :: current iteration number
38 edhill 1.4 C myTime :: Current time of simulation (s)
39 jmc 1.1 C myThid :: my Thread Id number
40 edhill 1.3 INTEGER listId, myIter, myTime, myThid
41 jmc 1.1 CEOP
42    
43     C !LOCAL VARIABLES:
44 jmc 1.2 INTEGER j, m, ndId, iSp, iSm
45 jmc 1.1 CHARACTER*8 parms1
46     CHARACTER*3 mate_index
47     INTEGER mate
48     _RL statGlob(0:nStats,0:nLev,0:nRegions)
49     _RL tmp_Glob(0:nStats,0:nLev)
50     _RL undef, getcon
51     EXTERNAL getcon
52     c INTEGER ILNBLNK
53     c EXTERNAL ILNBLNK
54    
55     INTEGER ioUnit
56     CHARACTER*(MAX_LEN_MBUF) msgBuf
57    
58     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
59    
60     ioUnit= standardMessageUnit
61     undef = getcon('UNDEF')
62    
63     DO m = 1,diagSt_nbFlds(listId)
64     ndId = jSdiag(m,listId)
65     parms1 = gdiag(ndId)(1:8)
66 jmc 1.2 IF ( iSdiag(m,listId).NE.0 .AND. parms1(5:5).NE.'D' ) THEN
67 jmc 1.1 C-- Start processing 1 Fld :
68    
69     IF ( parms1(5:5).EQ.'C' ) THEN
70     C Check for Mate of a Counter Diagnostic
71     C --------------------------------------
72     mate_index = parms1(6:8)
73     READ (mate_index,'(I3)') mate
74     ELSE
75     mate = 0
76     ENDIF
77    
78     DO j=0,nRegions
79     IF ( diagSt_region(j,listId).GT.0 ) THEN
80 jmc 1.2 iSp = ABS(iSdiag(m,listId))
81     iSm = mSdiag(m,listId)
82 jmc 1.1 CALL DIAGSTATS_GLOBAL(
83     O statGlob(0,0,j), tmp_Glob,
84 jmc 1.2 I undef, nLev, j,
85     I ndId, mate, iSp, iSm, myThid )
86 jmc 1.1
87     C- Check for empty Diag (= not filled or using empty mask)
88     IF ( statGlob(0,0,j).EQ.0. ) THEN
89     _BEGIN_MASTER( myThid )
90     WRITE(msgBuf,'(A,I10,A,I3)')
91     & '- WARNING - from DIAGSTATS_OUTPUT at iter=', myIter,
92     & ' , region:', j
93     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
94     & SQUEEZE_RIGHT, myThid)
95     WRITE(msgBuf,'(A,I4,3A,I3,2A)')
96     & '- WARNING - diagSt.#',ndId, ' : ',diagSt_Flds(m,listId),
97     & ' (#',m,' ) in outp.Stream: ',diagSt_Fname(listId)
98     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
99     & SQUEEZE_RIGHT, myThid)
100     WRITE(msgBuf,'(2A)') '- WARNING - has not been filled,',
101     & ' OR using empty mask/region'
102     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
103     & SQUEEZE_RIGHT, myThid)
104     WRITE(msgBuf,'(A)')
105     & 'WARNING DIAGSTATS_OUTPUT => write UNDEF instead'
106     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
107     & SQUEEZE_RIGHT, myThid)
108     _END_MASTER( myThid )
109     ENDIF
110    
111     IF ( debugLevel .GE. debLevA ) THEN
112     _BEGIN_MASTER( myThid )
113 jmc 1.2 WRITE(ioUnit,'(A,I3,3A,I3,A,1PE10.3,2A)')
114 jmc 1.1 & ' Compute Stats, Diag. # ',ndId, ' ', cdiag(ndId),
115     & ' vol(',j,' ):', statGlob(0,0,j),' Parms: ',gdiag(ndId)
116     IF ( mate.GT.0 ) THEN
117 jmc 1.2 WRITE(ioUnit,'(A,I3,3A,I3,2(A,1PE10.3))')
118 jmc 1.1 & ' use Counter Mate # ', mate,' ',cdiag(mate),
119     & ' vol(',j,' ):',tmp_Glob(0,0), ' integral',tmp_Glob(1,0)
120     ENDIF
121     _END_MASTER( myThid )
122     ENDIF
123     ENDIF
124     ENDDO
125    
126 edhill 1.3 C-- Write to ASCII file:
127 jmc 1.1 IF (diagSt_Ascii) THEN
128     CALL DIAGSTATS_ASCII_OUT( statGlob, nLev, ndId,
129     & m, listId, myIter, myThid )
130     ENDIF
131    
132 edhill 1.3 IF (diagSt_mnc) THEN
133     CALL DIAGSTATS_MNC_OUT(
134     & statGlob, nLev, ndId,
135     & m, listId, myIter, myTime, myThid )
136     ENDIF
137    
138 jmc 1.1 C-- end of Processing Fld # m
139     ENDIF
140     ENDDO
141    
142 jmc 1.2 RETURN
143 jmc 1.1 END
144 jmc 1.2
145 jmc 1.1 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

  ViewVC Help
Powered by ViewVC 1.1.22