Subversion Repositories slepc-dev

Rev

Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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