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
1376 slepc 1
/*
2
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1672 slepc 3
   SLEPc - Scalable Library for Eigenvalue Problem Computations
2116 eromero 4
   Copyright (c) 2002-2010, Universidad Politecnica de Valencia, Spain
1376 slepc 5
 
1672 slepc 6
   This file is part of SLEPc.
7
 
8
   SLEPc is free software: you can redistribute it and/or modify it under  the
9
   terms of version 3 of the GNU Lesser General Public License as published by
10
   the Free Software Foundation.
11
 
12
   SLEPc  is  distributed in the hope that it will be useful, but WITHOUT  ANY
13
   WARRANTY;  without even the implied warranty of MERCHANTABILITY or  FITNESS
14
   FOR  A  PARTICULAR PURPOSE. See the GNU Lesser General Public  License  for
15
   more details.
16
 
17
   You  should have received a copy of the GNU Lesser General  Public  License
18
   along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
1376 slepc 19
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
20
*/
21
 
1302 slepc 22
#if !defined(__SLEPCIP_H)
23
#define __SLEPCIP_H
1885 jroman 24
#include "slepcsys.h"
1302 slepc 25
PETSC_EXTERN_CXX_BEGIN
26
 
2213 jroman 27
extern PetscClassId IP_CLASSID;
1345 slepc 28
 
1364 slepc 29
/*E
30
    IPOrthogonalizationType - determines what type of orthogonalization to use
31
 
32
    Level: advanced
33
 
34
.seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
35
E*/
1940 jroman 36
typedef enum { IP_ORTH_MGS,
37
               IP_ORTH_CGS } IPOrthogonalizationType;
1364 slepc 38
 
39
/*E
40
    IPOrthogonalizationRefinementType - determines what type of refinement
41
    to use during orthogonalization
42
 
43
    Level: advanced
44
 
45
.seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
46
E*/
1940 jroman 47
typedef enum { IP_ORTH_REFINE_NEVER,
48
               IP_ORTH_REFINE_IFNEEDED,
1302 slepc 49
               IP_ORTH_REFINE_ALWAYS } IPOrthogonalizationRefinementType;
50
 
1364 slepc 51
/*S
52
     IP - Abstraction of a vector inner product, that can be defined
53
     in different ways. Using this object is not required for application
54
     programmers.
55
 
56
   Level: beginner
57
 
58
.seealso:  IPCreate()
59
S*/
1302 slepc 60
typedef struct _p_IP* IP;
61
 
2240 jroman 62
extern PetscErrorCode IPCreate(MPI_Comm,IP*);
63
extern PetscErrorCode IPSetOptionsPrefix(IP,const char *);
64
extern PetscErrorCode IPAppendOptionsPrefix(IP,const char *);
65
extern PetscErrorCode IPGetOptionsPrefix(IP,const char *[]);
66
extern PetscErrorCode IPSetFromOptions(IP);
67
extern PetscErrorCode IPSetOrthogonalization(IP,IPOrthogonalizationType,IPOrthogonalizationRefinementType,PetscReal);
68
extern PetscErrorCode IPGetOrthogonalization(IP,IPOrthogonalizationType*,IPOrthogonalizationRefinementType*,PetscReal*);
69
extern PetscErrorCode IPView(IP,PetscViewer);
2312 jroman 70
extern PetscErrorCode IPDestroy(IP*);
2348 jroman 71
extern PetscErrorCode IPReset(IP);
1302 slepc 72
 
2240 jroman 73
extern PetscErrorCode IPOrthogonalize(IP,PetscInt,Vec*,PetscInt,PetscBool*,Vec*,Vec,PetscScalar*,PetscReal*,PetscBool*);
74
extern PetscErrorCode IPBiOrthogonalize(IP,PetscInt,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
75
extern PetscErrorCode IPQRDecomposition(IP,Vec*,PetscInt,PetscInt,PetscScalar*,PetscInt);
1302 slepc 76
 
1364 slepc 77
/*E
78
    IPBilinearForm - determines the type of bilinear/sesquilinear form
79
 
80
    Level: developer
81
 
82
.seealso: IPSetBilinearForm(), IPGetBilinearForm()
83
E*/
1940 jroman 84
typedef enum { IP_INNER_HERMITIAN,
85
               IP_INNER_SYMMETRIC } IPBilinearForm;
2240 jroman 86
extern PetscErrorCode IPSetBilinearForm(IP,Mat,IPBilinearForm);
87
extern PetscErrorCode IPGetBilinearForm(IP,Mat*,IPBilinearForm*);
88
extern PetscErrorCode IPApplyMatrix(IP,Vec,Vec);
1302 slepc 89
 
2240 jroman 90
extern PetscErrorCode IPInnerProduct(IP ip,Vec,Vec,PetscScalar*);
91
extern PetscErrorCode IPInnerProductBegin(IP ip,Vec,Vec,PetscScalar*);
92
extern PetscErrorCode IPInnerProductEnd(IP ip,Vec,Vec,PetscScalar*);
93
extern PetscErrorCode IPMInnerProduct(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
94
extern PetscErrorCode IPMInnerProductBegin(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
95
extern PetscErrorCode IPMInnerProductEnd(IP ip,Vec,PetscInt,const Vec[],PetscScalar*);
96
extern PetscErrorCode IPNorm(IP ip,Vec,PetscReal*);
97
extern PetscErrorCode IPNormBegin(IP ip,Vec,PetscReal*);
98
extern PetscErrorCode IPNormEnd(IP ip,Vec,PetscReal*);
1302 slepc 99
 
2240 jroman 100
extern PetscErrorCode IPGetOperationCounters(IP,PetscInt*);
101
extern PetscErrorCode IPResetOperationCounters(IP);
1329 slepc 102
 
1302 slepc 103
PETSC_EXTERN_CXX_END
104
#endif