Subversion Repositories slepc-dev

Rev

Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 dsic.upv.es!jroman 1
/*
2
      Spectral transformation module for eigenvalue problems.  
1376 slepc 3
 
4
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1672 slepc 5
   SLEPc - Scalable Library for Eigenvalue Problem Computations
2116 eromero 6
   Copyright (c) 2002-2010, Universidad Politecnica de Valencia, Spain
1376 slepc 7
 
1672 slepc 8
   This file is part of SLEPc.
9
 
10
   SLEPc is free software: you can redistribute it and/or modify it under  the
11
   terms of version 3 of the GNU Lesser General Public License as published by
12
   the Free Software Foundation.
13
 
14
   SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY
15
   WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS
16
   FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for
17
   more details.
18
 
19
   You  should have received a copy of the GNU Lesser General  Public  License
20
   along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
1376 slepc 21
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6 dsic.upv.es!jroman 22
*/
1376 slepc 23
 
6 dsic.upv.es!jroman 24
#if !defined(__SLEPCST_H)
25
#define __SLEPCST_H
18 dsic.upv.es!jroman 26
#include "petscksp.h"
476 dsic.upv.es!antodo 27
PETSC_EXTERN_CXX_BEGIN
6 dsic.upv.es!jroman 28
 
2213 jroman 29
extern PetscClassId ST_CLASSID;
6 dsic.upv.es!jroman 30
 
1364 slepc 31
/*S
32
     ST - Abstract SLEPc object that manages spectral transformations.
33
     This object is accessed only in advanced applications.
34
 
35
   Level: beginner
36
 
37
.seealso:  STCreate(), EPS
38
S*/
6 dsic.upv.es!jroman 39
typedef struct _p_ST* ST;
40
 
1364 slepc 41
/*E
42
    STType - String with the name of a SLEPc spectral transformation
43
 
44
   Level: beginner
45
 
46
.seealso: STSetType(), ST
47
E*/
1502 slepc 48
#define STType      char*
6 dsic.upv.es!jroman 49
#define STSHELL     "shell"
50
#define STSHIFT     "shift"
2092 jroman 51
#define STSINVERT   "sinvert"
344 dsic.upv.es!antodo 52
#define STCAYLEY    "cayley"
777 dsic.upv.es!antodo 53
#define STFOLD      "fold"
1996 eromero 54
#define STPRECOND   "precond"
6 dsic.upv.es!jroman 55
 
2240 jroman 56
extern PetscErrorCode STCreate(MPI_Comm,ST*);
57
extern PetscErrorCode STDestroy(ST);
58
extern PetscErrorCode STSetType(ST,const STType);
59
extern PetscErrorCode STGetType(ST,const STType*);
60
extern PetscErrorCode STSetOperators(ST,Mat,Mat);
61
extern PetscErrorCode STGetOperators(ST,Mat*,Mat*);
62
extern PetscErrorCode STSetUp(ST);
63
extern PetscErrorCode STSetFromOptions(ST);
64
extern PetscErrorCode STView(ST,PetscViewer);
6 dsic.upv.es!jroman 65
 
2240 jroman 66
extern PetscErrorCode STApply(ST,Vec,Vec);
67
extern PetscErrorCode STGetBilinearForm(ST,Mat*);
68
extern PetscErrorCode STApplyTranspose(ST,Vec,Vec);
69
extern PetscErrorCode STComputeExplicitOperator(ST,Mat*);
70
extern PetscErrorCode STPostSolve(ST);
6 dsic.upv.es!jroman 71
 
2240 jroman 72
extern PetscErrorCode STSetKSP(ST,KSP);
73
extern PetscErrorCode STGetKSP(ST,KSP*);
74
extern PetscErrorCode STSetShift(ST,PetscScalar);
75
extern PetscErrorCode STGetShift(ST,PetscScalar*);
76
extern PetscErrorCode STSetDefaultShift(ST,PetscScalar);
77
extern PetscErrorCode STSetBalanceMatrix(ST,Vec);
78
extern PetscErrorCode STGetBalanceMatrix(ST,Vec*);
6 dsic.upv.es!jroman 79
 
2240 jroman 80
extern PetscErrorCode STSetOptionsPrefix(ST,const char*);
81
extern PetscErrorCode STAppendOptionsPrefix(ST,const char*);
82
extern PetscErrorCode STGetOptionsPrefix(ST,const char*[]);
6 dsic.upv.es!jroman 83
 
2240 jroman 84
extern PetscErrorCode STBackTransform(ST,PetscInt,PetscScalar*,PetscScalar*);
6 dsic.upv.es!jroman 85
 
2240 jroman 86
extern PetscErrorCode STCheckNullSpace(ST,PetscInt,const Vec[]);
310 dsic.upv.es!antodo 87
 
2240 jroman 88
extern PetscErrorCode STGetOperationCounters(ST,PetscInt*,PetscInt*);
89
extern PetscErrorCode STResetOperationCounters(ST);
163 dsic.upv.es!antodo 90
 
1364 slepc 91
/*E
92
    STMatMode - determines how to handle the coefficient matrix associated
93
    to the spectral transformation
94
 
95
    Level: intermediate
96
 
97
.seealso: STSetMatMode(), STGetMatMode()
98
E*/
1940 jroman 99
typedef enum { ST_MATMODE_COPY,
100
               ST_MATMODE_INPLACE,
101
               ST_MATMODE_SHELL } STMatMode;
2240 jroman 102
extern PetscErrorCode STSetMatMode(ST,STMatMode);
103
extern PetscErrorCode STGetMatMode(ST,STMatMode*);
104
extern PetscErrorCode STSetMatStructure(ST,MatStructure);
105
extern PetscErrorCode STGetMatStructure(ST,MatStructure*);
6 dsic.upv.es!jroman 106
 
2240 jroman 107
extern PetscErrorCode STRegister(const char*,const char*,const char*,PetscErrorCode(*)(ST));
1389 slepc 108
#if defined(PETSC_USE_DYNAMIC_LIBRARIES)
109
#define STRegisterDynamic(a,b,c,d) STRegister(a,b,c,0)
110
#else
111
#define STRegisterDynamic(a,b,c,d) STRegister(a,b,c,d)
112
#endif
2240 jroman 113
extern PetscErrorCode STRegisterDestroy(void);
1389 slepc 114
 
386 dsic.upv.es!jroman 115
/* --------- options specific to particular spectral transformations-------- */
116
 
2240 jroman 117
extern PetscErrorCode STShellGetContext(ST st,void **ctx);
118
extern PetscErrorCode STShellSetContext(ST st,void *ctx);
119
extern PetscErrorCode STShellSetApply(ST st,PetscErrorCode (*apply)(ST,Vec,Vec));
120
extern PetscErrorCode STShellSetApplyTranspose(ST st,PetscErrorCode (*applytrans)(ST,Vec,Vec));
121
extern PetscErrorCode STShellSetBackTransform(ST st,PetscErrorCode (*backtr)(ST,PetscInt,PetscScalar*,PetscScalar*));
6 dsic.upv.es!jroman 122
 
2240 jroman 123
extern PetscErrorCode STCayleySetAntishift(ST,PetscScalar);
344 dsic.upv.es!antodo 124
 
2240 jroman 125
extern PetscErrorCode STPrecondGetMatForPC(ST st,Mat *mat);
126
extern PetscErrorCode STPrecondSetMatForPC(ST st,Mat mat);
127
extern PetscErrorCode STPrecondGetKSPHasMat(ST st,PetscBool *setmat);
128
extern PetscErrorCode STPrecondSetKSPHasMat(ST st,PetscBool setmat);
1996 eromero 129
 
476 dsic.upv.es!antodo 130
PETSC_EXTERN_CXX_END
6 dsic.upv.es!jroman 131
#endif
132