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
4
   Copyright (c) 2002-2009, 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
 
1345 slepc 27
extern PetscCookie IP_COOKIE;
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
 
62
EXTERN PetscErrorCode IPInitializePackage(char *path);
63
EXTERN PetscErrorCode IPCreate(MPI_Comm,IP*);
1316 slepc 64
EXTERN PetscErrorCode IPSetOptionsPrefix(IP,const char *);
1302 slepc 65
EXTERN PetscErrorCode IPAppendOptionsPrefix(IP,const char *);
1518 slepc 66
EXTERN PetscErrorCode IPGetOptionsPrefix(IP,const char *[]);
1302 slepc 67
EXTERN PetscErrorCode IPSetFromOptions(IP);
68
EXTERN PetscErrorCode IPSetOrthogonalization(IP,IPOrthogonalizationType,IPOrthogonalizationRefinementType,PetscReal);
69
EXTERN PetscErrorCode IPGetOrthogonalization(IP,IPOrthogonalizationType*,IPOrthogonalizationRefinementType*,PetscReal*);
70
EXTERN PetscErrorCode IPView(IP,PetscViewer);
71
EXTERN PetscErrorCode IPDestroy(IP);
72
 
1755 antodo 73
EXTERN PetscErrorCode IPOrthogonalize(IP,PetscInt,Vec*,PetscInt,PetscTruth*,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*);
1509 slepc 74
EXTERN PetscErrorCode IPBiOrthogonalize(IP,PetscInt,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
1755 antodo 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;
1329 slepc 86
EXTERN PetscErrorCode IPSetBilinearForm(IP,Mat,IPBilinearForm);
87
EXTERN PetscErrorCode IPGetBilinearForm(IP,Mat*,IPBilinearForm*);
88
EXTERN PetscErrorCode IPApplyMatrix(IP,Vec,Vec);
1302 slepc 89
 
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*);
1381 slepc 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*);
1302 slepc 96
EXTERN PetscErrorCode IPNorm(IP ip,Vec,PetscReal*);
97
EXTERN PetscErrorCode IPNormBegin(IP ip,Vec,PetscReal*);
98
EXTERN PetscErrorCode IPNormEnd(IP ip,Vec,PetscReal*);
99
 
1509 slepc 100
EXTERN PetscErrorCode IPGetOperationCounters(IP,PetscInt*);
1329 slepc 101
EXTERN PetscErrorCode IPResetOperationCounters(IP);
102
 
1302 slepc 103
PETSC_EXTERN_CXX_END
104
#endif