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