/
README
232 lines (171 loc) · 8.58 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
This is the ARPACK++ include directory.
1) Files included in this directory:
a) Files that contain ARPACK++ classes definitions:
i) Base classes:
file class
---------- ----------------
arrseig.h ARrcStdEig
arrgeig.h ARrcGenEig
arseig.h ARStdEig
argeig.h ARGenEig
armat.h ARMatrix
ii) Classes that require matrix-vector product functions:
file class
---------- ----------------
arssym.h ARSymStdEig
arsnsym.h ARNonSymStdEig
arscomp.h ARCompStdEig
argsym.h ARSymGenEig
argnsym.h ARNonSymGenEig
argcomp.g ARCompGenEig
iii) Classes that require matrices in CSC format (SuperLU version):
file class
---------- ----------------
arlssym.h ARluSymStdEig
arlsnsym.h ARluNonSymStdEig
arlscomp.h ARluCompStdEig
arlgsym.h ARluSymGenEig
arlgnsym.h ARluNonSymGenEig
arlgcomp.h ARluCompGenEig
iv) Classes that require matrices in CSC format (UMFPACK version):
file class
---------- ----------------
arussym.h ARluSymStdEig
arusnsym.h ARluNonSymStdEig
aruscomp.h ARluCompStdEig
arugsym.h ARluSymGenEig
arugnsym.h ARluNonSymGenEig
arugcomp.h ARluCompGenEig
v) Classes that require matrices in band format:
file class
---------- ----------------
arbssym.h ARluSymStdEig
arbsnsym.h ARluNonSymStdEig
arbscomp.h ARluCompStdEig
arbgsym.h ARluSymGenEig
arbgnsym.h ARluNonSymGenEig
arbgcomp.h ARluCompGenEig
vi) Reverse communication classes:
file class
---------- ----------------
arrssym.h ARrcSymStdEig
arrsnsym.h ARrcNonSymStdEig
arrscomp.h ARrcCompStdEig
arrgsym.h ARrcSymGenEig
arrgnsym.h ARrcNonSymGenEig
arrgcomp.h ARrcCompGenEig
vii) Matrix classes:
file class
---------- ----------------
arlsmat.h ARluSymMatrix
arlspen.h ARluSymPencil
arlnsmat.h ARluNonSymMatrix
arlnspen.h ARluNonSymPencil
arusmat.h ARumSymMatrix
aruspen.h ARumSymPencil
arunsmat.h ARumNonSymMatrix
arunspen.h ARumNonSymPencil
arbsmat.h ARbdSymMatrix
arbspen.h ARbdSymPencil
arbnsmat.h ARbdNonSymMatrix
arbnspen.h ARbdNonSymPencil
arhbmat.h ARhbMatrix
b) Package interface files:
i) ARPACK FORTRAN interface:
file Contents
---------- -----------------------------------------------
saupp.h Interface with dsaupd and ssaupd subroutines.
seupp.h Interface with dseupd and sseupd subroutines.
naupp.h Interface with dnaupd and snaupd subroutines.
neupp.h Interface with dneupd and sneupd subroutines.
caupp.h Interface with znaupd and cnaupd subroutines.
ceupp.h Interface with zneupd and cneupd subroutines.
debug.h Interface with ARPACK debugging variables.
arpackf.h Fortran to C function prototypes convertion.
ii) LAPACK and BLAS1 interface:
file Contents
---------- -----------------------------------------------
lapackc.h Various LAPACK function declarations.
lapackf.h Fortran to C function prototypes convertion.
blas1c.h Various BLAS1 function declarations.
blas1f.h Fortran to C function prototypes convertion.
iii) SuperLU interface:
file Contents
---------- -----------------------------------------------
superluc.h Various SuperLU function declarations.
arlspdef.h Altered version of ssp_defs.h, dsp_defs.h,
csp_defs.h and zsp_defs.h header files.
arlsupm.h Unaltered copy of supermatrix.h header file.
arlnames.h Unaltered copy of Cnames.h header file.
arlutil.h Unaltered copy of util.h, superlu_enum_consts.h.
arlcomp.h Unaltered copy of dcomplex.h and scomplex.h.
iv) UMFPACK interface:
file Contents
---------- -----------------------------------------------
umfpackc.h Various UMFPACK function declarations.
umfpackf.h Fortran to C function prototypes convertion.
c) Other auxiliary files:
file Contents
---------- -----------------------------------------------
arch.h Machine dependent functions and variable types.
arcomp.h "arcomplex" complex type definition.
arerror.h "ArpackError" class definition.
2) Compiler-dependent instructions.
Some compiler-dependent functions and data types used by arpack++ are
grouped in the file arch.h. This file should be changed to reflect the
characteristics of your system. Another file, arcomp.h, contains the
definition of a class template called arcomplex, created to emulate
the g++ complex class when another compiler is being used. This file
must also be changed if g++ (or CC) is not being used.
a) Changing ARPACK++ parameters and definitions included in arch.h:
All ARPACK++ parameters that are not intended to be changed frequently
were included in the arch.h file. Are defined in this file
i) Some machine and problem-dependent umfpack parameters.
If the umfpack is to be used, the user can modify some of its
parameters to correctly reflect the environment and the class
of problems being solved. The constants included in arch.h
correspond to a subset of the parameters generated by the um21i
umfpack function. Other relevant parameters can also be passed
to the ARumNonSymMatrix class constructor.
ii) Some fortran to c conversion functions.
Because fortran and c++ functions tend to have different
representations in different platforms, a function that
converts a fortran function name to the c++ format is
defined in arch.h. This function can be altered by the user
if the environment being used was not included in arch.h.
iii) Some fortran to c type conversion rules.
arch.h also includes the definition of some rules required
to convert INTEGER and LOGICAL FORTRAN types to c++.
iv) The c++ bool type.
If the c++ compiler being used does not include a bool type,
this type can also be defined in arch.h.
b) Redefining arcomplex class in arcomp.h:
ARPACK++ uses a self-defined complex class called arcomplex.
Actually, arcomplex is a class template used to represent
both single and double precision complex numbers. It was created
in an effort to permit ARPACK++ to deal with different compilers,
since c++ does not define a unique complex type.
arcomplex is intended to emulate the gnu g++ complex class when
other compilers are being used (when g++ is used, ARPACK++ simply
declares arcomplex to be the standard complex type). arcomp.h
includes a complex class definition for the CC compiler only. At
the present time, no other compiler was used to generate ARPACK++
programs, so further work must be done to permit the use of the
library with other compilers.
To define a new complex type, the user must create a class
template (called arcomplex) that contains at least three members:
i) A default constructor;
ii) A copy constructor; and
iii) A constructor that takes two real numbers as parameters (one
is the real and other the imaginary part of the complex number).
Naturally, all usual mathematical operations on complex numbers,
such as addition, multiplication, multiplication by a real number,
etc, should also be defined. But because most compilers include a
complex data type, the simplest way of defining arcomplex is to use
only the three constructors mentioned above to establish a relation
between the actual complex class and the gnu g++ standard.
5) ARPACK (fortran) authors:
Danny Sorensen (sorensen@caam.rice.edu)
Richard Lehoucq (lehoucq@mcs.anl.gov)
Chao Yang (chao@caam.rice.edu)
Kristi Maschhoff (kristyn@caam.rice.edu)