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