Date: 2022-08-02T03:13:52+00:00

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 */

     24:   /* Support for negative or repeated entries in l2map
     25:      These maps can be different than the ones passed in by the user via
     26:      MatSetLocalToGlobalMapping */
     27:   ISLocalToGlobalMapping rmapping, cmapping;
     28: } Mat_IS;

     30: struct _MatISLocalFields {
     31:   PetscInt nr,nc;
     32:   IS       *rf,*cf;
     33: };
     34: typedef struct _MatISLocalFields *MatISLocalFields;

     36: struct _MatISPtAP {
     37:   PetscReal fill;
     38:   IS        cis0,cis1,ris0,ris1;
     39:   Mat       *lP;
     40: };
     41: typedef struct _MatISPtAP *MatISPtAP;

     43: PETSC_EXTERN PetscErrorCode MatISSetMPIXAIJPreallocation_Private(Mat,Mat,PetscBool);
     44: #endif