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