Actual source code: slepceps.h
1: /*
2: User interface for the SLEPC eigenproblem solvers.
3: */
6: #include slepc.h
7: #include slepcst.h
12: /*S
13: EPS - Abstract SLEPc object that manages all the eigenvalue
14: problem solvers.
16: Level: beginner
18: Concepts: eigen solvers
20: .seealso: EPSCreate(), ST
21: S*/
22: typedef struct _p_EPS* EPS;
24: #define EPSPOWER "power"
25: #define EPSSUBSPACE "subspace"
26: #define EPSARNOLDI "arnoldi"
27: #define EPSLANCZOS "lanczos"
28: #define EPSLAPACK "lapack"
29: /* the next ones are interfaces to external libraries */
30: #define EPSARPACK "arpack"
31: #define EPSBLZPACK "blzpack"
32: #define EPSPLANSO "planso"
33: #define EPSTRLAN "trlan"
34: #define EPSLOBPCG "lobpcg"
35: #define EPSType const char*
37: typedef enum { EPS_HEP=1, EPS_GHEP,
38: EPS_NHEP, EPS_GNHEP } EPSProblemType;
40: typedef enum { EPS_ONE_SIDE, EPS_TWO_SIDE } EPSClass;
42: typedef enum { EPS_LARGEST_MAGNITUDE, EPS_SMALLEST_MAGNITUDE,
43: EPS_LARGEST_REAL, EPS_SMALLEST_REAL,
44: EPS_LARGEST_IMAGINARY, EPS_SMALLEST_IMAGINARY } EPSWhich;
46: typedef enum { EPS_MGS_ORTH, EPS_CGS_ORTH } EPSOrthogonalizationType;
47: typedef enum { EPS_ORTH_REFINE_NEVER, EPS_ORTH_REFINE_IFNEEDED,
48: EPS_ORTH_REFINE_ALWAYS } EPSOrthogonalizationRefinementType;
50: EXTERN PetscErrorCode EPSCreate(MPI_Comm,EPS *);
51: EXTERN PetscErrorCode EPSDestroy(EPS);
52: EXTERN PetscErrorCode EPSSetType(EPS,EPSType);
53: EXTERN PetscErrorCode EPSGetType(EPS,EPSType*);
54: EXTERN PetscErrorCode EPSSetProblemType(EPS,EPSProblemType);
55: EXTERN PetscErrorCode EPSGetProblemType(EPS,EPSProblemType*);
56: EXTERN PetscErrorCode EPSSetClass(EPS,EPSClass);
57: EXTERN PetscErrorCode EPSGetClass(EPS,EPSClass*);
58: EXTERN PetscErrorCode EPSSetOperators(EPS,Mat,Mat);
59: EXTERN PetscErrorCode EPSSetFromOptions(EPS);
60: EXTERN PetscErrorCode EPSSetUp(EPS);
61: EXTERN PetscErrorCode EPSSolve(EPS);
62: EXTERN PetscErrorCode EPSView(EPS,PetscViewer);
64: EXTERN PetscErrorCode EPSInitializePackage(char *);
66: EXTERN PetscErrorCode EPSSetST(EPS,ST);
67: EXTERN PetscErrorCode EPSGetST(EPS,ST*);
68: EXTERN PetscErrorCode EPSSetTolerances(EPS,PetscReal,int);
69: EXTERN PetscErrorCode EPSGetTolerances(EPS,PetscReal*,int*);
70: EXTERN PetscErrorCode EPSSetDimensions(EPS,int,int);
71: EXTERN PetscErrorCode EPSGetDimensions(EPS,int*,int*);
73: EXTERN PetscErrorCode EPSGetConverged(EPS,int*);
74: EXTERN PetscErrorCode EPSGetEigenpair(EPS,int,PetscScalar*,PetscScalar*,Vec,Vec);
75: EXTERN PetscErrorCode EPSGetValue(EPS,int,PetscScalar*,PetscScalar*);
76: EXTERN PetscErrorCode EPSGetRightVector(EPS,int,Vec,Vec);
77: EXTERN PetscErrorCode EPSGetLeftVector(EPS,int,Vec,Vec);
78: EXTERN PetscErrorCode EPSComputeRelativeError(EPS,int,PetscReal*);
79: EXTERN PetscErrorCode EPSComputeRelativeErrorLeft(EPS,int,PetscReal*);
80: EXTERN PetscErrorCode EPSComputeResidualNorm(EPS,int,PetscReal*);
81: EXTERN PetscErrorCode EPSComputeResidualNormLeft(EPS,int,PetscReal*);
82: EXTERN PetscErrorCode EPSGetInvariantSubspace(EPS,Vec*);
83: EXTERN PetscErrorCode EPSGetLeftInvariantSubspace(EPS,Vec*);
84: EXTERN PetscErrorCode EPSGetErrorEstimate(EPS,int,PetscReal*);
85: EXTERN PetscErrorCode EPSGetErrorEstimateLeft(EPS,int,PetscReal*);
87: EXTERN PetscErrorCode EPSSetMonitor(EPS,int (*)(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*),void*);
88: EXTERN PetscErrorCode EPSClearMonitor(EPS);
89: EXTERN PetscErrorCode EPSGetMonitorContext(EPS,void **);
90: EXTERN PetscErrorCode EPSGetIterationNumber(EPS,int*);
91: EXTERN PetscErrorCode EPSGetNumberLinearIterations(EPS eps,int*);
93: EXTERN PetscErrorCode EPSSetInitialVector(EPS,Vec);
94: EXTERN PetscErrorCode EPSGetInitialVector(EPS,Vec*);
95: EXTERN PetscErrorCode EPSSetLeftInitialVector(EPS,Vec);
96: EXTERN PetscErrorCode EPSGetLeftInitialVector(EPS,Vec*);
97: EXTERN PetscErrorCode EPSSetWhichEigenpairs(EPS,EPSWhich);
98: EXTERN PetscErrorCode EPSGetWhichEigenpairs(EPS,EPSWhich*);
99: EXTERN PetscErrorCode EPSSetOrthogonalization(EPS,EPSOrthogonalizationType,EPSOrthogonalizationRefinementType,PetscReal);
100: EXTERN PetscErrorCode EPSGetOrthogonalization(EPS,EPSOrthogonalizationType*,EPSOrthogonalizationRefinementType*,PetscReal*);
101: EXTERN PetscErrorCode EPSIsGeneralized(EPS,PetscTruth*);
102: EXTERN PetscErrorCode EPSIsHermitian(EPS,PetscTruth*);
104: EXTERN PetscErrorCode EPSDefaultMonitor(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*);
105: EXTERN PetscErrorCode EPSLGMonitor(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*);
107: EXTERN PetscErrorCode EPSAttachDeflationSpace(EPS,int,Vec*,PetscTruth);
108: EXTERN PetscErrorCode EPSRemoveDeflationSpace(EPS);
110: EXTERN PetscErrorCode EPSSetOptionsPrefix(EPS,char*);
111: EXTERN PetscErrorCode EPSAppendOptionsPrefix(EPS,char*);
112: EXTERN PetscErrorCode EPSGetOptionsPrefix(EPS,const char*[]);
114: typedef enum {/* converged */
115: EPS_CONVERGED_TOL = 2,
116: /* diverged */
117: EPS_DIVERGED_ITS = -3,
118: EPS_DIVERGED_BREAKDOWN = -4,
119: EPS_DIVERGED_NONSYMMETRIC = -5,
120: EPS_CONVERGED_ITERATING = 0} EPSConvergedReason;
122: EXTERN PetscErrorCode EPSGetConvergedReason(EPS,EPSConvergedReason *);
124: EXTERN PetscErrorCode EPSSortEigenvalues(int,PetscScalar*,PetscScalar*,EPSWhich,int,int*);
125: EXTERN PetscErrorCode EPSDenseNHEP(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
126: EXTERN PetscErrorCode EPSDenseGNHEP(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
127: EXTERN PetscErrorCode EPSDenseHEP(int,PetscScalar*,PetscReal*,PetscScalar*);
128: EXTERN PetscErrorCode EPSDenseGHEP(int,PetscScalar*,PetscScalar*,PetscReal*,PetscScalar*);
129: EXTERN PetscErrorCode EPSDenseSchur(int,int,PetscScalar*,int,PetscScalar*,PetscScalar*,PetscScalar*);
130: EXTERN PetscErrorCode EPSSortDenseSchur(int,int,PetscScalar*,int,PetscScalar*,PetscScalar*,PetscScalar*);
132: EXTERN PetscErrorCode EPSOrthogonalize(EPS,int,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*);
133: EXTERN PetscErrorCode EPSBiOrthogonalize(EPS,int,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
134: EXTERN PetscErrorCode EPSQRDecomposition(EPS,Vec*,int,int,PetscScalar*,int);
135: EXTERN PetscErrorCode EPSGetStartVector(EPS,int,Vec,PetscTruth*);
136: EXTERN PetscErrorCode EPSGetLeftStartVector(EPS,int,Vec);
138: /* --------- options specific to particular eigensolvers -------- */
140: typedef enum { EPSPOWER_SHIFT_CONSTANT, EPSPOWER_SHIFT_RAYLEIGH,
141: EPSPOWER_SHIFT_WILKINSON } EPSPowerShiftType;
143: EXTERN PetscErrorCode EPSPowerSetShiftType(EPS,EPSPowerShiftType);
144: EXTERN PetscErrorCode EPSPowerGetShiftType(EPS,EPSPowerShiftType*);
146: EXTERN PetscErrorCode EPSArnoldiSetDelayed(EPS,PetscTruth);
147: EXTERN PetscErrorCode EPSArnoldiGetDelayed(EPS,PetscTruth*);
149: typedef enum { EPSLANCZOS_REORTHOG_LOCAL,
150: EPSLANCZOS_REORTHOG_FULL,
151: EPSLANCZOS_REORTHOG_SELECTIVE,
152: EPSLANCZOS_REORTHOG_PERIODIC,
153: EPSLANCZOS_REORTHOG_PARTIAL } EPSLanczosReorthogType;
155: EXTERN PetscErrorCode EPSLanczosSetReorthog(EPS,EPSLanczosReorthogType);
156: EXTERN PetscErrorCode EPSLanczosGetReorthog(EPS,EPSLanczosReorthogType*);
158: EXTERN PetscErrorCode EPSBlzpackSetBlockSize(EPS,int);
159: EXTERN PetscErrorCode EPSBlzpackSetInterval(EPS,PetscReal,PetscReal);
160: EXTERN PetscErrorCode EPSBlzpackSetNSteps(EPS,int);
163: #endif