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