/[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.1 - (hide annotations) (download)
Fri May 20 07:28:52 2005 UTC (18 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57i_post
Add new capability: compute & write Global/Regional & per level statistics

1 jmc 1.1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_out.F,v 1.13 2005/05/02 21:24:12 edhill 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: DIAGSTATS_OUTPUT
9    
10     C !INTERFACE:
11     SUBROUTINE DIAGSTATS_OUTPUT(
12     I listId,
13     I myIter,
14     I myThid )
15    
16     C !DESCRIPTION:
17     C Write output for diagnostics fields.
18    
19     C !USES:
20     IMPLICIT NONE
21     #include "SIZE.h"
22     #include "EEPARAMS.h"
23     #include "PARAMS.h"
24     #include "GRID.h"
25     #include "DIAGNOSTICS_SIZE.h"
26     #include "DIAGNOSTICS.h"
27    
28     INTEGER nLev
29     #ifdef ALLOW_FIZHI
30     #include "fizhi_SIZE.h"
31     PARAMETER (nLev = Nr+Nrphys)
32     #else
33     PARAMETER (nLev = Nr)
34     #endif
35    
36     C !INPUT PARAMETERS:
37     C listId :: Diagnostics list number being written
38     C myIter :: current iteration number
39     C myThid :: my Thread Id number
40     INTEGER listId, myIter, myThid
41     CEOP
42    
43     C !LOCAL VARIABLES:
44     INTEGER j, m, ndId
45     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     IF ( iSdiag(ndId).NE.0 .AND. parms1(5:5).NE.'D' ) THEN
67     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     CALL DIAGSTATS_GLOBAL(
81     O statGlob(0,0,j), tmp_Glob,
82     I undef, nLev,
83     I j, ndId,mate,myThid)
84    
85     C- Check for empty Diag (= not filled or using empty mask)
86     IF ( statGlob(0,0,j).EQ.0. ) THEN
87     _BEGIN_MASTER( myThid )
88     WRITE(msgBuf,'(A,I10,A,I3)')
89     & '- WARNING - from DIAGSTATS_OUTPUT at iter=', myIter,
90     & ' , region:', j
91     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
92     & SQUEEZE_RIGHT, myThid)
93     WRITE(msgBuf,'(A,I4,3A,I3,2A)')
94     & '- WARNING - diagSt.#',ndId, ' : ',diagSt_Flds(m,listId),
95     & ' (#',m,' ) in outp.Stream: ',diagSt_Fname(listId)
96     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
97     & SQUEEZE_RIGHT, myThid)
98     WRITE(msgBuf,'(2A)') '- WARNING - has not been filled,',
99     & ' OR using empty mask/region'
100     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
101     & SQUEEZE_RIGHT, myThid)
102     WRITE(msgBuf,'(A)')
103     & 'WARNING DIAGSTATS_OUTPUT => write UNDEF instead'
104     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
105     & SQUEEZE_RIGHT, myThid)
106     _END_MASTER( myThid )
107     ENDIF
108    
109     IF ( debugLevel .GE. debLevA ) THEN
110     _BEGIN_MASTER( myThid )
111     WRITE(ioUnit,'(A,I3,3A,I3,A,1PE10.3,2A)')
112     & ' Compute Stats, Diag. # ',ndId, ' ', cdiag(ndId),
113     & ' vol(',j,' ):', statGlob(0,0,j),' Parms: ',gdiag(ndId)
114     IF ( mate.GT.0 ) THEN
115     WRITE(ioUnit,'(A,I3,3A,I3,2(A,1PE10.3))')
116     & ' use Counter Mate # ', mate,' ',cdiag(mate),
117     & ' vol(',j,' ):',tmp_Glob(0,0), ' integral',tmp_Glob(1,0)
118     ENDIF
119     _END_MASTER( myThid )
120     ENDIF
121     ENDIF
122     ENDDO
123    
124     C-- Write to file:
125     IF (diagSt_Ascii) THEN
126     CALL DIAGSTATS_ASCII_OUT( statGlob, nLev, ndId,
127     & m, listId, myIter, myThid )
128     ENDIF
129    
130     C-- end of Processing Fld # m
131     ENDIF
132     ENDDO
133    
134     RETURN
135     END
136    
137     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

  ViewVC Help
Powered by ViewVC 1.1.22