Actual source code: mpidense.h
petsc-3.6.1 2015-08-06
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: PetscBool 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 */
20: Vec lvec; /* local vector */
21: VecScatter Mvctx; /* scatter context for vector */
22: PetscBool roworiented; /* if true, row oriented input (default) */
24: Mat_MatTransMatMult *atb; /* used by MatTransposeMatMult_MPIAIJ_MPIDense */
25: } Mat_MPIDense;
27: PETSC_INTERN PetscErrorCode MatLoad_MPIDense(Mat,PetscViewer);
28: PETSC_INTERN PetscErrorCode MatSetUpMultiply_MPIDense(Mat);
29: PETSC_INTERN PetscErrorCode MatGetSubMatrices_MPIDense(Mat,PetscInt,const IS[],const IS[],MatReuse,Mat *[]);
30: PETSC_INTERN PetscErrorCode MatEqual_MPIDense(Mat,Mat,PetscBool*);
31: PETSC_INTERN PetscErrorCode MatMatMultSymbolic_MPIDense_MPIDense(Mat,Mat,PetscReal,Mat*);
32: PETSC_INTERN PetscErrorCode MatMatMult_MPIAIJ_MPIDense(Mat,Mat,MatReuse,PetscReal,Mat*);
33: PETSC_INTERN PetscErrorCode MatMatMultSymbolic_MPIAIJ_MPIDense(Mat,Mat,PetscReal,Mat*);
34: PETSC_INTERN PetscErrorCode MatMatMultNumeric_MPIAIJ_MPIDense(Mat,Mat,Mat);