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