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