xref: /petsc/src/tao/matrix/submatfree.h (revision bebe2cf65d55febe21a5af8db2bd2e168caaa2e7)
1 #include <petsc/private/matimpl.h>
2 #include <petsc/private/vecimpl.h>
3 
4 typedef struct{
5 
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;
10 
11 } _p_MatSubMatFreeCtx;
12 
13 typedef  _p_MatSubMatFreeCtx* MatSubMatFreeCtx;
14 
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 MatGetSubMatrix_SMF(Mat,IS,IS,MatReuse,Mat *);
27 PetscErrorCode MatGetSubMatrices_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 **);
35