Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/mathlibs/src/parpack/pivout.f
5215 views
1
* Routine: PIVOUT - Parallel version of ARPACK UTILITY ROUTINE IVOUT
2
*
3
* Purpose: Integer vector output routine.
4
*
5
* Usage: CALL PIVOUT (COMM, LOUT, N, IX, IDIGIT, IFMT)
6
*
7
* Arguments
8
* COMM - MPI Communicator for the processor grid
9
* N - Length of array IX. (Input)
10
* IX - Integer array to be printed. (Input)
11
* IFMT - Format to be used in printing array IX. (Input)
12
* IDIGIT - Print up to ABS(IDIGIT) decimal digits / number. (Input)
13
* If IDIGIT .LT. 0, printing is done with 72 columns.
14
* If IDIGIT .GT. 0, printing is done with 132 columns.
15
*
16
*\SCCS Information:
17
* FILE: ivout.F SID: 1.2 DATE OF SID: 3/19/97 RELEASE: 1
18
*
19
*-----------------------------------------------------------------------
20
*
21
SUBROUTINE PIVOUT (COMM, LOUT, N, IX, IDIGIT, IFMT)
22
*
23
include 'mpif.h'
24
*
25
* .. MPI VARIABLES AND FUNCTIONS ..
26
* .. Variable Declaration ..
27
integer COMM, MYID, IERR
28
*
29
* ...
30
* ... SPECIFICATIONS FOR ARGUMENTS
31
INTEGER IX(*), N, IDIGIT, LOUT
32
CHARACTER IFMT*(*)
33
* ...
34
* ... SPECIFICATIONS FOR LOCAL VARIABLES
35
INTEGER I, NDIGIT, K1, K2, LLL
36
CHARACTER*80 LINE
37
* ...
38
* ... SPECIFICATIONS INTRINSICS
39
INTRINSIC MIN
40
*
41
* ..
42
* .. Executable Statements ..
43
* ...
44
* ... FIRST EXECUTABLE STATEMENT
45
*
46
* Determine processor configuration
47
*
48
call MPI_COMM_RANK( comm, myid, ierr )
49
*
50
* .. Only Processor 0 will write to file LOUT ..
51
*
52
IF ( MYID .EQ. 0 ) THEN
53
*
54
LLL = MIN ( LEN ( IFMT ), 80 )
55
DO 1 I = 1, LLL
56
LINE(I:I) = '-'
57
1 CONTINUE
58
*
59
DO 2 I = LLL+1, 80
60
LINE(I:I) = ' '
61
2 CONTINUE
62
*
63
WRITE ( LOUT, 2000 ) IFMT, LINE(1:LLL)
64
2000 FORMAT ( /1X, A /1X, A )
65
*
66
IF (N .LE. 0) RETURN
67
NDIGIT = IDIGIT
68
IF (IDIGIT .EQ. 0) NDIGIT = 4
69
*
70
*=======================================================================
71
* CODE FOR OUTPUT USING 72 COLUMNS FORMAT
72
*=======================================================================
73
*
74
IF (IDIGIT .LT. 0) THEN
75
*
76
NDIGIT = -IDIGIT
77
IF (NDIGIT .LE. 4) THEN
78
DO 10 K1 = 1, N, 10
79
K2 = MIN0(N,K1+9)
80
WRITE(LOUT,1000) K1,K2,(IX(I),I=K1,K2)
81
10 CONTINUE
82
*
83
ELSE IF (NDIGIT .LE. 6) THEN
84
DO 30 K1 = 1, N, 7
85
K2 = MIN0(N,K1+6)
86
WRITE(LOUT,1001) K1,K2,(IX(I),I=K1,K2)
87
30 CONTINUE
88
*
89
ELSE IF (NDIGIT .LE. 10) THEN
90
DO 50 K1 = 1, N, 5
91
K2 = MIN0(N,K1+4)
92
WRITE(LOUT,1002) K1,K2,(IX(I),I=K1,K2)
93
50 CONTINUE
94
*
95
ELSE
96
DO 70 K1 = 1, N, 3
97
K2 = MIN0(N,K1+2)
98
WRITE(LOUT,1003) K1,K2,(IX(I),I=K1,K2)
99
70 CONTINUE
100
END IF
101
*
102
*=======================================================================
103
* CODE FOR OUTPUT USING 132 COLUMNS FORMAT
104
*=======================================================================
105
*
106
ELSE
107
*
108
IF (NDIGIT .LE. 4) THEN
109
DO 90 K1 = 1, N, 20
110
K2 = MIN0(N,K1+19)
111
WRITE(LOUT,1000) K1,K2,(IX(I),I=K1,K2)
112
90 CONTINUE
113
*
114
ELSE IF (NDIGIT .LE. 6) THEN
115
DO 110 K1 = 1, N, 15
116
K2 = MIN0(N,K1+14)
117
WRITE(LOUT,1001) K1,K2,(IX(I),I=K1,K2)
118
110 CONTINUE
119
*
120
ELSE IF (NDIGIT .LE. 10) THEN
121
DO 130 K1 = 1, N, 10
122
K2 = MIN0(N,K1+9)
123
WRITE(LOUT,1002) K1,K2,(IX(I),I=K1,K2)
124
130 CONTINUE
125
*
126
ELSE
127
DO 150 K1 = 1, N, 7
128
K2 = MIN0(N,K1+6)
129
WRITE(LOUT,1003) K1,K2,(IX(I),I=K1,K2)
130
150 CONTINUE
131
END IF
132
END IF
133
WRITE (LOUT,1004)
134
135
ENDIF
136
*
137
1000 FORMAT(1X,I4,' - ',I4,':',20(1X,I5))
138
1001 FORMAT(1X,I4,' - ',I4,':',15(1X,I7))
139
1002 FORMAT(1X,I4,' - ',I4,':',10(1X,I11))
140
1003 FORMAT(1X,I4,' - ',I4,':',7(1X,I15))
141
1004 FORMAT(1X,' ')
142
*
143
RETURN
144
END
145
146