Actual source code: matis.h


  4: #include <petscsf.h>
  5: #include <petsc/private/matimpl.h>

  7: typedef struct {
  8:   Mat         A;                           /* the local matrix */
  9:   VecScatter  cctx;                        /* column scatter */
 10:   VecScatter  rctx;                        /* row scatter */
 11:   Vec         x,y;                         /* work space for matrix vector product */
 12:   Vec         counter;                     /* counter vector */
 13:   PetscBool   pure_neumann;
 14:   PetscSF     sf,csf;                      /* SFs for rows and cols */
 15:   PetscInt    *sf_rootdata,*sf_leafdata;
 16:   PetscInt    *csf_rootdata,*csf_leafdata;
 17:   IS          getsub_ris,getsub_cis;       /* row and column ISs for MatCreateSubMatrix and MAT_REUSE_MATRIX */
 18:   PetscBool   islocalref;                  /* is a reference to a local submatrix? */
 19:   PetscBool   locempty;                    /* adapt local matrices for empty rows/cols during MatAssemblyEnd_IS */
 20:   PetscBool   storel2l;                    /* carry over local-to-local inherited in MatPtAP */
 21:   char        *lmattype;
 22:   PetscScalar *bdiag;                      /* Used by MatInvertBlockDiagonal_IS */
 23: } Mat_IS;

 25: struct _MatISLocalFields {
 26:   PetscInt nr,nc;
 27:   IS       *rf,*cf;
 28: };
 29: typedef struct _MatISLocalFields *MatISLocalFields;

 31: struct _MatISPtAP {
 32:   PetscReal fill;
 33:   IS        cis0,cis1,ris0,ris1;
 34:   Mat       *lP;
 35: };
 36: typedef struct _MatISPtAP *MatISPtAP;

 38: PETSC_EXTERN PetscErrorCode MatISSetMPIXAIJPreallocation_Private(Mat,Mat,PetscBool);
 39: #endif