Actual source code: slepcip.h
1: /*
2: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3: SLEPc - Scalable Library for Eigenvalue Problem Computations
4: Copyright (c) 2002-2010, Universidad Politecnica de Valencia, Spain
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.
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.
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/>.
19: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
20: */
24: #include slepcsys.h
29: /*E
30: IPOrthogonalizationType - determines what type of orthogonalization to use
32: Level: advanced
34: .seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
35: E*/
36: typedef enum { IP_ORTH_MGS,
37: IP_ORTH_CGS } IPOrthogonalizationType;
39: /*E
40: IPOrthogonalizationRefinementType - determines what type of refinement
41: to use during orthogonalization
43: Level: advanced
45: .seealso: IPSetOrthogonalization(), IPGetOrthogonalization(), IPOrthogonalize()
46: E*/
47: typedef enum { IP_ORTH_REFINE_NEVER,
48: IP_ORTH_REFINE_IFNEEDED,
49: IP_ORTH_REFINE_ALWAYS } IPOrthogonalizationRefinementType;
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.
56: Level: beginner
58: .seealso: IPCreate()
59: S*/
60: typedef struct _p_IP* IP;
62: EXTERN PetscErrorCode IPInitializePackage(char *path);
63: EXTERN PetscErrorCode IPCreate(MPI_Comm,IP*);
64: EXTERN PetscErrorCode IPSetOptionsPrefix(IP,const char *);
65: EXTERN PetscErrorCode IPAppendOptionsPrefix(IP,const char *);
66: EXTERN PetscErrorCode IPGetOptionsPrefix(IP,const char *[]);
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);
73: EXTERN PetscErrorCode IPOrthogonalize(IP,PetscInt,Vec*,PetscInt,PetscTruth*,Vec*,Vec,PetscScalar*,PetscReal*,PetscTruth*);
74: EXTERN PetscErrorCode IPBiOrthogonalize(IP,PetscInt,Vec*,Vec*,Vec,PetscScalar*,PetscReal*);
75: EXTERN PetscErrorCode IPQRDecomposition(IP,Vec*,PetscInt,PetscInt,PetscScalar*,PetscInt);
77: /*E
78: IPBilinearForm - determines the type of bilinear/sesquilinear form
80: Level: developer
82: .seealso: IPSetBilinearForm(), IPGetBilinearForm()
83: E*/
84: typedef enum { IP_INNER_HERMITIAN,
85: IP_INNER_SYMMETRIC } IPBilinearForm;
86: EXTERN PetscErrorCode IPSetBilinearForm(IP,Mat,IPBilinearForm);
87: EXTERN PetscErrorCode IPGetBilinearForm(IP,Mat*,IPBilinearForm*);
88: EXTERN PetscErrorCode IPApplyMatrix(IP,Vec,Vec);
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*);
100: EXTERN PetscErrorCode IPGetOperationCounters(IP,PetscInt*);
101: EXTERN PetscErrorCode IPResetOperationCounters(IP);
104: #endif