


| MPI_CART_SUB(comm, remain_dims, newcomm) | |
| IN comm | communicator with Cartesian structure (handle) | 
| IN remain_dims | the  i-th entry of  remain_dims specifies whether the i-th dimension is kept in the subgrid ( true) or is dropped ( false) (logical vector) | 
| OUT newcomm | communicator containing the subgrid that includes the calling process (handle) | 
 
  int MPI_Cart_sub(MPI_Comm comm, int *remain_dims, MPI_Comm *newcomm) 
  
 
  MPI_CART_SUB(COMM, REMAIN_DIMS, NEWCOMM, IERROR)
 INTEGER COMM, NEWCOMM, IERROR 
LOGICAL REMAIN_DIMS(*) 
  
  MPI::Cartcomm MPI::Cartcomm::Sub(const bool remain_dims[]) const 
  
  
If a Cartesian topology has been created with  MPI_CART_CREATE, the  
function 
 MPI_CART_SUB can be used to partition the  
communicator group into subgroups that form lower-dimensional Cartesian  
subgrids, and to build for each subgroup a communicator with the associated  
subgrid Cartesian topology.    
If all entries in  remain_dims are false or  comm is already associated  
with a zero-dimensional Cartesian topology then  newcomm is associated  
with a zero-dimensional Cartesian topology.   
(This function is closely related to  
 MPI_COMM_SPLIT.)  
 
 Example   
  
  
 
Assume that  MPI_CART_CREATE(..., comm) has defined a  
(2 × 3 × 4) grid. Let  remain_dims = (true, false, true).  
Then a call to,  
 
MPI_CART_SUB(comm, remain_dims, comm_new),will create three communicators each with eight processes in a 2 × 4 Cartesian topology. If remain_dims = (false, false, true) then the call to MPI_CART_SUB(comm, remain_dims, comm_new) will create six non-overlapping communicators, each with four processes, in a one-dimensional Cartesian topology.


