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

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

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


Revision 1.1 - (hide annotations) (download)
Wed Aug 14 00:54:45 2013 UTC (10 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64o, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint64n, 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, checkpoint65, HEAD
new S/R to print error message and stop when pkgStatus is wrong

1 jmc 1.1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_addtolist.F,v 1.3 2010/01/15 00:25:58 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_STATUS_ERROR
9    
10     C !INTERFACE:
11     SUBROUTINE DIAGNOSTICS_STATUS_ERROR (
12     I callerSubR, errMsg, diagName,
13     I expectStatus, myThid )
14    
15     C !DESCRIPTION:
16     C Routine to print the appropriate error message when one of the public
17     C diagnostics interface S/R (e.g., DIAGNOSTICS_ADDTOLIST or one of the
18     C DIAGNOSTICS_[]_FILL S/R) is called at the wrong place in the sequence
19     C of calls (initialisation stages or time-stepping part).
20    
21     C !USES:
22     IMPLICIT NONE
23     #include "SIZE.h"
24     #include "EEPARAMS.h"
25     C- needed to get "useFizhi":
26     #include "PARAMS.h"
27     #include "DIAGNOSTICS_SIZE.h"
28     #include "DIAGNOSTICS.h"
29    
30     C !INPUT PARAMETERS:
31     C callerSubR :: name of subroutine which is calling this S/R
32     C errMsg :: additional error message to print
33     C diagName :: diagnostic name (if relevant for this call)
34     C expectStatus :: expected pkg-status when this S/R is called
35     C myThid :: my Thread Id number
36     CHARACTER*(*) callerSubR
37     CHARACTER*(*) errMsg
38     CHARACTER*8 diagName
39     INTEGER expectStatus
40     INTEGER myThid
41     CEOP
42    
43     C !LOCAL VARIABLES:
44     C msgBuf :: Informational/error message buffer
45     CHARACTER*(MAX_LEN_MBUF) msgBuf
46    
47     C-- Initialise
48    
49     _BEGIN_MASTER( myThid)
50    
51     C-- Check if this S/R is called from the right place
52     WRITE(msgBuf,'(4A)') '*** DIAGNOSTICS_STATUS_ERROR ***',
53     & ' from: ', callerSubR, ' call'
54     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
55     & SQUEEZE_RIGHT, myThid )
56     IF ( diagName.EQ.blkName ) THEN
57     WRITE(msgBuf,'(1A,2(A,I3),2A)') callerSubR,
58     & ': expectStatus=', expectStatus,
59     & ', pkgStatus=', diag_pkgStatus, ' : ', errMsg
60     CALL PRINT_ERROR( msgBuf, myThid )
61     ELSE
62     WRITE(msgBuf,'(3A,2(A,I3))') callerSubR,
63     & ': diagName="', diagName, '", expectStatus=',
64     & expectStatus, ', pkgStatus=', diag_pkgStatus
65     CALL PRINT_ERROR( msgBuf, myThid )
66     ENDIF
67    
68     IF ( diag_pkgStatus.EQ.-1 ) THEN
69     WRITE(msgBuf,'(4A)') callerSubR,
70     & ': cannot be used if useDiagnostics=FALSE (data.pkg)'
71     CALL PRINT_ERROR( msgBuf, myThid )
72     IF ( .NOT.useFizhi )
73     & STOP 'ABNORMAL END: S/R DIAGNOSTICS_STATUS_ERROR'
74     ELSEIF ( diag_pkgStatus.GT.expectStatus ) THEN
75     C-- case pkgStatus > expectStatus
76     WRITE(msgBuf,'(3A)') callerSubR,
77     & ': <== called from the WRONG place, i.e.'
78     CALL PRINT_ERROR( msgBuf, myThid )
79     IF ( expectStatus.EQ.1 ) THEN
80     WRITE(msgBuf,'(3A)') callerSubR, ': after ',
81     & 'DIAGNOSTICS_INIT_EARLY call in PACKAGES_INIT_FIXED'
82     ELSEIF ( expectStatus.EQ.2 ) THEN
83     WRITE(msgBuf,'(3A)') callerSubR, ': after ',
84     & 'DIAGNOSTICS_INIT_FIXED call in PACKAGES_INIT_FIXED'
85     ELSEIF ( expectStatus.EQ.3 ) THEN
86     WRITE(msgBuf,'(3A)') callerSubR, ': after ',
87     & 'DIAGNOSTICS_INIT_VARIA call in PACKAGES_INIT_VARIABLES'
88     ELSEIF ( expectStatus.EQ.10 ) THEN
89     WRITE(msgBuf,'(3A)') callerSubR, ': after ',
90     & 'DIAGNOSTICS_SWITCH_ONOFF call in FORWARD_STEP'
91     ELSE
92     WRITE(msgBuf,'(3A)') callerSubR, ': after ',
93     & 'the last DIAGNOSTICS_WRITE call in DO_THE_MODEL_IO'
94     ENDIF
95     CALL PRINT_ERROR( msgBuf, myThid )
96     STOP 'ABNORMAL END: S/R DIAGNOSTICS_STATUS_ERROR'
97     ELSEIF ( diag_pkgStatus.GE.1 ) THEN
98     C-- case pkgStatus < expectStatus
99     WRITE(msgBuf,'(2A)') callerSubR,
100     & ': <== called from the WRONG place, i.e.'
101     CALL PRINT_ERROR( msgBuf, myThid )
102     IF ( expectStatus.EQ.2 ) THEN
103     WRITE(msgBuf,'(3A)') callerSubR, ': before ',
104     & 'DIAGNOSTICS_INIT_EARLY call in PACKAGES_INIT_FIXED'
105     ELSEIF ( expectStatus.EQ.3 ) THEN
106     WRITE(msgBuf,'(3A)') callerSubR, ': before ',
107     & 'DIAGNOSTICS_INIT_FIXED call in PACKAGES_INIT_FIXED'
108     ELSEIF ( expectStatus.EQ.10 ) THEN
109     WRITE(msgBuf,'(3A)') callerSubR, ': before ',
110     & 'DIAGNOSTICS_INIT_VARIA call in PACKAGES_INIT_VARIABLES'
111     ELSEIF ( expectStatus.EQ.20 ) THEN
112     WRITE(msgBuf,'(3A)') callerSubR, ': before ',
113     & 'DIAGNOSTICS_SWITCH_ONOFF call in FORWARD_STEP'
114     ELSE
115     WRITE(msgBuf,'(3A)') callerSubR, ': before ',
116     & 'the last DIAGNOSTICS_WRITE call in DO_THE_MODEL_IO'
117     ENDIF
118     CALL PRINT_ERROR( msgBuf, myThid )
119     IF ( .NOT.useFizhi )
120     & STOP 'ABNORMAL END: S/R DIAGNOSTICS_STATUS_ERROR'
121     ELSE
122     C-- case pkgStatus < 1 (most likely: pkgStatus=0 )
123     WRITE(msgBuf,'(4A)') callerSubR,
124     & ': called but nothing set in pkg/diagnostics'
125     CALL PRINT_ERROR( msgBuf, myThid )
126     STOP 'ABNORMAL END: S/R DIAGNOSTICS_STATUS_ERROR'
127     ENDIF
128    
129     _END_MASTER( myThid )
130    
131     RETURN
132     END

  ViewVC Help
Powered by ViewVC 1.1.22