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