Actual source code: matis.h
petsc-3.10.5 2019-03-28
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: } Mat_IS;
24: struct _MatISLocalFields {
25: PetscInt nr,nc;
26: IS *rf,*cf;
27: };
28: typedef struct _MatISLocalFields *MatISLocalFields;
30: struct _MatISPtAP {
31: PetscReal fill;
32: IS cis0,cis1,ris0,ris1;
33: Mat *lP;
34: };
35: typedef struct _MatISPtAP *MatISPtAP;
37: PETSC_EXTERN PetscErrorCode MatISSetMPIXAIJPreallocation_Private(Mat,Mat,PetscBool);
38: #endif