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

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

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


Revision 1.4 - (hide annotations) (download)
Wed Aug 14 00:54:06 2013 UTC (10 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64o, checkpoint64n, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.3: +4 -15 lines
add a parameter (diag_pkgSatus) to track the status of the pkg activation;
this replace/extend the use of logical param "settingDiags" (to check
when adding diag to the list) to also check any DIAGNOSTICS_[]FILL* call.

1 jmc 1.4 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_addtolist.F,v 1.3 2010/01/15 00:25:58 jmc 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: DIAGNOSTICS_ADDTOLIST
9    
10     C !INTERFACE:
11     SUBROUTINE DIAGNOSTICS_ADDTOLIST (
12     O diagNum,
13     I diagName, diagCode, diagUnits, diagTitle, diagMate,
14     I myThid )
15    
16     C !DESCRIPTION:
17     C routine to add 1 diagnostics to the list of available diagnostics:
18     C set the attributes:
19     C name (=cdiag), parsing code (=gdiag), units (=udiag), title (=tdiag)
20     C and diagnostic mate number (=hdiag) of the new diagnostic and
21     C update the total number of available diagnostics
22     C Note: needs to be called after DIAGNOSTICS_INIT_EARLY
23     C and before DIAGNOSTICS_INIT_FIXED
24    
25     C !USES:
26     IMPLICIT NONE
27     #include "SIZE.h"
28     #include "EEPARAMS.h"
29     #include "DIAGNOSTICS_SIZE.h"
30     #include "DIAGNOSTICS.h"
31    
32     C !INPUT PARAMETERS:
33     C diagName :: diagnostic name to declare
34     C diagCode :: parser code for this diagnostic
35     C diagUnits :: field units for this diagnostic
36     C diagTitle :: field description for this diagnostic
37     C diagMate :: diagnostic mate number
38     C myThid :: my Thread Id number
39     CHARACTER*8 diagName
40     CHARACTER*16 diagCode
41     CHARACTER*16 diagUnits
42     CHARACTER*(*) diagTitle
43     INTEGER diagMate
44     INTEGER myThid
45    
46     C !OUTPUT PARAMETERS:
47     C numDiag :: diagnostic number in the list of available diagnostics
48     INTEGER diagNum
49     CEOP
50    
51     C !LOCAL VARIABLES:
52 jmc 1.2 C msgBuf :: Informational/error message buffer
53 jmc 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
54     INTEGER n
55    
56     C-- Initialise
57     diagNum = 0
58    
59     _BEGIN_MASTER( myThid)
60    
61 jmc 1.3 C-- Check if this S/R is called from the right place ;
62     C needs to be after DIAGNOSTICS_INIT_EARLY and before DIAGNOSTICS_INIT_FIXED
63 jmc 1.4 IF ( diag_pkgStatus.NE.ready2setDiags ) THEN
64     CALL DIAGNOSTICS_STATUS_ERROR( 'DIAGNOSTICS_ADDTOLIST',
65     & ' ', diagName, ready2setDiags, myThid )
66 jmc 1.3 ENDIF
67    
68 jmc 1.1 C-- Search for "diagName" in the list of available diagnostics:
69     DO n=1,ndiagt
70     IF ( cdiag(n).EQ.diagName ) THEN
71     diagNum = n
72     IF ( gdiag(n).EQ.diagCode .AND. hdiag(n).EQ.diagMate ) THEN
73     C- diagnostics is already defined and has the same characteristics
74     WRITE(msgBuf,'(3A,I6,A)') 'DIAGNOSTICS_ADDTOLIST: diag=',
75     & diagName,' is already defined (# ',n,' )'
76     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
77     & SQUEEZE_RIGHT , myThid)
78     WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_ADDTOLIST:',
79     & ' with same parser => update Title & Units '
80     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
81     & SQUEEZE_RIGHT , myThid)
82     udiag(diagNum) = diagUnits
83     tdiag(diagNum) = diagTitle
84     ELSE
85     C- diagnostics is already defined but with different characteristics
86     WRITE(msgBuf,'(3A,I6,A)') 'DIAGNOSTICS_ADDTOLIST: diag=',
87     & diagName,' is already defined (# ',n,' )'
88     CALL PRINT_ERROR( msgBuf , myThid)
89     WRITE(msgBuf,'(4A,I6)') 'DIAGNOSTICS_ADDTOLIST: cannot ',
90     & 'change parser="',gdiag(n),'" & mate=',hdiag(n)
91     CALL PRINT_ERROR( msgBuf , myThid)
92     WRITE(msgBuf,'(4A,I6,A)') 'DIAGNOSTICS_ADDTOLIST:',
93     & ' to : "',diagCode,'" and mate=',diagMate,' ; => STOP'
94     CALL PRINT_ERROR( msgBuf , myThid)
95     STOP 'ABNORMAL END: S/R DIAGNOSTICS_ADDTOLIST'
96     ENDIF
97     ENDIF
98     ENDDO
99    
100     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
101    
102     IF ( diagNum.EQ.0 ) THEN
103     C-- Add one diagnostic to the list of available diagnostics:
104     diagNum = ndiagt + 1
105    
106     IF ( diagNum .LE. ndiagMax ) THEN
107     cdiag(diagNum) = diagName
108     gdiag(diagNum) = diagCode
109     hdiag(diagNum) = diagMate
110     udiag(diagNum) = diagUnits
111     tdiag(diagNum) = diagTitle
112     ndiagt = diagNum
113     ELSE
114     WRITE(msgBuf,'(2A,I6)') 'DIAGNOSTICS_ADDTOLIST:',
115     & ' Exceed Max.Number of diagnostics ndiagMax=', ndiagMax
116     CALL PRINT_ERROR( msgBuf , myThid)
117     WRITE(msgBuf,'(2A)')
118     & 'DIAGNOSTICS_ADDTOLIST: when setting diagnostic: ',diagName
119     CALL PRINT_ERROR( msgBuf , myThid)
120     STOP 'ABNORMAL END: S/R DIAGNOSTICS_ADDTOLIST'
121     ENDIF
122    
123     ENDIF
124    
125     _END_MASTER( myThid )
126    
127     RETURN
128     END

  ViewVC Help
Powered by ViewVC 1.1.22