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