Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/mathlibs/src/parpack/pcvout.f
5191 views
1
* Routine: PCVOUT - Parallel Version of ARPACK utility routine CVOUT
2
*
3
* Purpose: Complex vector output routine.
4
*
5
* Usage: CALL PCVOUT (COMM, LOUT, N, CX, IDIGIT, IFMT)
6
*
7
* Arguments
8
* COMM - MPI Communicator for the processor grid
9
* N - Length of array CX. (Input)
10
* CX - Complex array to be printed. (Input)
11
* IFMT - Format to be used in printing array CX. (Input)
12
* IDIGIT - Print up to IABS(IDIGIT) decimal digits per number. (In)
13
* If IDIGIT .LT. 0, printing is done with 72 columns.
14
* If IDIGIT .GT. 0, printing is done with 132 columns.
15
*
16
* FILE: vout.F SID: 1.1 DATE OF SID: 3/19/97 RELEASE: 1
17
*
18
*-----------------------------------------------------------------------
19
*
20
SUBROUTINE PCVOUT( COMM, LOUT, N, CX, IDIGIT, IFMT )
21
* ...
22
include 'mpif.h'
23
*
24
* .. MPI VARIABLES AND FUNCTIONS ..
25
* .. Variable Declaration ..
26
integer COMM, MYID, IERR
27
*
28
* ... SPECIFICATIONS FOR ARGUMENTS
29
INTEGER N, IDIGIT, LOUT
30
Complex
31
& CX( * )
32
CHARACTER IFMT*( * )
33
* ...
34
* ... SPECIFICATIONS FOR LOCAL VARIABLES
35
INTEGER I, NDIGIT, K1, K2, LLL
36
CHARACTER*80 LINE
37
* ...
38
* ... FIRST EXECUTABLE STATEMENT
39
*
40
*
41
* Determine processor configuration
42
*
43
call MPI_COMM_RANK( comm, myid, ierr )
44
*
45
* .. Only Processor 0 will write to file LOUT ..
46
*
47
IF ( MYID .EQ. 0 ) THEN
48
*
49
LLL = MIN( LEN( IFMT ), 80 )
50
DO 10 I = 1, LLL
51
LINE( I: I ) = '-'
52
10 CONTINUE
53
*
54
DO 20 I = LLL + 1, 80
55
LINE( I: I ) = ' '
56
20 CONTINUE
57
*
58
WRITE( LOUT, 9999 )IFMT, LINE( 1: LLL )
59
9999 FORMAT( / 1X, A / 1X, A )
60
*
61
IF( N.LE.0 )
62
$ RETURN
63
NDIGIT = IDIGIT
64
IF( IDIGIT.EQ.0 )
65
$ NDIGIT = 4
66
*
67
*=======================================================================
68
* CODE FOR OUTPUT USING 72 COLUMNS FORMAT
69
*=======================================================================
70
*
71
IF( IDIGIT.LT.0 ) THEN
72
NDIGIT = -IDIGIT
73
IF( NDIGIT.LE.4 ) THEN
74
DO 30 K1 = 1, N, 2
75
K2 = MIN0( N, K1+1 )
76
IF (K1.NE.N) THEN
77
WRITE( LOUT, 9998 )K1, K2, ( CX( I ),
78
$ I = K1, K2 )
79
ELSE
80
WRITE( LOUT, 9997 )K1, K2, ( CX( I ),
81
$ I = K1, K2 )
82
END IF
83
30 CONTINUE
84
ELSE IF( NDIGIT.LE.6 ) THEN
85
DO 40 K1 = 1, N, 2
86
K2 = MIN0( N, K1+1 )
87
IF (K1.NE.N) THEN
88
WRITE( LOUT, 9988 )K1, K2, ( CX( I ),
89
$ I = K1, K2 )
90
ELSE
91
WRITE( LOUT, 9987 )K1, K2, ( CX( I ),
92
$ I = K1, K2 )
93
END IF
94
40 CONTINUE
95
ELSE IF( NDIGIT.LE.8 ) THEN
96
DO 50 K1 = 1, N, 2
97
K2 = MIN0( N, K1+1 )
98
IF (K1.NE.N) THEN
99
WRITE( LOUT, 9978 )K1, K2, ( CX( I ),
100
$ I = K1, K2 )
101
ELSE
102
WRITE( LOUT, 9977 )K1, K2, ( CX( I ),
103
$ I = K1, K2 )
104
END IF
105
50 CONTINUE
106
ELSE
107
DO 60 K1 = 1, N
108
WRITE( LOUT, 9968 )K1, K1, CX( I )
109
60 CONTINUE
110
END IF
111
*
112
*=======================================================================
113
* CODE FOR OUTPUT USING 132 COLUMNS FORMAT
114
*=======================================================================
115
*
116
ELSE
117
IF( NDIGIT.LE.4 ) THEN
118
DO 70 K1 = 1, N, 4
119
K2 = MIN0( N, K1+3 )
120
IF ((K1+3).LE.N) THEN
121
WRITE( LOUT, 9958 )K1, K2, ( CX( I ),
122
$ I = K1, K2 )
123
ELSE IF ((K1+3-N) .EQ. 1) THEN
124
WRITE( LOUT, 9957 )K1, K2, ( CX( I ),
125
$ I = K1, K2 )
126
ELSE IF ((K1+3-N) .EQ. 2) THEN
127
WRITE( LOUT, 9956 )K1, K2, ( CX( I ),
128
$ I = K1, K2 )
129
ELSE IF ((K1+3-N) .EQ. 1) THEN
130
WRITE( LOUT, 9955 )K1, K2, ( CX( I ),
131
$ I = K1, K2 )
132
END IF
133
70 CONTINUE
134
ELSE IF( NDIGIT.LE.6 ) THEN
135
DO 80 K1 = 1, N, 3
136
K2 = MIN0( N, K1+2 )
137
IF ((K1+2).LE.N) THEN
138
WRITE( LOUT, 9948 )K1, K2, ( CX( I ),
139
$ I = K1, K2 )
140
ELSE IF ((K1+2-N) .EQ. 1) THEN
141
WRITE( LOUT, 9947 )K1, K2, ( CX( I ),
142
$ I = K1, K2 )
143
ELSE IF ((K1+2-N) .EQ. 2) THEN
144
WRITE( LOUT, 9946 )K1, K2, ( CX( I ),
145
$ I = K1, K2 )
146
END IF
147
80 CONTINUE
148
ELSE IF( NDIGIT.LE.8 ) THEN
149
DO 90 K1 = 1, N, 3
150
K2 = MIN0( N, K1+2 )
151
IF ((K1+2).LE.N) THEN
152
WRITE( LOUT, 9938 )K1, K2, ( CX( I ),
153
$ I = K1, K2 )
154
ELSE IF ((K1+2-N) .EQ. 1) THEN
155
WRITE( LOUT, 9937 )K1, K2, ( CX( I ),
156
$ I = K1, K2 )
157
ELSE IF ((K1+2-N) .EQ. 2) THEN
158
WRITE( LOUT, 9936 )K1, K2, ( CX( I ),
159
$ I = K1, K2 )
160
END IF
161
90 CONTINUE
162
ELSE
163
DO 100 K1 = 1, N, 2
164
K2 = MIN0( N, K1+1 )
165
IF ((K1+2).LE.N) THEN
166
WRITE( LOUT, 9928 )K1, K2, ( CX( I ),
167
$ I = K1, K2 )
168
ELSE IF ((K1+2-N) .EQ. 1) THEN
169
WRITE( LOUT, 9927 )K1, K2, ( CX( I ),
170
$ I = K1, K2 )
171
END IF
172
100 CONTINUE
173
END IF
174
END IF
175
WRITE( LOUT, 9994 )
176
*
177
*
178
ENDIF
179
RETURN
180
*
181
*=======================================================================
182
* FORMAT FOR 72 COLUMNS
183
*=======================================================================
184
*
185
* DISPLAY 4 SIGNIFICANT DIGITS
186
*
187
9998 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
188
$ 1P,2('(',E10.3,',',E10.3,') ') )
189
9997 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
190
$ 1P,1('(',E10.3,',',E10.3,') ') )
191
*
192
* DISPLAY 6 SIGNIFICANT DIGITS
193
*
194
9988 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
195
$ 1P,2('(',E12.5,',',E12.5,') ') )
196
9987 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
197
$ 1P,1('(',E12.5,',',E12.5,') ') )
198
*
199
* DISPLAY 8 SIGNIFICANT DIGITS
200
*
201
9978 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
202
$ 1P,2('(',E14.7,',',E14.7,') ') )
203
9977 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
204
$ 1P,1('(',E14.7,',',E14.7,') ') )
205
*
206
* DISPLAY 13 SIGNIFICANT DIGITS
207
*
208
9968 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
209
$ 1P,1('(',E20.13,',',E20.13,') ') )
210
*
211
*=========================================================================
212
* FORMAT FOR 132 COLUMNS
213
*=========================================================================
214
*
215
* DISPLAY 4 SIGNIFICANT DIGITS
216
*
217
9958 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
218
$ 1P,4('(',E10.3,',',E10.3,') ') )
219
9957 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
220
$ 1P,3('(',E10.3,',',E10.3,') ') )
221
9956 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
222
$ 1P,2('(',E10.3,',',E10.3,') ') )
223
9955 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
224
$ 1P,1('(',E10.3,',',E10.3,') ') )
225
*
226
* DISPLAY 6 SIGNIFICANT DIGITS
227
*
228
9948 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
229
$ 1P,3('(',E12.5,',',E12.5,') ') )
230
9947 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
231
$ 1P,2('(',E12.5,',',E12.5,') ') )
232
9946 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
233
$ 1P,1('(',E12.5,',',E12.5,') ') )
234
*
235
* DISPLAY 8 SIGNIFICANT DIGITS
236
*
237
9938 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
238
$ 1P,3('(',E14.7,',',E14.7,') ') )
239
9937 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
240
$ 1P,2('(',E14.7,',',E14.7,') ') )
241
9936 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
242
$ 1P,1('(',E14.7,',',E14.7,') ') )
243
*
244
* DISPLAY 13 SIGNIFICANT DIGITS
245
*
246
9928 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
247
$ 1P,2('(',E20.13,',',E20.13,') ') )
248
9927 FORMAT( 1X, I4, ' - ', I4, ':', 1X,
249
$ 1P,1('(',E20.13,',',E20.13,') ') )
250
*
251
*
252
*
253
9994 FORMAT( 1X, ' ' )
254
END
255
256