| 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"
|
| 973 |
slepc |
27 |
#define EPSARNOLDI2 "arnoldi2"
|
| 646 |
dsic.upv.es!antodo |
28 |
#define EPSLANCZOS "lanczos"
|
| 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 EPSPLANSO "planso"
|
|
|
34 |
#define EPSTRLAN "trlan"
|
| 630 |
dsic.upv.es!antodo |
35 |
#define EPSLOBPCG "lobpcg"
|
| 1004 |
slepc |
36 |
#define EPSType const char*
|
| 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 |
|
| 990 |
slepc |
47 |
typedef enum { EPS_MGS_ORTH, EPS_CGS_ORTH, EPS_NCGS_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*);
|
|
|
92 |
EXTERN PetscErrorCode EPSGetNumberLinearIterations(EPS eps,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*);
|
| 676 |
dsic.upv.es!antodo |
128 |
EXTERN PetscErrorCode EPSDenseHEP(int,PetscScalar*,PetscReal*,PetscScalar*);
|
|
|
129 |
EXTERN PetscErrorCode EPSDenseGHEP(int,PetscScalar*,PetscScalar*,PetscReal*,PetscScalar*);
|
| 555 |
dsic.upv.es!antodo |
130 |
EXTERN PetscErrorCode EPSDenseSchur(int,int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
|
|
|
131 |
EXTERN PetscErrorCode EPSSortDenseSchur(int,int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
|
| 676 |
dsic.upv.es!antodo |
132 |
|
|
|
133 |
EXTERN PetscErrorCode EPSOrthogonalize(EPS,int,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*);
|
| 780 |
dsic.upv.es!jroman |
134 |
EXTERN PetscErrorCode EPSBiOrthogonalize(EPS,int,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
|
| 476 |
dsic.upv.es!antodo |
135 |
EXTERN PetscErrorCode EPSQRDecomposition(EPS,Vec*,int,int,PetscScalar*,int);
|
| 689 |
dsic.upv.es!jroman |
136 |
EXTERN PetscErrorCode EPSGetStartVector(EPS,int,Vec);
|
| 780 |
dsic.upv.es!jroman |
137 |
EXTERN PetscErrorCode EPSGetLeftStartVector(EPS,int,Vec);
|
| 6 |
dsic.upv.es!jroman |
138 |
|
| 476 |
dsic.upv.es!antodo |
139 |
EXTERN PetscErrorCode STPreSolve(ST,EPS);
|
|
|
140 |
EXTERN PetscErrorCode STPostSolve(ST,EPS);
|
| 6 |
dsic.upv.es!jroman |
141 |
|
|
|
142 |
/* --------- options specific to particular eigensolvers -------- */
|
|
|
143 |
|
| 444 |
dsic.upv.es!antodo |
144 |
typedef enum { EPSPOWER_SHIFT_CONSTANT, EPSPOWER_SHIFT_RAYLEIGH,
|
|
|
145 |
EPSPOWER_SHIFT_WILKINSON } EPSPowerShiftType;
|
|
|
146 |
|
| 476 |
dsic.upv.es!antodo |
147 |
EXTERN PetscErrorCode EPSPowerSetShiftType(EPS,EPSPowerShiftType);
|
|
|
148 |
EXTERN PetscErrorCode EPSPowerGetShiftType(EPS,EPSPowerShiftType*);
|
| 444 |
dsic.upv.es!antodo |
149 |
|
| 961 |
dsic.upv.es!jroman |
150 |
typedef enum { EPSLANCZOS_REORTHOG_NONE,
|
|
|
151 |
EPSLANCZOS_REORTHOG_FULL,
|
|
|
152 |
EPSLANCZOS_REORTHOG_SELECTIVE,
|
|
|
153 |
EPSLANCZOS_REORTHOG_PERIODIC,
|
|
|
154 |
EPSLANCZOS_REORTHOG_PARTIAL } EPSLanczosReorthogType;
|
| 673 |
dsic.upv.es!antodo |
155 |
|
| 905 |
dsic.upv.es!antodo |
156 |
EXTERN PetscErrorCode EPSLanczosSetReorthog(EPS,EPSLanczosReorthogType);
|
|
|
157 |
EXTERN PetscErrorCode EPSLanczosGetReorthog(EPS,EPSLanczosReorthogType*);
|
| 673 |
dsic.upv.es!antodo |
158 |
|
| 476 |
dsic.upv.es!antodo |
159 |
EXTERN PetscErrorCode EPSBlzpackSetBlockSize(EPS,int);
|
|
|
160 |
EXTERN PetscErrorCode EPSBlzpackSetInterval(EPS,PetscReal,PetscReal);
|
|
|
161 |
EXTERN PetscErrorCode EPSBlzpackSetNSteps(EPS,int);
|
| 6 |
dsic.upv.es!jroman |
162 |
|
| 476 |
dsic.upv.es!antodo |
163 |
PETSC_EXTERN_CXX_END
|
| 6 |
dsic.upv.es!jroman |
164 |
#endif
|
|
|
165 |
|