1a7e14dcfSSatish Balay 2a7e14dcfSSatish Balay typedef struct{ 3a7e14dcfSSatish Balay 4a7e14dcfSSatish Balay Mat A; 5a7e14dcfSSatish Balay Vec VC; /* Work vector in the column space */ 6a7e14dcfSSatish Balay Vec VR; /* Work vector in the row space */ 7a7e14dcfSSatish Balay IS Rows, Cols; 8a7e14dcfSSatish Balay 9a7e14dcfSSatish Balay } _p_MatSubMatFreeCtx; 10a7e14dcfSSatish Balay 11a7e14dcfSSatish Balay typedef _p_MatSubMatFreeCtx* MatSubMatFreeCtx; 12a7e14dcfSSatish Balay 13a7e14dcfSSatish Balay PetscErrorCode MatCreateSubMatrixFree(Mat,IS,IS,Mat*); 14a7e14dcfSSatish Balay PetscErrorCode MatSMFResetRowColumn(Mat,IS,IS); 15a7e14dcfSSatish Balay PetscErrorCode MatMult_SMF(Mat,Vec,Vec); 16a7e14dcfSSatish Balay PetscErrorCode MatMultTranspose_SMF(Mat,Vec,Vec); 17a7e14dcfSSatish Balay PetscErrorCode MatDiagonalSet_SMF(Mat,Vec,InsertMode); 18a7e14dcfSSatish Balay PetscErrorCode MatDestroy_SMF(Mat); 19a7e14dcfSSatish Balay PetscErrorCode MatView_SMF(Mat,PetscViewer); 20a7e14dcfSSatish Balay PetscErrorCode MatShift_SMF(Mat,PetscReal); 21a7e14dcfSSatish Balay PetscErrorCode MatDuplicate_SMF(Mat,MatDuplicateOption,Mat*); 22a7e14dcfSSatish Balay PetscErrorCode MatEqual_SMF(Mat,Mat,PetscBool*); 23a7e14dcfSSatish Balay PetscErrorCode MatScale_SMF(Mat,PetscReal); 24*7dae84e0SHong Zhang PetscErrorCode MatCreateSubMatrix_SMF(Mat,IS,IS,MatReuse,Mat *); 25*7dae84e0SHong Zhang PetscErrorCode MatCreateSubMatrices_SMF(Mat,PetscInt,IS*,IS*,MatReuse,Mat**); 26a7e14dcfSSatish Balay PetscErrorCode MatTranspose_SMF(Mat,Mat*); 27a7e14dcfSSatish Balay PetscErrorCode MatGetDiagonal_SMF(Mat,Vec); 28a7e14dcfSSatish Balay PetscErrorCode MatGetColumnVector_SMF(Mat,Vec, PetscInt); 29a7e14dcfSSatish Balay PetscErrorCode MatNorm_SMF(Mat,NormType,PetscReal *); 30a7e14dcfSSatish Balay PetscErrorCode MatGetRowMax_SMF(Mat, Vec); 31a62a097fSLisandro Dalcin PetscErrorCode MatGetRow_SMF(Mat,PetscInt,PetscInt *,const PetscInt **,const PetscScalar **); 32a62a097fSLisandro Dalcin PetscErrorCode MatRestoreRow_SMF(Mat,PetscInt,PetscInt *,const PetscInt **,const PetscScalar **); 33