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
  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"
646 dsic.upv.es!antodo 27
#define EPSLANCZOS   "lanczos"
1171 slepc 28
#define EPSKRYLOVSCHUR "krylovschur"
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 EPSTRLAN     "trlan"
1195 slepc 34
#define EPSBLOPEX    "blopex"
1004 slepc 35
#define EPSType const char*
1187 slepc 36
#define EPSPRIMME    "primme"
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
 
1057 slepc 47
typedef enum { EPS_MGS_ORTH,  EPS_CGS_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*);
1209 slepc 92
EXTERN PetscErrorCode EPSGetOperationCounters(EPS,int*,int*,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*);
1175 slepc 128
EXTERN PetscErrorCode EPSDenseHEP(int,PetscScalar*,int,PetscReal*,PetscScalar*);
676 dsic.upv.es!antodo 129
EXTERN PetscErrorCode EPSDenseGHEP(int,PetscScalar*,PetscScalar*,PetscReal*,PetscScalar*);
1175 slepc 130
EXTERN PetscErrorCode EPSDenseHessenberg(int,int,PetscScalar*,int,PetscScalar*);
1057 slepc 131
EXTERN PetscErrorCode EPSDenseSchur(int,int,PetscScalar*,int,PetscScalar*,PetscScalar*,PetscScalar*);
1174 slepc 132
EXTERN PetscErrorCode EPSSortDenseSchur(int,int,PetscScalar*,int,PetscScalar*,PetscScalar*,PetscScalar*,EPSWhich);
1175 slepc 133
EXTERN PetscErrorCode EPSDenseTridiagonal(int,PetscScalar*,int,PetscReal*,PetscScalar*);
676 dsic.upv.es!antodo 134
 
1163 slepc 135
EXTERN PetscErrorCode EPSOrthogonalize(EPS,int,PetscTruth*,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*);
780 dsic.upv.es!jroman 136
EXTERN PetscErrorCode EPSBiOrthogonalize(EPS,int,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
476 dsic.upv.es!antodo 137
EXTERN PetscErrorCode EPSQRDecomposition(EPS,Vec*,int,int,PetscScalar*,int);
1057 slepc 138
EXTERN PetscErrorCode EPSGetStartVector(EPS,int,Vec,PetscTruth*);
780 dsic.upv.es!jroman 139
EXTERN PetscErrorCode EPSGetLeftStartVector(EPS,int,Vec);
6 dsic.upv.es!jroman 140
 
141
/* --------- options specific to particular eigensolvers -------- */
142
 
444 dsic.upv.es!antodo 143
typedef enum { EPSPOWER_SHIFT_CONSTANT, EPSPOWER_SHIFT_RAYLEIGH,
144
               EPSPOWER_SHIFT_WILKINSON } EPSPowerShiftType;
145
 
476 dsic.upv.es!antodo 146
EXTERN PetscErrorCode EPSPowerSetShiftType(EPS,EPSPowerShiftType);
147
EXTERN PetscErrorCode EPSPowerGetShiftType(EPS,EPSPowerShiftType*);
444 dsic.upv.es!antodo 148
 
1098 slepc 149
EXTERN PetscErrorCode EPSArnoldiSetDelayed(EPS,PetscTruth);
150
EXTERN PetscErrorCode EPSArnoldiGetDelayed(EPS,PetscTruth*);
151
 
1068 slepc 152
typedef enum { EPSLANCZOS_REORTHOG_LOCAL,
961 dsic.upv.es!jroman 153
               EPSLANCZOS_REORTHOG_FULL,
154
               EPSLANCZOS_REORTHOG_SELECTIVE,
155
               EPSLANCZOS_REORTHOG_PERIODIC,
1124 slepc 156
               EPSLANCZOS_REORTHOG_PARTIAL,
1173 slepc 157
               EPSLANCZOS_REORTHOG_DELAYED } EPSLanczosReorthogType;
673 dsic.upv.es!antodo 158
 
905 dsic.upv.es!antodo 159
EXTERN PetscErrorCode EPSLanczosSetReorthog(EPS,EPSLanczosReorthogType);
160
EXTERN PetscErrorCode EPSLanczosGetReorthog(EPS,EPSLanczosReorthogType*);
673 dsic.upv.es!antodo 161
 
476 dsic.upv.es!antodo 162
EXTERN PetscErrorCode EPSBlzpackSetBlockSize(EPS,int);
163
EXTERN PetscErrorCode EPSBlzpackSetInterval(EPS,PetscReal,PetscReal);
164
EXTERN PetscErrorCode EPSBlzpackSetNSteps(EPS,int);
6 dsic.upv.es!jroman 165
 
1187 slepc 166
typedef enum {
1239 slepc 167
  EPSPRIMME_DYNAMIC,
1187 slepc 168
  EPSPRIMME_DEFAULT_MIN_TIME,
169
  EPSPRIMME_DEFAULT_MIN_MATVECS,
1190 slepc 170
  EPSPRIMME_ARNOLDI,
1187 slepc 171
  EPSPRIMME_GD,
1190 slepc 172
  EPSPRIMME_GD_PLUSK,
173
  EPSPRIMME_GD_OLSEN_PLUSK,
1239 slepc 174
  EPSPRIMME_JD_OLSEN_PLUSK,
1187 slepc 175
  EPSPRIMME_RQI,
176
  EPSPRIMME_JDQR,
177
  EPSPRIMME_JDQMR,
1190 slepc 178
  EPSPRIMME_JDQMR_ETOL,
1187 slepc 179
  EPSPRIMME_SUBSPACE_ITERATION,
1190 slepc 180
  EPSPRIMME_LOBPCG_ORTHOBASIS,
181
  EPSPRIMME_LOBPCG_ORTHOBASIS_WINDOW
182
} EPSPRIMMEMethod;
1187 slepc 183
 
1190 slepc 184
typedef enum {
185
  EPSPRIMME_NONE,
186
  EPSPRIMME_DIAGONAL
187
} EPSPRIMMEPrecond;
188
 
1187 slepc 189
EXTERN PetscErrorCode EPSPRIMMESetBlockSize(EPS eps,int bs);
1190 slepc 190
EXTERN PetscErrorCode EPSPRIMMESetMethod(EPS eps, EPSPRIMMEMethod method);
191
EXTERN PetscErrorCode EPSPRIMMESetPrecond(EPS eps, EPSPRIMMEPrecond precond);
1187 slepc 192
EXTERN PetscErrorCode EPSPRIMMEGetBlockSize(EPS eps,int *bs);
1190 slepc 193
EXTERN PetscErrorCode EPSPRIMMEGetMethod(EPS eps, EPSPRIMMEMethod *method);
194
EXTERN PetscErrorCode EPSPRIMMEGetPrecond(EPS eps, EPSPRIMMEPrecond *precond);
1187 slepc 195
 
476 dsic.upv.es!antodo 196
PETSC_EXTERN_CXX_END
6 dsic.upv.es!jroman 197
#endif
198