xref: /petsc/src/mat/impls/dense/mpi/mpidense.h (revision 5d0c19d75c660d4fec594a5399ec8d8ba29c54a8)
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   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 */
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   PetscTruth    roworiented;            /* if true, row oriented input (default) */
25 } Mat_MPIDense;
26 
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 
36 #if defined(PETSC_HAVE_PLAPACK)
37 EXTERN_C_BEGIN
38 #include "PLA.h"
39 EXTERN_C_END
40 
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   /* following parameters might not be useful in new-solvers */
50   MPI_Comm       comm_2d;
51   MatStructure   mstruct;
52   PetscMPIInt    nprows,npcols;
53   PetscInt       nb_alg,ierror;
54   PetscTruth     CleanUpPlapack;
55 
56   PetscMPIInt    Plapack_nprows,Plapack_npcols,Plapack_ierror,Plapack_nb_alg;
57   MPI_Comm Plapack_comm_2d;
58 } Mat_Plapack;
59 
60 
61 #endif
62