xref: /petsc/src/tao/matrix/submatfree.h (revision 3ea99036a5fedea4d39e7e77471d0ab500c249d7)
1 #ifndef SUBMATFREE_H
2 #define SUBMATFREE_H
3 
4 #include <petscmat.h>
5 
6 typedef struct {
7   Mat A;
8   Vec VC; /* Work vector in the column space */
9   Vec VR; /* Work vector in the row space */
10   IS  Rows, Cols;
11 
12 } _p_MatSubMatFreeCtx;
13 
14 typedef _p_MatSubMatFreeCtx *MatSubMatFreeCtx;
15 
16 PetscErrorCode MatCreateSubMatrixFree(Mat, IS, IS, Mat *);
17 PetscErrorCode MatSMFResetRowColumn(Mat, IS, IS);
18 PetscErrorCode MatMult_SMF(Mat, Vec, Vec);
19 PetscErrorCode MatMultTranspose_SMF(Mat, Vec, Vec);
20 PetscErrorCode MatDiagonalSet_SMF(Mat, Vec, InsertMode);
21 PetscErrorCode MatDestroy_SMF(Mat);
22 PetscErrorCode MatView_SMF(Mat, PetscViewer);
23 PetscErrorCode MatShift_SMF(Mat, PetscReal);
24 PetscErrorCode MatDuplicate_SMF(Mat, MatDuplicateOption, Mat *);
25 PetscErrorCode MatEqual_SMF(Mat, Mat, PetscBool *);
26 PetscErrorCode MatScale_SMF(Mat, PetscReal);
27 PetscErrorCode MatCreateSubMatrix_SMF(Mat, IS, IS, MatReuse, Mat *);
28 PetscErrorCode MatCreateSubMatrices_SMF(Mat, PetscInt, IS *, IS *, MatReuse, Mat **);
29 PetscErrorCode MatTranspose_SMF(Mat, Mat *);
30 PetscErrorCode MatGetDiagonal_SMF(Mat, Vec);
31 PetscErrorCode MatGetColumnVector_SMF(Mat, Vec, PetscInt);
32 PetscErrorCode MatNorm_SMF(Mat, NormType, PetscReal *);
33 PetscErrorCode MatGetRowMax_SMF(Mat, Vec);
34 PetscErrorCode MatGetRow_SMF(Mat, PetscInt, PetscInt *, const PetscInt **, const PetscScalar **);
35 PetscErrorCode MatRestoreRow_SMF(Mat, PetscInt, PetscInt *, const PetscInt **, const PetscScalar **);
36 #endif
37