| 6 |
dsic.upv.es!jroman |
1 |
/*
|
|
|
2 |
User interface for the SLEPC eigenproblem solvers.
|
|
|
3 |
*/
|
|
|
4 |
#if !defined(__SLEPCEPS_H)
|
|
|
5 |
#define __SLEPCEPS_H
|
|
|
6 |
#include "slepc.h"
|
|
|
7 |
#include "slepcst.h"
|
| 476 |
dsic.upv.es!antodo |
8 |
PETSC_EXTERN_CXX_BEGIN
|
| 6 |
dsic.upv.es!jroman |
9 |
|
| 476 |
dsic.upv.es!antodo |
10 |
extern PetscCookie EPS_COOKIE;
|
| 6 |
dsic.upv.es!jroman |
11 |
|
|
|
12 |
/*S
|
|
|
13 |
EPS - Abstract SLEPc object that manages all the eigenvalue
|
|
|
14 |
problem solvers.
|
|
|
15 |
|
|
|
16 |
Level: beginner
|
|
|
17 |
|
|
|
18 |
Concepts: eigen solvers
|
|
|
19 |
|
|
|
20 |
.seealso: EPSCreate(), ST
|
|
|
21 |
S*/
|
|
|
22 |
typedef struct _p_EPS* EPS;
|
|
|
23 |
|
|
|
24 |
#define EPSPOWER "power"
|
|
|
25 |
#define EPSSUBSPACE "subspace"
|
|
|
26 |
#define EPSARNOLDI "arnoldi"
|
| 646 |
dsic.upv.es!antodo |
27 |
#define EPSLANCZOS "lanczos"
|
| 1171 |
slepc |
28 |
#define EPSKRYLOVSCHUR "krylovschur"
|
| 6 |
dsic.upv.es!jroman |
29 |
#define EPSLAPACK "lapack"
|
|
|
30 |
/* the next ones are interfaces to external libraries */
|
|
|
31 |
#define EPSARPACK "arpack"
|
|
|
32 |
#define EPSBLZPACK "blzpack"
|
|
|
33 |
#define EPSTRLAN "trlan"
|
| 1195 |
slepc |
34 |
#define EPSBLOPEX "blopex"
|
| 1004 |
slepc |
35 |
#define EPSType const char*
|
| 1187 |
slepc |
36 |
#define EPSPRIMME "primme"
|
| 6 |
dsic.upv.es!jroman |
37 |
|
|
|
38 |
typedef enum { EPS_HEP=1, EPS_GHEP,
|
|
|
39 |
EPS_NHEP, EPS_GNHEP } EPSProblemType;
|
|
|
40 |
|
| 780 |
dsic.upv.es!jroman |
41 |
typedef enum { EPS_ONE_SIDE, EPS_TWO_SIDE } EPSClass;
|
|
|
42 |
|
| 6 |
dsic.upv.es!jroman |
43 |
typedef enum { EPS_LARGEST_MAGNITUDE, EPS_SMALLEST_MAGNITUDE,
|
|
|
44 |
EPS_LARGEST_REAL, EPS_SMALLEST_REAL,
|
| 89 |
dsic.upv.es!antodo |
45 |
EPS_LARGEST_IMAGINARY, EPS_SMALLEST_IMAGINARY } EPSWhich;
|
| 6 |
dsic.upv.es!jroman |
46 |
|
| 1057 |
slepc |
47 |
typedef enum { EPS_MGS_ORTH, EPS_CGS_ORTH } EPSOrthogonalizationType;
|
| 163 |
dsic.upv.es!antodo |
48 |
typedef enum { EPS_ORTH_REFINE_NEVER, EPS_ORTH_REFINE_IFNEEDED,
|
|
|
49 |
EPS_ORTH_REFINE_ALWAYS } EPSOrthogonalizationRefinementType;
|
| 6 |
dsic.upv.es!jroman |
50 |
|
| 476 |
dsic.upv.es!antodo |
51 |
EXTERN PetscErrorCode EPSCreate(MPI_Comm,EPS *);
|
|
|
52 |
EXTERN PetscErrorCode EPSDestroy(EPS);
|
|
|
53 |
EXTERN PetscErrorCode EPSSetType(EPS,EPSType);
|
|
|
54 |
EXTERN PetscErrorCode EPSGetType(EPS,EPSType*);
|
|
|
55 |
EXTERN PetscErrorCode EPSSetProblemType(EPS,EPSProblemType);
|
|
|
56 |
EXTERN PetscErrorCode EPSGetProblemType(EPS,EPSProblemType*);
|
| 780 |
dsic.upv.es!jroman |
57 |
EXTERN PetscErrorCode EPSSetClass(EPS,EPSClass);
|
|
|
58 |
EXTERN PetscErrorCode EPSGetClass(EPS,EPSClass*);
|
| 476 |
dsic.upv.es!antodo |
59 |
EXTERN PetscErrorCode EPSSetOperators(EPS,Mat,Mat);
|
|
|
60 |
EXTERN PetscErrorCode EPSSetFromOptions(EPS);
|
|
|
61 |
EXTERN PetscErrorCode EPSSetUp(EPS);
|
|
|
62 |
EXTERN PetscErrorCode EPSSolve(EPS);
|
|
|
63 |
EXTERN PetscErrorCode EPSView(EPS,PetscViewer);
|
| 6 |
dsic.upv.es!jroman |
64 |
|
| 842 |
dsic.upv.es!antodo |
65 |
EXTERN PetscErrorCode EPSInitializePackage(char *);
|
| 6 |
dsic.upv.es!jroman |
66 |
|
| 476 |
dsic.upv.es!antodo |
67 |
EXTERN PetscErrorCode EPSSetST(EPS,ST);
|
|
|
68 |
EXTERN PetscErrorCode EPSGetST(EPS,ST*);
|
|
|
69 |
EXTERN PetscErrorCode EPSSetTolerances(EPS,PetscReal,int);
|
|
|
70 |
EXTERN PetscErrorCode EPSGetTolerances(EPS,PetscReal*,int*);
|
|
|
71 |
EXTERN PetscErrorCode EPSSetDimensions(EPS,int,int);
|
|
|
72 |
EXTERN PetscErrorCode EPSGetDimensions(EPS,int*,int*);
|
| 6 |
dsic.upv.es!jroman |
73 |
|
| 476 |
dsic.upv.es!antodo |
74 |
EXTERN PetscErrorCode EPSGetConverged(EPS,int*);
|
|
|
75 |
EXTERN PetscErrorCode EPSGetEigenpair(EPS,int,PetscScalar*,PetscScalar*,Vec,Vec);
|
| 780 |
dsic.upv.es!jroman |
76 |
EXTERN PetscErrorCode EPSGetValue(EPS,int,PetscScalar*,PetscScalar*);
|
|
|
77 |
EXTERN PetscErrorCode EPSGetRightVector(EPS,int,Vec,Vec);
|
|
|
78 |
EXTERN PetscErrorCode EPSGetLeftVector(EPS,int,Vec,Vec);
|
| 476 |
dsic.upv.es!antodo |
79 |
EXTERN PetscErrorCode EPSComputeRelativeError(EPS,int,PetscReal*);
|
| 780 |
dsic.upv.es!jroman |
80 |
EXTERN PetscErrorCode EPSComputeRelativeErrorLeft(EPS,int,PetscReal*);
|
| 476 |
dsic.upv.es!antodo |
81 |
EXTERN PetscErrorCode EPSComputeResidualNorm(EPS,int,PetscReal*);
|
| 780 |
dsic.upv.es!jroman |
82 |
EXTERN PetscErrorCode EPSComputeResidualNormLeft(EPS,int,PetscReal*);
|
| 476 |
dsic.upv.es!antodo |
83 |
EXTERN PetscErrorCode EPSGetInvariantSubspace(EPS,Vec*);
|
| 780 |
dsic.upv.es!jroman |
84 |
EXTERN PetscErrorCode EPSGetLeftInvariantSubspace(EPS,Vec*);
|
| 476 |
dsic.upv.es!antodo |
85 |
EXTERN PetscErrorCode EPSGetErrorEstimate(EPS,int,PetscReal*);
|
| 780 |
dsic.upv.es!jroman |
86 |
EXTERN PetscErrorCode EPSGetErrorEstimateLeft(EPS,int,PetscReal*);
|
| 6 |
dsic.upv.es!jroman |
87 |
|
| 476 |
dsic.upv.es!antodo |
88 |
EXTERN PetscErrorCode EPSSetMonitor(EPS,int (*)(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*),void*);
|
|
|
89 |
EXTERN PetscErrorCode EPSClearMonitor(EPS);
|
|
|
90 |
EXTERN PetscErrorCode EPSGetMonitorContext(EPS,void **);
|
|
|
91 |
EXTERN PetscErrorCode EPSGetIterationNumber(EPS,int*);
|
| 1209 |
slepc |
92 |
EXTERN PetscErrorCode EPSGetOperationCounters(EPS,int*,int*,int*);
|
| 6 |
dsic.upv.es!jroman |
93 |
|
| 476 |
dsic.upv.es!antodo |
94 |
EXTERN PetscErrorCode EPSSetInitialVector(EPS,Vec);
|
|
|
95 |
EXTERN PetscErrorCode EPSGetInitialVector(EPS,Vec*);
|
| 780 |
dsic.upv.es!jroman |
96 |
EXTERN PetscErrorCode EPSSetLeftInitialVector(EPS,Vec);
|
|
|
97 |
EXTERN PetscErrorCode EPSGetLeftInitialVector(EPS,Vec*);
|
| 476 |
dsic.upv.es!antodo |
98 |
EXTERN PetscErrorCode EPSSetWhichEigenpairs(EPS,EPSWhich);
|
|
|
99 |
EXTERN PetscErrorCode EPSGetWhichEigenpairs(EPS,EPSWhich*);
|
|
|
100 |
EXTERN PetscErrorCode EPSSetOrthogonalization(EPS,EPSOrthogonalizationType,EPSOrthogonalizationRefinementType,PetscReal);
|
|
|
101 |
EXTERN PetscErrorCode EPSGetOrthogonalization(EPS,EPSOrthogonalizationType*,EPSOrthogonalizationRefinementType*,PetscReal*);
|
|
|
102 |
EXTERN PetscErrorCode EPSIsGeneralized(EPS,PetscTruth*);
|
|
|
103 |
EXTERN PetscErrorCode EPSIsHermitian(EPS,PetscTruth*);
|
| 6 |
dsic.upv.es!jroman |
104 |
|
| 476 |
dsic.upv.es!antodo |
105 |
EXTERN PetscErrorCode EPSDefaultMonitor(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*);
|
| 623 |
dsic.upv.es!antodo |
106 |
EXTERN PetscErrorCode EPSLGMonitor(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*);
|
| 6 |
dsic.upv.es!jroman |
107 |
|
| 780 |
dsic.upv.es!jroman |
108 |
EXTERN PetscErrorCode EPSAttachDeflationSpace(EPS,int,Vec*,PetscTruth);
|
|
|
109 |
EXTERN PetscErrorCode EPSRemoveDeflationSpace(EPS);
|
|
|
110 |
|
| 476 |
dsic.upv.es!antodo |
111 |
EXTERN PetscErrorCode EPSSetOptionsPrefix(EPS,char*);
|
|
|
112 |
EXTERN PetscErrorCode EPSAppendOptionsPrefix(EPS,char*);
|
| 812 |
dsic.upv.es!antodo |
113 |
EXTERN PetscErrorCode EPSGetOptionsPrefix(EPS,const char*[]);
|
| 6 |
dsic.upv.es!jroman |
114 |
|
|
|
115 |
typedef enum {/* converged */
|
|
|
116 |
EPS_CONVERGED_TOL = 2,
|
|
|
117 |
/* diverged */
|
|
|
118 |
EPS_DIVERGED_ITS = -3,
|
|
|
119 |
EPS_DIVERGED_BREAKDOWN = -4,
|
|
|
120 |
EPS_DIVERGED_NONSYMMETRIC = -5,
|
|
|
121 |
EPS_CONVERGED_ITERATING = 0} EPSConvergedReason;
|
|
|
122 |
|
| 476 |
dsic.upv.es!antodo |
123 |
EXTERN PetscErrorCode EPSGetConvergedReason(EPS,EPSConvergedReason *);
|
| 6 |
dsic.upv.es!jroman |
124 |
|
| 476 |
dsic.upv.es!antodo |
125 |
EXTERN PetscErrorCode EPSSortEigenvalues(int,PetscScalar*,PetscScalar*,EPSWhich,int,int*);
|
| 780 |
dsic.upv.es!jroman |
126 |
EXTERN PetscErrorCode EPSDenseNHEP(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
|
|
|
127 |
EXTERN PetscErrorCode EPSDenseGNHEP(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
|
| 1175 |
slepc |
128 |
EXTERN PetscErrorCode EPSDenseHEP(int,PetscScalar*,int,PetscReal*,PetscScalar*);
|
| 676 |
dsic.upv.es!antodo |
129 |
EXTERN PetscErrorCode EPSDenseGHEP(int,PetscScalar*,PetscScalar*,PetscReal*,PetscScalar*);
|
| 1175 |
slepc |
130 |
EXTERN PetscErrorCode EPSDenseHessenberg(int,int,PetscScalar*,int,PetscScalar*);
|
| 1057 |
slepc |
131 |
EXTERN PetscErrorCode EPSDenseSchur(int,int,PetscScalar*,int,PetscScalar*,PetscScalar*,PetscScalar*);
|
| 1174 |
slepc |
132 |
EXTERN PetscErrorCode EPSSortDenseSchur(int,int,PetscScalar*,int,PetscScalar*,PetscScalar*,PetscScalar*,EPSWhich);
|
| 1175 |
slepc |
133 |
EXTERN PetscErrorCode EPSDenseTridiagonal(int,PetscScalar*,int,PetscReal*,PetscScalar*);
|
| 676 |
dsic.upv.es!antodo |
134 |
|
| 1163 |
slepc |
135 |
EXTERN PetscErrorCode EPSOrthogonalize(EPS,int,PetscTruth*,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*);
|
| 780 |
dsic.upv.es!jroman |
136 |
EXTERN PetscErrorCode EPSBiOrthogonalize(EPS,int,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
|
| 476 |
dsic.upv.es!antodo |
137 |
EXTERN PetscErrorCode EPSQRDecomposition(EPS,Vec*,int,int,PetscScalar*,int);
|
| 1057 |
slepc |
138 |
EXTERN PetscErrorCode EPSGetStartVector(EPS,int,Vec,PetscTruth*);
|
| 780 |
dsic.upv.es!jroman |
139 |
EXTERN PetscErrorCode EPSGetLeftStartVector(EPS,int,Vec);
|
| 6 |
dsic.upv.es!jroman |
140 |
|
|
|
141 |
/* --------- options specific to particular eigensolvers -------- */
|
|
|
142 |
|
| 444 |
dsic.upv.es!antodo |
143 |
typedef enum { EPSPOWER_SHIFT_CONSTANT, EPSPOWER_SHIFT_RAYLEIGH,
|
|
|
144 |
EPSPOWER_SHIFT_WILKINSON } EPSPowerShiftType;
|
|
|
145 |
|
| 476 |
dsic.upv.es!antodo |
146 |
EXTERN PetscErrorCode EPSPowerSetShiftType(EPS,EPSPowerShiftType);
|
|
|
147 |
EXTERN PetscErrorCode EPSPowerGetShiftType(EPS,EPSPowerShiftType*);
|
| 444 |
dsic.upv.es!antodo |
148 |
|
| 1098 |
slepc |
149 |
EXTERN PetscErrorCode EPSArnoldiSetDelayed(EPS,PetscTruth);
|
|
|
150 |
EXTERN PetscErrorCode EPSArnoldiGetDelayed(EPS,PetscTruth*);
|
|
|
151 |
|
| 1068 |
slepc |
152 |
typedef enum { EPSLANCZOS_REORTHOG_LOCAL,
|
| 961 |
dsic.upv.es!jroman |
153 |
EPSLANCZOS_REORTHOG_FULL,
|
|
|
154 |
EPSLANCZOS_REORTHOG_SELECTIVE,
|
|
|
155 |
EPSLANCZOS_REORTHOG_PERIODIC,
|
| 1124 |
slepc |
156 |
EPSLANCZOS_REORTHOG_PARTIAL,
|
| 1173 |
slepc |
157 |
EPSLANCZOS_REORTHOG_DELAYED } EPSLanczosReorthogType;
|
| 673 |
dsic.upv.es!antodo |
158 |
|
| 905 |
dsic.upv.es!antodo |
159 |
EXTERN PetscErrorCode EPSLanczosSetReorthog(EPS,EPSLanczosReorthogType);
|
|
|
160 |
EXTERN PetscErrorCode EPSLanczosGetReorthog(EPS,EPSLanczosReorthogType*);
|
| 673 |
dsic.upv.es!antodo |
161 |
|
| 476 |
dsic.upv.es!antodo |
162 |
EXTERN PetscErrorCode EPSBlzpackSetBlockSize(EPS,int);
|
|
|
163 |
EXTERN PetscErrorCode EPSBlzpackSetInterval(EPS,PetscReal,PetscReal);
|
|
|
164 |
EXTERN PetscErrorCode EPSBlzpackSetNSteps(EPS,int);
|
| 6 |
dsic.upv.es!jroman |
165 |
|
| 1187 |
slepc |
166 |
typedef enum {
|
| 1239 |
slepc |
167 |
EPSPRIMME_DYNAMIC,
|
| 1187 |
slepc |
168 |
EPSPRIMME_DEFAULT_MIN_TIME,
|
|
|
169 |
EPSPRIMME_DEFAULT_MIN_MATVECS,
|
| 1190 |
slepc |
170 |
EPSPRIMME_ARNOLDI,
|
| 1187 |
slepc |
171 |
EPSPRIMME_GD,
|
| 1190 |
slepc |
172 |
EPSPRIMME_GD_PLUSK,
|
|
|
173 |
EPSPRIMME_GD_OLSEN_PLUSK,
|
| 1239 |
slepc |
174 |
EPSPRIMME_JD_OLSEN_PLUSK,
|
| 1187 |
slepc |
175 |
EPSPRIMME_RQI,
|
|
|
176 |
EPSPRIMME_JDQR,
|
|
|
177 |
EPSPRIMME_JDQMR,
|
| 1190 |
slepc |
178 |
EPSPRIMME_JDQMR_ETOL,
|
| 1187 |
slepc |
179 |
EPSPRIMME_SUBSPACE_ITERATION,
|
| 1190 |
slepc |
180 |
EPSPRIMME_LOBPCG_ORTHOBASIS,
|
|
|
181 |
EPSPRIMME_LOBPCG_ORTHOBASIS_WINDOW
|
|
|
182 |
} EPSPRIMMEMethod;
|
| 1187 |
slepc |
183 |
|
| 1190 |
slepc |
184 |
typedef enum {
|
|
|
185 |
EPSPRIMME_NONE,
|
|
|
186 |
EPSPRIMME_DIAGONAL
|
|
|
187 |
} EPSPRIMMEPrecond;
|
|
|
188 |
|
| 1187 |
slepc |
189 |
EXTERN PetscErrorCode EPSPRIMMESetBlockSize(EPS eps,int bs);
|
| 1190 |
slepc |
190 |
EXTERN PetscErrorCode EPSPRIMMESetMethod(EPS eps, EPSPRIMMEMethod method);
|
|
|
191 |
EXTERN PetscErrorCode EPSPRIMMESetPrecond(EPS eps, EPSPRIMMEPrecond precond);
|
| 1187 |
slepc |
192 |
EXTERN PetscErrorCode EPSPRIMMEGetBlockSize(EPS eps,int *bs);
|
| 1190 |
slepc |
193 |
EXTERN PetscErrorCode EPSPRIMMEGetMethod(EPS eps, EPSPRIMMEMethod *method);
|
|
|
194 |
EXTERN PetscErrorCode EPSPRIMMEGetPrecond(EPS eps, EPSPRIMMEPrecond *precond);
|
| 1187 |
slepc |
195 |
|
| 476 |
dsic.upv.es!antodo |
196 |
PETSC_EXTERN_CXX_END
|
| 6 |
dsic.upv.es!jroman |
197 |
#endif
|
|
|
198 |
|