18a729477SBarry Smith 2*180e1086SBarry Smith #include "aij.h" 3*180e1086SBarry Smith #include <math.h> 48a729477SBarry Smith 5*180e1086SBarry Smith typedef struct {int nmax, n, *idx, *idy; Scalar *array;} Stash; 68a729477SBarry Smith 78a729477SBarry Smith typedef struct { 8*180e1086SBarry Smith int *rowners,*cowners; /* ranges owned by each processor */ 9*180e1086SBarry Smith int m,n,M,N; /* local rows, cols, global rows, cols */ 10*180e1086SBarry Smith int rstart,rend,cstart,cend; 11*180e1086SBarry Smith Mat A,B; 12*180e1086SBarry Smith int numtids,mytid; 13*180e1086SBarry Smith /* Used in Matrix assembly */ 14*180e1086SBarry Smith int assembled; /* MatAssemble has been called */ 15*180e1086SBarry Smith InsertMode insertmode; 16*180e1086SBarry Smith Stash stash; 17*180e1086SBarry Smith MPI_Request *send_waits,*recv_waits; 18*180e1086SBarry Smith int nsends,nrecvs; 19*180e1086SBarry Smith Scalar *svalues,*rvalues; 20*180e1086SBarry Smith int rmax; 21*180e1086SBarry Smith int *colmap; /* indicates local col number of off proc column*/ 22*180e1086SBarry Smith int *garray; 23*180e1086SBarry Smith /* Used in Matrix-vector product */ 24*180e1086SBarry Smith Vec lvec; 25*180e1086SBarry Smith VecScatterCtx Mvctx; 26*180e1086SBarry Smith } Mat_MPIAIJ; 278a729477SBarry Smith 288a729477SBarry Smith 29