Actual source code: slepcst.h
1: /*
2: Spectral transformation module for eigenvalue problems.
4: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5: SLEPc - Scalable Library for Eigenvalue Problem Computations
6: Copyright (c) 2002-2007, Universidad Politecnica de Valencia, Spain
8: This file is part of SLEPc. See the README file for conditions of use
9: and additional information.
10: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11: */
15: #include "petscksp.h"
20: /*S
21: ST - Abstract SLEPc object that manages spectral transformations.
22: This object is accessed only in advanced applications.
24: Level: beginner
26: .seealso: STCreate(), EPS
27: S*/
28: typedef struct _p_ST* ST;
30: /*E
31: STType - String with the name of a SLEPc spectral transformation
33: Level: beginner
35: .seealso: STSetType(), ST
36: E*/
37: #define STType const char*
38: #define STSHELL "shell"
39: #define STSHIFT "shift"
40: #define STSINV "sinvert"
41: #define STCAYLEY "cayley"
42: #define STFOLD "fold"
44: EXTERN PetscErrorCode STCreate(MPI_Comm,ST*);
45: EXTERN PetscErrorCode STDestroy(ST);
46: EXTERN PetscErrorCode STSetType(ST,STType);
47: EXTERN PetscErrorCode STGetType(ST,STType*);
48: EXTERN PetscErrorCode STSetOperators(ST,Mat,Mat);
49: EXTERN PetscErrorCode STGetOperators(ST,Mat*,Mat*);
50: EXTERN PetscErrorCode STSetUp(ST);
51: EXTERN PetscErrorCode STSetFromOptions(ST);
52: EXTERN PetscErrorCode STView(ST,PetscViewer);
54: EXTERN PetscErrorCode STApply(ST,Vec,Vec);
55: EXTERN PetscErrorCode STGetBilinearForm(ST,Mat*);
56: EXTERN PetscErrorCode STApplyTranspose(ST,Vec,Vec);
57: EXTERN PetscErrorCode STComputeExplicitOperator(ST,Mat*);
58: EXTERN PetscErrorCode STPostSolve(ST);
60: EXTERN PetscErrorCode STInitializePackage(char*);
62: EXTERN PetscErrorCode STSetKSP(ST,KSP);
63: EXTERN PetscErrorCode STGetKSP(ST,KSP*);
64: EXTERN PetscErrorCode STAssociatedKSPSolve(ST,Vec,Vec);
65: EXTERN PetscErrorCode STSetShift(ST,PetscScalar);
66: EXTERN PetscErrorCode STGetShift(ST,PetscScalar*);
68: EXTERN PetscErrorCode STSetOptionsPrefix(ST,const char*);
69: EXTERN PetscErrorCode STAppendOptionsPrefix(ST,const char*);
70: EXTERN PetscErrorCode STGetOptionsPrefix(ST,const char*[]);
72: EXTERN PetscErrorCode STBackTransform(ST,PetscScalar*,PetscScalar*);
74: EXTERN PetscErrorCode STCheckNullSpace(ST,int,const Vec[]);
76: EXTERN PetscErrorCode STGetOperationCounters(ST,int*,int*);
77: EXTERN PetscErrorCode STResetOperationCounters(ST);
79: /*E
80: STMatMode - determines how to handle the coefficient matrix associated
81: to the spectral transformation
83: Level: intermediate
85: .seealso: STSetMatMode(), STGetMatMode()
86: E*/
87: typedef enum { STMATMODE_COPY, STMATMODE_INPLACE,
88: STMATMODE_SHELL } STMatMode;
89: EXTERN PetscErrorCode STSetMatMode(ST,STMatMode);
90: EXTERN PetscErrorCode STGetMatMode(ST,STMatMode*);
91: EXTERN PetscErrorCode STSetMatStructure(ST,MatStructure);
93: EXTERN PetscErrorCode STRegister(const char*,const char*,const char*,int(*)(ST));
94: #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
95: #define STRegisterDynamic(a,b,c,d) STRegister(a,b,c,0)
96: #else
97: #define STRegisterDynamic(a,b,c,d) STRegister(a,b,c,d)
98: #endif
99: EXTERN PetscErrorCode STRegisterDestroy(void);
101: /* --------- options specific to particular spectral transformations-------- */
103: EXTERN PetscErrorCode STShellGetContext(ST st,void **ctx);
104: EXTERN PetscErrorCode STShellSetContext(ST st,void *ctx);
105: EXTERN PetscErrorCode STShellSetApply(ST st,PetscErrorCode (*apply)(void*,Vec,Vec));
106: EXTERN PetscErrorCode STShellSetApplyTranspose(ST st,PetscErrorCode (*applytrans)(void*,Vec,Vec));
107: EXTERN PetscErrorCode STShellSetBackTransform(ST st,PetscErrorCode (*backtr)(void*,PetscScalar*,PetscScalar*));
108: EXTERN PetscErrorCode STShellSetName(ST,const char[]);
109: EXTERN PetscErrorCode STShellGetName(ST,char*[]);
111: EXTERN PetscErrorCode STCayleySetAntishift(ST,PetscScalar);
113: EXTERN PetscErrorCode STFoldSetLeftSide(ST st,PetscTruth left);
116: #endif