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);
36: #if defined(PETSC_HAVE_PLAPACK)
38: #include "PLA.h"
41: typedef struct {
42: PLA_Obj A,pivots;
43: PLA_Template templ;
44: MPI_Datatype datatype;
45: PetscInt nb,rstart;
46: VecScatter ctx;
47: IS is_pla,is_petsc;
48: PetscTruth pla_solved;
49: MatStructure mstruct;
50: } Mat_Plapack;
51: #endif