Subversion Repositories slepc-dev

Rev

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