Package mpi

# Class CartComm

java.lang.Object
mpi.Comm
mpi.Intracomm
mpi.CartComm

All Implemented Interfaces:
  `Cloneable`, `Freeable`

public final class CartComm extends Intracomm
Communicator with cartesian structure.

## Field Summary

### Fields inherited from class mpi.Comm

`handle, SELF, TYPE_SHARED, WORLD`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`CartComm(long handle)`
`protected`
`CartComm(long[] commRequest)`

## Method Summary

Modifier and Type
Method
Description
`CartComm`
`clone()`
Duplicates this communicator.
`static void`
`createDims(int nnodes, int[] dims)`
Select a balanced distribution of processes per coordinate direction.
`CartComm`
`dup()`
Duplicates this communicator.
`CartComm`
`dupWithInfo(Info info)`
Duplicates this communicator with the info object used in the call.
`int[]`
`getCoords(int rank)`
Translate process rank to logical process coordinates.
`int`
`getRank(int[] coords)`
Translate logical process coordinates to process rank.
`CartParms`
`getTopo()`
Returns cartesian topology information.
`CartComm`
`iDup()`
Duplicates this communicator.
`int`
`map(int[] dims, boolean[] periods)`
Compute an optimal placement.
`ShiftParms`
`shift(int direction, int disp)`
Compute source and destination ranks for "shift" communication.
`CartComm`
`sub(boolean[] remainDims)`
Partition cartesian communicator into subgroups of lower dimension.

### Methods inherited from class mpi.Intracomm

`accept, accept, closePort, connect, connect, create, createCart, createDistGraph, createDistGraph, createDistGraphAdjacent, createDistGraphAdjacent, createGraph, createGroup, exScan, exScan, iExScan, iExScan, iScan, iScan, lookupName, lookupName, openPort, openPort, publishName, publishName, scan, scan, spawn, spawnMultiple, split, splitType, unpublishName, unpublishName`

### Methods inherited from class mpi.Comm

`abort, allGather, allGather, allGatherv, allGatherv, allReduce, allReduce, allToAll, allToAllv, allToAllw, barrier, bcast, bSend, bSendInit, callErrhandler, compare, createIntercomm, createKeyval, deleteAttr, disconnect, dup, dupWithInfo, free, freeKeyval, gather, gather, gatherv, gatherv, gatherv, getAttr, getErrhandler, getGroup, getInfo, getName, getRank, getRequest, getSize, getTopology, iAllGather, iAllGather, iAllGatherv, iAllGatherv, iAllReduce, iAllReduce, iAllToAll, iAllToAllv, iAllToAllw, iBarrier, iBcast, ibSend, iDup, iGather, iGather, iGatherv, iGatherv, iGatherv, iNeighborAllGather, iNeighborAllGatherv, iNeighborAllToAll, iNeighborAllToAllv, iProbe, iRecv, iReduce, iReduce, iReduceScatter, iReduceScatter, iReduceScatterBlock, iReduceScatterBlock, irSend, iScatter, iScatter, iScatterv, iScatterv, iScatterv, iSend, isInter, isNull, isSend, neighborAllGather, neighborAllGatherv, neighborAllToAll, neighborAllToAllv, pack, packSize, probe, recv, recvInit, reduce, reduce, reduceLocal, reduceScatter, reduceScatter, reduceScatterBlock, reduceScatterBlock, rSend, rSendInit, scatter, scatter, scatterv, scatterv, scatterv, send, sendInit, sendRecv, sendRecvReplace, setAttr, setErrhandler, setInfo, setName, setType, sSend, sSendInit, unpack`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### CartComm

protected CartComm(long handle) throws MPIException

Throws:
  `MPIException`

### CartComm

protected CartComm(long[] commRequest)

## Method Details

### clone

public CartComm clone()
Duplicates this communicator.

Java binding of `MPI_COMM_DUP`.

It is recommended to use `dup()` instead of `clone()` because the last can't throw an `MPIException`.

Overrides:
  `clone` in class `Intracomm`
Returns:
  copy of this communicator

### dup

public CartComm dup() throws MPIException
Duplicates this communicator.

Java binding of `MPI_COMM_DUP`.

Overrides:
  `dup` in class `Intracomm`
Returns:
  copy of this communicator
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### iDup

public CartComm iDup() throws MPIException
Duplicates this communicator.

Java binding of `MPI_COMM_IDUP`.

The new communicator can't be used before the operation completes. The request object must be obtained calling `Comm.getRequest()`.

Overrides:
  `iDup` in class `Intracomm`
Returns:
  copy of this communicator
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred. Signals that an MPI exception of some sort has occurred.

### dupWithInfo

public CartComm dupWithInfo(Info info) throws MPIException
Duplicates this communicator with the info object used in the call.

Java binding of `MPI_COMM_DUP_WITH_INFO`.

Overrides:
  `dupWithInfo` in class `Intracomm`
Parameters:
  `info` - info object to associate with the new communicator
Returns:
  copy of this communicator
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### getTopo

public CartParms getTopo() throws MPIException
Returns cartesian topology information.

Java binding of the MPI operations `MPI_CARTDIM_GET` and `MPI_CART_GET`.

The number of dimensions can be obtained from the size of (eg) `dims` field of the returned object.

Returns:
  object containing dimensions, periods and local coordinates
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### getRank

public int getRank(int[] coords) throws MPIException
Translate logical process coordinates to process rank.

Java binding of the MPI operation `MPI_CART_RANK`.

Parameters:
  `coords` - Cartesian coordinates of a process
Returns:
  rank of the specified process
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### getCoords

public int[] getCoords(int rank) throws MPIException
Translate process rank to logical process coordinates.

Java binding of the MPI operation `MPI_CART_COORDS`.

Parameters:
  `rank` - rank of a process
Returns:
  Cartesian coordinates of the specified process
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### shift

public ShiftParms shift(int direction, int disp) throws MPIException
Compute source and destination ranks for "shift" communication.

Java binding of the MPI operation `MPI_CART_SHIFT`.

Parameters:
  `direction` - coordinate dimension of shift
  `disp` - displacement
Returns:
  object containing ranks of source and destination processes
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### sub

public CartComm sub(boolean[] remainDims) throws MPIException
Partition cartesian communicator into subgroups of lower dimension.

Java binding of the MPI operation `MPI_CART_SUB`.

Parameters:
  `remainDims` - by dimension, `true` if dimension is to be kept, `false` otherwise
Returns:
  communicator containing subgrid including this process
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### map

public int map(int[] dims, boolean[] periods) throws MPIException
Compute an optimal placement.

Java binding of the MPI operation `MPI_CART_MAP`.

The number of dimensions is taken to be size of the `dims` argument.

Parameters:
  `dims` - the number of processes in each dimension
  `periods` - `true` if grid is periodic, `false` if not, in each dimension
Returns:
  reordered rank of calling process
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.

### createDims

public static void createDims(int nnodes, int[] dims) throws MPIException
Select a balanced distribution of processes per coordinate direction.

Java binding of the MPI operation `MPI_DIMS_CREATE`.

Parameters:
  `nnodes` - number of nodes in a grid
  `dims` - array specifying the number of nodes in each dimension
Throws:
  `MPIException` - Signals that an MPI error of some sort has occurred.