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