Actual source code: linearp.h
1: /*
3: Private header for QEPLINEAR.
5: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6: SLEPc - Scalable Library for Eigenvalue Problem Computations
7: Copyright (c) 2002-2010, Universidad Politecnica de Valencia, Spain
9: This file is part of SLEPc.
10:
11: SLEPc is free software: you can redistribute it and/or modify it under the
12: terms of version 3 of the GNU Lesser General Public License as published by
13: the Free Software Foundation.
15: SLEPc is distributed in the hope that it will be useful, but WITHOUT ANY
16: WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17: FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
18: more details.
20: You should have received a copy of the GNU Lesser General Public License
21: along with SLEPc. If not, see <http://www.gnu.org/licenses/>.
22: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
23: */
25: typedef struct {
26: PetscTruth explicitmatrix;
27: PetscInt cform; /* companion form */
28: PetscReal sfactor; /* scaling factor */
29: Mat A,B; /* matrices of generalized eigenproblem */
30: EPS eps; /* linear eigensolver for Az=lBz */
31: Mat M,C,K; /* copy of QEP coefficient matrices */
32: Vec x1,x2,y1,y2; /* work vectors */
33: PetscTruth setfromoptionscalled;
34: } QEP_LINEAR;
36: /* N1 */
37: EXTERN PetscErrorCode MatMult_QEPLINEAR_N1A(Mat,Vec,Vec);
38: EXTERN PetscErrorCode MatMult_QEPLINEAR_N1B(Mat,Vec,Vec);
39: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_N1A(Mat,Vec);
40: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_N1B(Mat,Vec);
41: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_N1A(MPI_Comm,QEP_LINEAR*,Mat*);
42: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_N1B(MPI_Comm,QEP_LINEAR*,Mat*);
44: /* N2 */
45: EXTERN PetscErrorCode MatMult_QEPLINEAR_N2A(Mat,Vec,Vec);
46: EXTERN PetscErrorCode MatMult_QEPLINEAR_N2B(Mat,Vec,Vec);
47: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_N2A(Mat,Vec);
48: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_N2B(Mat,Vec);
49: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_N2A(MPI_Comm,QEP_LINEAR*,Mat*);
50: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_N2B(MPI_Comm,QEP_LINEAR*,Mat*);
52: /* S1 */
53: EXTERN PetscErrorCode MatMult_QEPLINEAR_S1A(Mat,Vec,Vec);
54: EXTERN PetscErrorCode MatMult_QEPLINEAR_S1B(Mat,Vec,Vec);
55: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_S1A(Mat,Vec);
56: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_S1B(Mat,Vec);
57: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_S1A(MPI_Comm,QEP_LINEAR*,Mat*);
58: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_S1B(MPI_Comm,QEP_LINEAR*,Mat*);
60: /* S2 */
61: EXTERN PetscErrorCode MatMult_QEPLINEAR_S2A(Mat,Vec,Vec);
62: EXTERN PetscErrorCode MatMult_QEPLINEAR_S2B(Mat,Vec,Vec);
63: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_S2A(Mat,Vec);
64: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_S2B(Mat,Vec);
65: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_S2A(MPI_Comm,QEP_LINEAR*,Mat*);
66: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_S2B(MPI_Comm,QEP_LINEAR*,Mat*);
68: /* H1 */
69: EXTERN PetscErrorCode MatMult_QEPLINEAR_H1A(Mat,Vec,Vec);
70: EXTERN PetscErrorCode MatMult_QEPLINEAR_H1B(Mat,Vec,Vec);
71: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_H1A(Mat,Vec);
72: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_H1B(Mat,Vec);
73: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_H1A(MPI_Comm,QEP_LINEAR*,Mat*);
74: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_H1B(MPI_Comm,QEP_LINEAR*,Mat*);
76: /* H2 */
77: EXTERN PetscErrorCode MatMult_QEPLINEAR_H2A(Mat,Vec,Vec);
78: EXTERN PetscErrorCode MatMult_QEPLINEAR_H2B(Mat,Vec,Vec);
79: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_H2A(Mat,Vec);
80: EXTERN PetscErrorCode MatGetDiagonal_QEPLINEAR_H2B(Mat,Vec);
81: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_H2A(MPI_Comm,QEP_LINEAR*,Mat*);
82: EXTERN PetscErrorCode MatCreateExplicit_QEPLINEAR_H2B(MPI_Comm,QEP_LINEAR*,Mat*);