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