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