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