Actual source code: mpibdiag.h
1: /* $Id: mpibdiag.h,v 1.19 2001/08/07 03:02:55 balay Exp $ */
3: #include src/mat/impls/bdiag/seq/bdiag.h
5: /*
6: Mat_MPIBDiag - Parallel, block-diagonal format, where each diagonal
7: element consists of a square block of size bs x bs. Dense storage
8: within each block is in column-major order.
10: For now, the parallel part is just a copy of the Mat_MPIAIJ
11: parallel data structure.
12: */
14: typedef struct {
15: int *rowners; /* row range owned by each processor */
16: int rstart,rend; /* starting and ending local rows */
17: int brstart,brend; /* block starting and ending local rows */
18: Mat A; /* local matrix */
19: int gnd; /* number of global diagonals */
20: int *gdiag; /* global matrix diagonal numbers */
21: int size; /* size of communicator */
22: int rank; /* rank of proc in communicator */
24: /* The following variables are used for matrix assembly */
25: PetscTruth donotstash; /* 1 if off processor entries dropped */
26: MPI_Request *send_waits; /* array of send requests */
27: MPI_Request *recv_waits; /* array of receive requests */
28: int nsends,nrecvs; /* numbers of sends and receives */
29: PetscScalar *svalues,*rvalues; /* sending and receiving data */
30: int rmax; /* maximum message length */
31: int *garray; /* work array */
32: PetscTruth roworiented; /* indicates MatSetValues() input default 1*/
34: /* The following variables are used for matrix-vector products */
36: Vec lvec; /* local vector */
37: VecScatter Mvctx; /* scatter context for vector */
38: } Mat_MPIBDiag;