Actual source code: submatfree.h

      1: #include "src/mat/matimpl.h"
      2: #include "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 **);