/[MITgcm]/MITgcm/pkg/monitor/mon_out.F
ViewVC logotype

Contents of /MITgcm/pkg/monitor/mon_out.F

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


Revision 1.16 - (show annotations) (download)
Thu Jun 22 14:44:47 2006 UTC (17 years, 11 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint58m_post, checkpoint58o_post, checkpoint58p_post, checkpoint58n_post, checkpoint58k_post, checkpoint58l_post
Changes since 1.15: +93 -91 lines
fixes for threading/mpi (only the first thread of the first mpi rank)

1 C $Header: /u/gcmpack/MITgcm/pkg/monitor/mon_out.F,v 1.15 2006/02/24 18:55:28 edhill Exp $
2 C $Name: $
3
4 #include "MONITOR_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: MON_OUT_I
9
10 C !INTERFACE:
11 SUBROUTINE MON_OUT_I( pref, value, foot, myThid )
12
13 C !DESCRIPTION:
14 C Formatted integer I/O for monitor print out.
15
16 C !INPUT PARAMETERS:
17 C pref - Field prefix ( ignored if == mon_string_none )
18 C value - Value to print
19 C foot - Field suffix ( ignored if == mon_string_none )
20 CHARACTER*(*) pref
21 INTEGER value
22 CHARACTER*(*) foot
23 INTEGER myThid
24 CEOP
25
26 CALL MON_OUT_ALL(pref, foot, 1, value, 0.0d0, myThid)
27 RETURN
28 END
29
30 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
31 CBOP
32 C !ROUTINE: MON_OUT_RS
33
34 C !INTERFACE:
35 SUBROUTINE MON_OUT_RS( pref, value, foot, myThid )
36
37 C !DESCRIPTION:
38 C Formatted RS I/O for monitor print out.
39
40 C !INPUT PARAMETERS:
41 C pref - Field prefix ( ignored if == mon_string_none )
42 C value - Value to print
43 C foot - Field suffix ( ignored if == mon_string_none )
44 CHARACTER*(*) pref
45 _RS value
46 CHARACTER*(*) foot
47 INTEGER myThid
48 CEOP
49 REAL*8 dtmp
50 dtmp = value
51
52 CALL MON_OUT_ALL(pref, foot, 2, 0, dtmp, myThid)
53 RETURN
54 END
55
56 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
57 CBOP
58 C !ROUTINE: MON_OUT_RL
59
60 C !INTERFACE:
61 SUBROUTINE MON_OUT_RL( pref, value, foot, myThid )
62
63 C !DESCRIPTION:
64 C Formatted RL I/O for monitor print out.
65
66 C !INPUT PARAMETERS:
67 C pref - Field prefix ( ignored if == mon_string_none )
68 C value - Value to print
69 C foot - Field suffix ( ignored if == mon_string_none )
70 CHARACTER*(*) pref
71 _RL value
72 CHARACTER*(*) foot
73 INTEGER myThid
74 CEOP
75 REAL*8 dtmp
76 dtmp = value
77
78 CALL MON_OUT_ALL(pref, foot, 2, 0, dtmp, myThid)
79 RETURN
80 END
81
82 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
83 CBOP 1
84 C !ROUTINE: MON_OUT_ALL
85
86 C !INTERFACE:
87 SUBROUTINE MON_OUT_ALL(
88 I pref, foot,
89 I itype, ival, dval,
90 I myThid )
91
92 C !DESCRIPTION:
93 C Formatted I/O for monitor output.
94
95 C !USES:
96 IMPLICIT NONE
97 #include "SIZE.h"
98 #include "EEPARAMS.h"
99 #include "PARAMS.h"
100 #include "EESUPPORT.h"
101 #include "MONITOR.h"
102 INTEGER IFNBLNK
103 INTEGER ILNBLNK
104
105 C !INPUT PARAMETERS:
106 C pref - Field prefix ( ignored if == mon_string_none )
107 C foot - Field suffix ( ignored if == mon_string_none )
108 CHARACTER*(*) pref, foot
109 INTEGER itype
110 INTEGER ival
111 REAL*8 dval
112 INTEGER myThid
113 CEOP
114
115 C !LOCAL VARIABLES:
116 C msgBuf - Buffer for building output string
117 C lBuf - Buffer for length
118 C I0 - Temps used in calculating string length
119 CHARACTER*(MAX_LEN_MBUF) msgBuf
120 INTEGER lBuf
121 INTEGER i, I0,I1, IL
122 CHARACTER*(100) mon_vname
123 INTEGER nvname
124 INTEGER ivarr(1)
125 REAL*8 dvarr(1)
126
127 _BEGIN_MASTER(myThid)
128
129 #ifdef ALLOW_USE_MPI
130 IF ( .NOT. useSingleCPUIO .OR. mpiMyId .EQ. 0 ) THEN
131 #endif /* ALLOW_USE_MPI */
132
133 ivarr(1) = ival
134 dvarr(1) = dval
135
136 msgBuf = ' '
137 lBuf = 0
138
139 DO i = 1,100
140 mon_vname(i:i) = ' '
141 ENDDO
142
143 I0 = IFNBLNK(mon_head)
144 I1 = ILNBLNK(mon_head)
145 IL = I1-I0+1
146 IF ( IL .GT. 0 .AND. lBuf+IL+1 .LE. MAX_LEN_MBUF ) THEN
147 msgBuf(1:IL) = mon_head
148 lBuf = IL+1
149 msgBuf(lBuf:lBuf) = ' '
150 ENDIF
151
152 IF ( mon_pref(1:mon_prefL) .NE. mon_string_none .AND.
153 & lBuf+mon_prefL+1 .LE. MAX_LEN_MBUF ) THEN
154 lBuf = lBuf+1
155 msgBuf(lBuf:lBuf+mon_prefL-1) = mon_pref(1:mon_prefL)
156 lBuf = lBuf+mon_prefL-1
157 mon_vname(1:mon_prefL) = mon_pref(1:mon_prefL)
158 nvname = mon_prefL
159 ELSE
160 nvname = 0
161 ENDIF
162
163 I0 = IFNBLNK(pref)
164 I1 = ILNBLNK(pref)
165 IL = I1-I0+1
166 IF ( IL .GT. 0 ) THEN
167 IF ( pref(I0:I1) .NE. mon_string_none .AND.
168 & lBuf+IL+1 .LE. MAX_LEN_MBUF ) THEN
169 lBuf = lBuf+1
170 msgBuf(lBuf:lBuf+IL-1) = pref(I0:I1)
171 lBuf = lBuf+IL-1
172 mon_vname((nvname+1):(nvname+IL)) = pref(I0:I1)
173 nvname = nvname + IL
174 ENDIF
175 ENDIF
176
177 I0 = IFNBLNK(foot)
178 I1 = ILNBLNK(foot)
179 IL = I1-I0+1
180 IF ( IL .GT. 0 ) THEN
181 IF ( foot(I0:I1) .NE. mon_string_none .AND.
182 & lBuf+IL+1 .LE. MAX_LEN_MBUF ) THEN
183 lBuf = lBuf+1
184 msgBuf(lBuf:lBuf+IL-1) = foot(I0:I1)
185 lBuf = lBuf+IL-1
186 mon_vname((nvname+1):(nvname+IL)) = foot(I0:I1)
187 nvname = nvname + IL
188 ENDIF
189 ENDIF
190
191 C write(*,*) 'mon_vname = ''', mon_vname(1:nvname), ''''
192 C write(*,*) 'mon_write_mnc = ''', mon_write_mnc, ''''
193 C write(*,*) 'mon_write_stdout = ''', mon_write_stdout, ''''
194
195 msgBuf(35:35) = '='
196
197 IF (mon_write_stdout) THEN
198 IF (itype .EQ. 1)
199 & WRITE(msgBuf(36:57),'(1X,I21)') ival
200 IF (itype .EQ. 2)
201 & WRITE(msgBuf(36:57),'(1X,1P1E21.13)') dval
202 C & WRITE(msgBuf(35:57),'(1X,1P1E22.13E3)') dval
203
204 C Note that the above call fixes problems where there is
205 C insufficient space in the output format to handle variables
206 C such as 1.234500000E107 which, although they are wildly large,
207 C they may actually happen in some situations. But, changing
208 C the monitor output format also means changing the routines
209 C that parse the monitor output for testreport.
210
211 CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
212 ENDIF
213
214 #ifdef ALLOW_MNC
215 IF (useMNC .AND. mon_write_mnc) THEN
216 CALL MNC_CW_APPEND_VNAME(
217 & mon_vname, '-_-_--__-__t', 0,0, myThid)
218 IF (itype .EQ. 1)
219 & CALL MNC_CW_I_W(
220 & 'I',mon_fname,1,1,mon_vname, ivarr, myThid)
221 IF (itype .EQ. 2)
222 & CALL MNC_CW_RL_W(
223 & 'D',mon_fname,1,1,mon_vname, dvarr, myThid)
224 ENDIF
225 #endif /* ALLOW_MNC */
226
227 #ifdef ALLOW_USE_MPI
228 ENDIF
229 #endif /* ALLOW_USE_MPI */
230
231 _END_MASTER(myThid)
232
233 RETURN
234 END
235
236 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

  ViewVC Help
Powered by ViewVC 1.1.22