xref: /petsc/src/mat/impls/dense/mpi/mpidense.h (revision 2205254efee3a00a594e5e2a3a70f74dcb40bc03)
1 
2 #include <../src/mat/impls/dense/seq/dense.h>
3 
4 /*  Data stuctures for basic parallel dense matrix  */
5 
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 */
18 
19   /* The following variables are used for matrix-vector products */
20 
21   Vec        lvec;                      /* local vector */
22   VecScatter Mvctx;                     /* scatter context for vector */
23 
24   PetscBool roworiented;                /* if true, row oriented input (default) */
25 } Mat_MPIDense;
26 
27 extern PetscErrorCode MatLoad_MPIDense(Mat,PetscViewer);
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,PetscBool*);
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*);
36 
37 
38