Actual source code: slepcst.h
2: /*
3: Spectral transformation module for eigenvalue problems.
4: */
7: #include "petscksp.h"
12: typedef struct _p_ST* ST;
14: #define STSHELL "shell"
15: #define STSHIFT "shift"
16: #define STSINV "sinvert"
17: #define STCAYLEY "cayley"
18: #define STFOLD "fold"
19: #define STType const char*
21: EXTERN PetscErrorCode STCreate(MPI_Comm,ST*);
22: EXTERN PetscErrorCode STDestroy(ST);
23: EXTERN PetscErrorCode STSetType(ST,STType);
24: EXTERN PetscErrorCode STGetType(ST,STType*);
25: EXTERN PetscErrorCode STSetOperators(ST,Mat,Mat);
26: EXTERN PetscErrorCode STGetOperators(ST,Mat*,Mat*);
27: EXTERN PetscErrorCode STSetUp(ST);
28: EXTERN PetscErrorCode STSetFromOptions(ST);
29: EXTERN PetscErrorCode STView(ST,PetscViewer);
31: EXTERN PetscErrorCode STApply(ST,Vec,Vec);
32: EXTERN PetscErrorCode STApplyB(ST,Vec,Vec);
33: EXTERN PetscErrorCode STApplyNoB(ST,Vec,Vec);
34: EXTERN PetscErrorCode STApplyTranspose(ST,Vec,Vec);
35: EXTERN PetscErrorCode STComputeExplicitOperator(ST,Mat*);
36: EXTERN PetscErrorCode STPostSolve(ST);
38: EXTERN PetscErrorCode STInitializePackage(char*);
40: EXTERN PetscErrorCode STSetKSP(ST,KSP);
41: EXTERN PetscErrorCode STGetKSP(ST,KSP*);
42: EXTERN PetscErrorCode STSetShift(ST,PetscScalar);
43: EXTERN PetscErrorCode STGetShift(ST,PetscScalar*);
45: EXTERN PetscErrorCode STSetOptionsPrefix(ST,char*);
46: EXTERN PetscErrorCode STAppendOptionsPrefix(ST,char*);
47: EXTERN PetscErrorCode STGetOptionsPrefix(ST,const char*[]);
49: EXTERN PetscErrorCode STBackTransform(ST,PetscScalar*,PetscScalar*);
51: EXTERN PetscErrorCode STCheckNullSpace(ST,int,const Vec[]);
53: EXTERN PetscErrorCode STGetOperationCounters(ST,int*,int*,int*);
54: EXTERN PetscErrorCode STResetOperationCounters(ST);
56: typedef enum { STMATMODE_COPY, STMATMODE_INPLACE,
57: STMATMODE_SHELL } STMatMode;
58: EXTERN PetscErrorCode STSetMatMode(ST,STMatMode);
59: EXTERN PetscErrorCode STGetMatMode(ST,STMatMode*);
60: EXTERN PetscErrorCode STSetMatStructure(ST,MatStructure);
62: typedef enum { STINNER_HERMITIAN, STINNER_SYMMETRIC,
63: STINNER_B_HERMITIAN, STINNER_B_SYMMETRIC } STBilinearForm;
64: EXTERN PetscErrorCode STSetBilinearForm(ST,STBilinearForm);
66: EXTERN PetscErrorCode STInnerProduct(ST st,Vec,Vec,PetscScalar*);
67: EXTERN PetscErrorCode STInnerProductBegin(ST st,Vec,Vec,PetscScalar*);
68: EXTERN PetscErrorCode STInnerProductEnd(ST st,Vec,Vec,PetscScalar*);
69: EXTERN PetscErrorCode STMInnerProduct(ST st,PetscInt,Vec,const Vec[],PetscScalar*);
70: EXTERN PetscErrorCode STMInnerProductBegin(ST st,PetscInt,Vec,const Vec[],PetscScalar*);
71: EXTERN PetscErrorCode STMInnerProductEnd(ST st,PetscInt,Vec,const Vec[],PetscScalar*);
72: EXTERN PetscErrorCode STNorm(ST st,Vec,PetscReal*);
73: EXTERN PetscErrorCode STNormBegin(ST st,Vec,PetscReal*);
74: EXTERN PetscErrorCode STNormEnd(ST st,Vec,PetscReal*);
76: /* --------- options specific to particular spectral transformations-------- */
78: EXTERN PetscErrorCode STShellGetContext(ST st,void **ctx);
79: EXTERN PetscErrorCode STShellSetContext(ST st,void *ctx);
80: EXTERN PetscErrorCode STShellSetApply(ST st,PetscErrorCode (*apply)(void*,Vec,Vec));
81: EXTERN PetscErrorCode STShellSetApplyTranspose(ST st,PetscErrorCode (*applytrans)(void*,Vec,Vec));
82: EXTERN PetscErrorCode STShellSetBackTransform(ST st,PetscErrorCode (*backtr)(void*,PetscScalar*,PetscScalar*));
83: EXTERN PetscErrorCode STShellSetName(ST,const char[]);
84: EXTERN PetscErrorCode STShellGetName(ST,char*[]);
86: EXTERN PetscErrorCode STCayleySetAntishift(ST,PetscScalar);
88: EXTERN PetscErrorCode STFoldSetLeftSide(ST st,PetscTruth left);
91: #endif