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

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

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


Revision 1.1 - (show annotations) (download)
Wed Aug 14 00:54:45 2013 UTC (10 years, 8 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 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