Actual source code: slepceps.h

  1: /*
  2:    User interface for the SLEPC eigenproblem solvers. 
  3: */
 6:  #include slepc.h
 7:  #include slepcst.h

  9: extern int EPS_COOKIE;

 11: /*S
 12:      EPS - Abstract SLEPc object that manages all the eigenvalue 
 13:      problem solvers.

 15:    Level: beginner

 17:   Concepts: eigen solvers

 19: .seealso:  EPSCreate(), ST
 20: S*/
 21: typedef struct _p_EPS* EPS;

 23: #define EPSPOWER     "power"
 24: #define EPSRQI       "rqi"
 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 int EPSCreate(MPI_Comm,EPS *);
 48: extern int EPSDestroy(EPS);
 49: extern int EPSSetType(EPS,EPSType);
 50: extern int EPSGetType(EPS,EPSType*);
 51: extern int EPSSetProblemType(EPS,EPSProblemType);
 52: extern int EPSGetProblemType(EPS,EPSProblemType*);
 53: extern int EPSSetOperators(EPS,Mat,Mat);
 54: extern int EPSSetFromOptions(EPS);
 55: extern int EPSSetUp(EPS);
 56: extern int EPSSolve(EPS);
 57: extern int EPSView(EPS,PetscViewer);

 59: extern PetscFList EPSList;
 60: extern int EPSRegisterAll(char *);
 61: extern int EPSRegisterDestroy(void);
 62: extern int 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 int EPSSetST(EPS,ST);
 70: extern int EPSGetST(EPS,ST*);
 71: extern int EPSSetTolerances(EPS,PetscReal,int);
 72: extern int EPSGetTolerances(EPS,PetscReal*,int*);
 73: extern int EPSSetDimensions(EPS,int,int);
 74: extern int EPSGetDimensions(EPS,int*,int*);

 76: extern int EPSGetConverged(EPS,int*);
 77: extern int EPSGetEigenpair(EPS,int,PetscScalar*,PetscScalar*,Vec,Vec);
 78: extern int EPSComputeRelativeError(EPS,int,PetscReal*);
 79: extern int EPSComputeResidualNorm(EPS,int,PetscReal*);
 80: extern int EPSGetErrorEstimate(EPS,int,PetscReal*);

 82: extern int EPSSetMonitor(EPS,int (*)(EPS,int,int,PetscReal*,int,void*),void*);
 83: extern int EPSSetValuesMonitor(EPS,int (*)(EPS,int,int,PetscScalar*,PetscScalar*,int,void*),void*);
 84: extern int EPSClearMonitor(EPS);
 85: extern int EPSGetMonitorContext(EPS,void **);
 86: extern int EPSGetIterationNumber(EPS,int*);
 87: extern int EPSGetNumberLinearIterations(EPS eps,int*);

 89: extern int EPSSetInitialVector(EPS,Vec);
 90: extern int EPSGetInitialVector(EPS,Vec*);
 91: extern int EPSSetDropEigenvectors(EPS);
 92: extern int EPSSetWhichEigenpairs(EPS,EPSWhich);
 93: extern int EPSGetWhichEigenpairs(EPS,EPSWhich*);
 94: extern int EPSSetOrthogonalization(EPS,EPSOrthogonalizationType,EPSOrthogonalizationRefinementType,PetscReal);
 95: extern int EPSGetOrthogonalization(EPS,EPSOrthogonalizationType*,EPSOrthogonalizationRefinementType*,PetscReal*);

 97: extern int EPSIsGeneralized(EPS,PetscTruth*);
 98: extern int EPSIsHermitian(EPS,PetscTruth*);

100: extern int EPSDefaultEstimatesMonitor(EPS,int,int,PetscReal*,int,void*);
101: extern int EPSDefaultValuesMonitor(EPS,int,int,PetscScalar*,PetscScalar*,int,void*);

103: extern int EPSSetOptionsPrefix(EPS,char*);
104: extern int EPSAppendOptionsPrefix(EPS,char*);
105: extern int 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 int EPSGetConvergedReason(EPS,EPSConvergedReason *);

117: extern int EPSComputeExplicitOperator(EPS,Mat*);
118: extern int EPSSortEigenvalues(int,PetscScalar*,PetscScalar*,EPSWhich,int,int*);
119: extern int EPSDenseNHEP(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*);
120: extern int EPSDenseNHEPSorted(int,PetscScalar*,PetscScalar*,PetscScalar*,PetscScalar*,int,EPSWhich);
121: extern int EPSQRDecomposition(EPS,int,int,PetscScalar*,int);
122: extern int EPSReverseProjection(EPS,int,int,PetscScalar*);
123: extern int EPSSwapEigenpairs(EPS,int,int);

125: extern int STPreSolve(ST,EPS);
126: extern int STPostSolve(ST,EPS);
127: extern int EPSSetDefaults(EPS eps);

129: /* --------- options specific to particular eigensolvers -------- */

131: extern int EPSSubspaceSetInner(EPS,int);

133: extern int EPSBlzpackSetBlockSize(EPS,int);
134: extern int EPSBlzpackSetInterval(EPS,PetscReal,PetscReal);
135: extern int EPSBlzpackSetMatGetInertia(EPS,int (*f)(Mat,int*,int*,int*));

137: #endif