Actual source code: mpidense.h
2: #include ../src/mat/impls/dense/seq/dense.h
4: /* Data stuctures for basic parallel dense matrix */
6: typedef struct {
7: PetscInt nvec; /* this is the n size for the vector one multiplies with */
8: Mat A; /* local submatrix */
9: PetscMPIInt size; /* size of communicator */
10: PetscMPIInt rank; /* rank of proc in communicator */
11: /* The following variables are used for matrix assembly */
12: PetscTruth donotstash; /* Flag indicationg if values should be stashed */
13: MPI_Request *send_waits; /* array of send requests */
14: MPI_Request *recv_waits; /* array of receive requests */
15: PetscInt nsends,nrecvs; /* numbers of sends and receives */
16: PetscScalar *svalues,*rvalues; /* sending and receiving data */
17: PetscInt rmax; /* maximum message length */
19: /* The following variables are used for matrix-vector products */
21: Vec lvec; /* local vector */
22: VecScatter Mvctx; /* scatter context for vector */
24: PetscTruth roworiented; /* if true, row oriented input (default) */
25: } Mat_MPIDense;
27: EXTERN PetscErrorCode MatLoad_MPIDense(PetscViewer, const MatType,Mat*);
28: EXTERN PetscErrorCode MatSetUpMultiply_MPIDense(Mat);
29: EXTERN PetscErrorCode MatGetSubMatrices_MPIDense(Mat,PetscInt,const IS[],const IS[],MatReuse,Mat *[]);
30: EXTERN PetscErrorCode MatEqual_MPIDense(Mat,Mat,PetscTruth*);
31: EXTERN PetscErrorCode MatMatMultSymbolic_MPIDense_MPIDense(Mat,Mat,PetscReal,Mat*);
32: EXTERN PetscErrorCode MatMatMult_MPIAIJ_MPIDense(Mat,Mat,MatReuse,PetscReal,Mat*);
33: EXTERN PetscErrorCode MatMatMultSymbolic_MPIAIJ_MPIDense(Mat,Mat,PetscReal,Mat*);
34: EXTERN PetscErrorCode MatMatMultNumeric_MPIAIJ_MPIDense(Mat,Mat,Mat);
35: EXTERN PetscErrorCode MatGetFactor_mpidense_petsc(Mat,MatFactorType,Mat *);