Actual source code: slepceps.h
1: /*
2: User interface for the SLEPC eigenproblem solvers.
3: */
6: #include slepc.h
7: #include slepcst.h
8: PETSC_EXTERN_CXX_BEGIN
10: extern PetscCookie EPS_COOKIE;
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 EPSLAPACK "lapack"
28: /* the next ones are interfaces to external libraries */
29: #define EPSARPACK "arpack"
30: #define EPSBLZPACK "blzpack"
31: #define EPSPLANSO "planso"
32: #define EPSTRLAN "trlan"
34: typedef char * EPSType;
36: typedef enum { EPS_HEP=1, EPS_GHEP,
37: EPS_NHEP, EPS_GNHEP } EPSProblemType;
39: typedef enum { EPS_LARGEST_MAGNITUDE, EPS_SMALLEST_MAGNITUDE,
40: EPS_LARGEST_REAL, EPS_SMALLEST_REAL,
41: EPS_LARGEST_IMAGINARY, EPS_SMALLEST_IMAGINARY } EPSWhich;
43: typedef enum { EPS_MGS_ORTH, EPS_CGS_ORTH } EPSOrthogonalizationType;
44: typedef enum { EPS_ORTH_REFINE_NEVER, EPS_ORTH_REFINE_IFNEEDED,
45: EPS_ORTH_REFINE_ALWAYS } EPSOrthogonalizationRefinementType;
47: EXTERN PetscErrorCode EPSCreate(MPI_Comm,EPS *);
48: EXTERN PetscErrorCode EPSDestroy(EPS);
49: EXTERN PetscErrorCode EPSSetType(EPS,EPSType);
50: EXTERN PetscErrorCode EPSGetType(EPS,EPSType*);
51: EXTERN PetscErrorCode EPSSetProblemType(EPS,EPSProblemType);
52: EXTERN PetscErrorCode EPSGetProblemType(EPS,EPSProblemType*);
53: EXTERN PetscErrorCode EPSSetOperators(EPS,Mat,Mat);
54: EXTERN PetscErrorCode EPSSetFromOptions(EPS);
55: EXTERN PetscErrorCode EPSSetUp(EPS);
56: EXTERN PetscErrorCode EPSSolve(EPS);
57: EXTERN PetscErrorCode EPSView(EPS,PetscViewer);
59: extern PetscFList EPSList;
60: EXTERN PetscErrorCode EPSRegisterAll(char *);
61: EXTERN PetscErrorCode EPSRegisterDestroy(void);
62: EXTERN PetscErrorCode EPSRegister(char*,char*,char*,int(*)(EPS));
63: #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
64: #define EPSRegisterDynamic(a,b,c,d) EPSRegister(a,b,c,0)
65: #else
66: #define EPSRegisterDynamic(a,b,c,d) EPSRegister(a,b,c,d)
67: #endif
69: EXTERN PetscErrorCode EPSSetST(EPS,ST);
70: EXTERN PetscErrorCode EPSGetST(EPS,ST*);
71: EXTERN PetscErrorCode EPSSetTolerances(EPS,PetscReal,int);
72: EXTERN PetscErrorCode EPSGetTolerances(EPS,PetscReal*,int*);
73: EXTERN PetscErrorCode EPSSetDimensions(EPS,int,int);
74: EXTERN PetscErrorCode EPSGetDimensions(EPS,int*,int*);
76: EXTERN PetscErrorCode EPSGetConverged(EPS,int*);
77: EXTERN PetscErrorCode EPSGetEigenpair(EPS,int,PetscScalar*,PetscScalar*,Vec,Vec);
78: EXTERN PetscErrorCode EPSComputeRelativeError(EPS,int,PetscReal*);
79: EXTERN PetscErrorCode EPSComputeResidualNorm(EPS,int,PetscReal*);
80: EXTERN PetscErrorCode EPSGetInvariantSubspace(EPS,Vec*);
81: EXTERN PetscErrorCode EPSGetErrorEstimate(EPS,int,PetscReal*);
83: EXTERN PetscErrorCode EPSSetMonitor(EPS,int (*)(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*),void*);
84: EXTERN PetscErrorCode EPSClearMonitor(EPS);
85: EXTERN PetscErrorCode EPSGetMonitorContext(EPS,void **);
86: EXTERN PetscErrorCode EPSGetIterationNumber(EPS,int*);
87: EXTERN PetscErrorCode EPSGetNumberLinearIterations(EPS eps,int*);
89: EXTERN PetscErrorCode EPSSetInitialVector(EPS,Vec);
90: EXTERN PetscErrorCode EPSGetInitialVector(EPS,Vec*);
91: EXTERN PetscErrorCode EPSSetWhichEigenpairs(EPS,EPSWhich);
92: EXTERN PetscErrorCode EPSGetWhichEigenpairs(EPS,EPSWhich*);
93: EXTERN PetscErrorCode EPSSetOrthogonalization(EPS,EPSOrthogonalizationType,EPSOrthogonalizationRefinementType,PetscReal);
94: EXTERN PetscErrorCode EPSGetOrthogonalization(EPS,EPSOrthogonalizationType*,EPSOrthogonalizationRefinementType*,PetscReal*);
95: EXTERN PetscErrorCode EPSPurge(EPS,Vec);
96: EXTERN PetscErrorCode EPSOrthogonalize(EPS,int,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*);
98: EXTERN PetscErrorCode EPSIsGeneralized(EPS,PetscTruth*);
99: EXTERN PetscErrorCode EPSIsHermitian(EPS,PetscTruth*);
101: EXTERN PetscErrorCode EPSDefaultMonitor(EPS,int,int,PetscScalar*,PetscScalar*,PetscReal*,int,void*);
103: EXTERN PetscErrorCode EPSSetOptionsPrefix(EPS,char*);
104: EXTERN PetscErrorCode EPSAppendOptionsPrefix(EPS,char*);
105: EXTERN PetscErrorCode EPSGetOptionsPrefix(EPS,char**);
107: typedef enum {/* converged */
108: EPS_CONVERGED_TOL = 2,
109: /* diverged */
110: EPS_DIVERGED_ITS = -3,
111: EPS_DIVERGED_BREAKDOWN = -4,
112: EPS_DIVERGED_NONSYMMETRIC = -5,
113: EPS_CONVERGED_ITERATING = 0} EPSConvergedReason;
115: EXTERN PetscErrorCode EPSGetConvergedReason(EPS,EPSConvergedReason *);
117: EXTERN PetscErrorCode EPSComputeExplicitOperator(EPS,Mat*);
118: EXTERN PetscErrorCode EPSSortEigenvalues(int,PetscScalar*,PetscScalar*,EPSWhich,int,int*);
119: EXTERN PetscErrorCode EPSDenseNHEP(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
120: EXTERN PetscErrorCode EPSDenseNHEPSorted(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,int,EPSWhich);
121: EXTERN PetscErrorCode EPSDenseSchur(int,int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
122: EXTERN PetscErrorCode EPSSortDenseSchur(int,int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
123: EXTERN PetscErrorCode EPSQRDecomposition(EPS,Vec*,int,int,PetscScalar*,int);
124: EXTERN PetscErrorCode EPSReverseProjection(EPS,Vec*,PetscScalar*,int,int,Vec*);
125: EXTERN PetscErrorCode EPSSwapEigenpairs(EPS,int,int);
127: EXTERN PetscErrorCode STPreSolve(ST,EPS);
128: EXTERN PetscErrorCode STPostSolve(ST,EPS);
130: EXTERN PetscErrorCode EPSAttachDeflationSpace(EPS,int,Vec*,PetscTruth);
131: EXTERN PetscErrorCode EPSRemoveDeflationSpace(EPS);
133: /* --------- options specific to particular eigensolvers -------- */
135: typedef enum { EPSPOWER_SHIFT_CONSTANT, EPSPOWER_SHIFT_RAYLEIGH,
136: EPSPOWER_SHIFT_WILKINSON } EPSPowerShiftType;
138: EXTERN PetscErrorCode EPSPowerSetShiftType(EPS,EPSPowerShiftType);
139: EXTERN PetscErrorCode EPSPowerGetShiftType(EPS,EPSPowerShiftType*);
141: EXTERN PetscErrorCode EPSBlzpackSetBlockSize(EPS,int);
142: EXTERN PetscErrorCode EPSBlzpackSetInterval(EPS,PetscReal,PetscReal);
143: EXTERN PetscErrorCode EPSBlzpackSetNSteps(EPS,int);
145: PETSC_EXTERN_CXX_END
146: #endif