Key Data Structures
int p; /* Total number of processes */
MPI_Comm comm; /* Communicator for entire grid */
MPI_Comm row_comm; /* Communicator for my row */
MPI_Comm col_comm; /* Communicator for my col */
int q; /* Order of grid */
int my_row; /* My row number */
int my_col; /* My column number */
int my_rank; /* My rank in the grid comm */
#define Order(A) ((A)->n_bar)
#define Entry(A,i,j) (*(((A)->entries) + ((A)->n_bar)*(i) + (j)))