Actual source code: submatfree.h
1: #include "private/matimpl.h"
2: #include "private/vecimpl.h"
4: 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 Row, Col;
10: IS RowComplement, ColComplement;
12: } _p_MatSubMatFreeCtx;
14: typedef _p_MatSubMatFreeCtx* MatSubMatFreeCtx;
16: int MatCreateSubMatrixFree(Mat,IS,IS,Mat*);
17: int MatSMFResetRowColumn(Mat,IS,IS);
18: int MatMult_SMF(Mat,Vec,Vec);
19: int MatMultTranspose_SMF(Mat,Vec,Vec);
20: int MatDiagonalSet_SMF(Mat,Vec,InsertMode);
21: int MatDestroy_SMF(Mat);
22: int MatView_SMF(Mat,PetscViewer);
23: int MatShift_SMF(Mat,PetscScalar);
24: int MatDuplicate_SMF(Mat,MatDuplicateOption,Mat*);
25: int MatEqual_SMF(Mat,Mat,PetscTruth*);
26: int MatScale_SMF(Mat,PetscScalar);
27: int MatGetSubMatrix_SMF(Mat,IS,IS,int,MatReuse,Mat *);
28: int MatGetSubMatrices_SMF(Mat,int,IS*,IS*,MatReuse,Mat**);
29: int MatTranspose_SMF(Mat,Mat*);
30: int MatGetDiagonal_SMF(Mat,Vec);
31: int MatGetColumnVector_SMF(Mat,Vec, int);
32: int MatNorm_SMF(Mat,NormType,PetscReal *);
33: int MatGetRowMax_SMF(Mat, Vec);
34: int MatGetRow_SMF(Mat,int,int *,const int **,const PetscScalar **);
35: int MatRestoreRow_SMF(Mat,int,int *,const int **,const PetscScalar **);