1 /* $Id: mpiaij.h,v 1.10 1995/06/07 17:31:43 bsmith Exp curfman $ */ 2 3 #include "dense.h" 4 5 /* for now this is just a copy of Mat_MPIAIJ */ 6 7 typedef struct { 8 int *rowners, *cowners; /* ranges owned by each processor */ 9 int m, n; /* local rows and columns */ 10 int M, N; /* global rows and columns */ 11 int rstart, rend; /* starting and ending owned rows */ 12 int cstart, cend; /* starting and ending owned columns */ 13 Mat A, B; /* local submatrices: A (diag part), 14 B (off-diag part) */ 15 int size; /* size of communicator */ 16 int rank; /* rank of proc in communicator */ 17 18 /* The following variables are used for matrix assembly */ 19 20 int assembled; /* MatAssemble has been called */ 21 InsertMode insertmode; /* mode for MatSetValues */ 22 Stash stash; /* stash for non-local elements */ 23 MPI_Request *send_waits; /* array of send requests */ 24 MPI_Request *recv_waits; /* array of receive requests */ 25 int nsends, nrecvs; /* numbers of sends and receives */ 26 Scalar *svalues, *rvalues; /* sending and receiving data */ 27 int rmax; /* maximum message length */ 28 int *colmap; /* local col number of off-diag col */ 29 int *garray; /* work array */ 30 31 /* The following variables are used for matrix-vector products */ 32 33 Vec lvec; /* local vector */ 34 VecScatterCtx Mvctx; /* scatter context for vector */ 35 } Mat_MPIDense; 36