Actual source code: submatfree.h

  1: #pragma once

  3: #include <petscmat.h>

  5: 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  Rows, Cols;

 11: } _p_MatSubMatFreeCtx;

 13: typedef _p_MatSubMatFreeCtx *MatSubMatFreeCtx;

 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 MatCreateSubMatrix_SMF(Mat, IS, IS, MatReuse, Mat *);
 27: PetscErrorCode MatCreateSubMatrices_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 **);