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