Actual source code: matis.h
petsc-3.14.6 2021-03-30
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