Actual source code: slepcst.h
2: /*
3: Spectral transformation module for eigenvalue problems.
4: */
7: #include "petscksp.h"
8: PETSC_EXTERN_CXX_BEGIN
10: extern PetscCookie ST_COOKIE;
12: typedef struct _p_ST* ST;
14: #define STSHELL "shell"
15: #define STSHIFT "shift"
16: #define STSINV "sinvert"
17: #define STCAYLEY "cayley"
18: typedef char *STType;
20: EXTERN PetscErrorCode STCreate(MPI_Comm,ST*);
21: EXTERN PetscErrorCode STDestroy(ST);
22: EXTERN PetscErrorCode STSetType(ST,STType);
23: EXTERN PetscErrorCode STGetType(ST,STType*);
24: EXTERN PetscErrorCode STSetOperators(ST,Mat,Mat);
25: EXTERN PetscErrorCode STGetOperators(ST,Mat*,Mat*);
26: EXTERN PetscErrorCode STSetUp(ST);
27: EXTERN PetscErrorCode STSetFromOptions(ST);
28: EXTERN PetscErrorCode STView(ST,PetscViewer);
30: EXTERN PetscErrorCode STApply(ST,Vec,Vec);
31: EXTERN PetscErrorCode STApplyB(ST,Vec,Vec);
32: EXTERN PetscErrorCode STApplyNoB(ST,Vec,Vec);
34: extern PetscFList STList;
35: EXTERN PetscErrorCode STRegisterAll(char*);
36: EXTERN PetscErrorCode STRegisterDestroy(void);
37: EXTERN PetscErrorCode STRegister(char*,char*,char*,int(*)(ST));
38: #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
39: #define STRegisterDynamic(a,b,c,d) STRegister(a,b,c,0)
40: #else
41: #define STRegisterDynamic(a,b,c,d) STRegister(a,b,c,d)
42: #endif
44: EXTERN PetscErrorCode STSetKSP(ST,KSP);
45: EXTERN PetscErrorCode STGetKSP(ST,KSP*);
46: EXTERN PetscErrorCode STSetShift(ST,PetscScalar);
47: EXTERN PetscErrorCode STGetShift(ST,PetscScalar*);
49: EXTERN PetscErrorCode STSetOptionsPrefix(ST,char*);
50: EXTERN PetscErrorCode STAppendOptionsPrefix(ST,char*);
51: EXTERN PetscErrorCode STGetOptionsPrefix(ST,char**);
53: EXTERN PetscErrorCode STBackTransform(ST,PetscScalar*,PetscScalar*);
55: EXTERN PetscErrorCode STCheckNullSpace(ST,int,Vec*);
57: EXTERN PetscErrorCode STGetNumberLinearIterations(ST,int*);
58: EXTERN PetscErrorCode STResetNumberLinearIterations(ST);
60: typedef enum { STMATMODE_COPY, STMATMODE_INPLACE,
61: STMATMODE_SHELL } STMatMode;
62: EXTERN PetscErrorCode STSetMatMode(ST,STMatMode);
63: EXTERN PetscErrorCode STGetMatMode(ST,STMatMode*);
64: EXTERN PetscErrorCode STSetMatStructure(ST,MatStructure);
66: typedef enum { STINNER_HERMITIAN, STINNER_SYMMETRIC,
67: STINNER_B_HERMITIAN, STINNER_B_SYMMETRIC } STBilinearForm;
68: EXTERN PetscErrorCode STSetBilinearForm(ST,STBilinearForm);
70: EXTERN PetscErrorCode STInnerProduct(ST st,Vec,Vec,PetscScalar*);
71: EXTERN PetscErrorCode STNorm(ST st,Vec,PetscReal*);
73: /* --------- options specific to particular spectral transformations-------- */
75: EXTERN PetscErrorCode STShellSetApply(ST, int (*)(void*,Vec,Vec), void*);
76: EXTERN PetscErrorCode STShellSetBackTransform(ST, int (*)(void*,PetscScalar*,PetscScalar*));
77: EXTERN PetscErrorCode STShellSetName(ST,char*);
78: EXTERN PetscErrorCode STShellGetName(ST,char**);
80: EXTERN PetscErrorCode STCayleySetAntishift(ST,PetscScalar);
82: PETSC_EXTERN_CXX_END
83: #endif