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