28inline int mpi_cart_coords( MPI_Comm comm,
int rank,
int maxdims,
int coords[])
30 int re = MPI_Cart_coords( comm, rank, maxdims, coords);
31 std::reverse( coords, coords + maxdims);
36 const int periods[],
int reorder, MPI_Comm * comm_cart
39 std::vector<int> rev_dims(ndims), rev_periods(ndims);
40 std::reverse_copy( dims, dims + ndims, rev_dims.begin());
41 std::reverse_copy( periods, periods + ndims, rev_periods.begin());
42 return MPI_Cart_create( comm_old, ndims, &rev_dims[0], &rev_periods[0], reorder, comm_cart);
45inline int mpi_cart_get( MPI_Comm comm,
int maxdims,
int dims[],
int periods[],
int coords[])
47 int re = MPI_Cart_get( comm, maxdims, dims, periods, coords);
48 std::reverse( dims, dims + maxdims);
49 std::reverse( periods, periods + maxdims);
50 std::reverse( coords, coords + maxdims);
54inline int mpi_cart_rank( MPI_Comm comm,
int coords[],
int *rank)
57 MPI_Cartdim_get( comm, &ndims);
58 std::vector<int> rev_coords(ndims);
59 std::reverse_copy( coords, coords + ndims, rev_coords.begin());
60 return MPI_Cart_rank( comm, &rev_coords[0], rank);
63inline int mpi_cart_shift( MPI_Comm comm,
int direction,
int disp,
int *rank_source,
int *rank_dest)
66 MPI_Cartdim_get( comm, &ndims);
68 return MPI_Cart_shift( comm,
direction, disp, rank_source, rank_dest);
71inline int mpi_cart_sub( MPI_Comm comm,
const int remain_dims[], MPI_Comm *comm_new)
74 MPI_Cartdim_get( comm, &ndims);
75 std::vector<int> rev_remains(ndims);
76 std::reverse_copy( remain_dims, remain_dims + ndims, rev_remains.begin());
77 return MPI_Cart_sub( comm, &rev_remains[0], comm_new);
80inline int mpi_cartdim_get( MPI_Comm comm,
int *ndims) {
return MPI_Cartdim_get( comm, ndims);}
direction
Direction of a discrete derivative.
Definition enums.h:97
MPI_Comm mpi_cart_sub(MPI_Comm comm, std::vector< int > remain_dims, bool duplicate=false)
Call and register a call to MPI_Cart_sub with the dg library.
Definition mpi_kron.h:116
MPI_Comm mpi_cart_create(MPI_Comm comm_old, std::vector< int > dims, std::vector< int > periods, bool reorder=false)
Convenience call to MPI_Cart_create preceded by MPI_Dims_create.
Definition mpi_init.h:202
This is the namespace for all functions and classes defined and used by the discontinuous Galerkin li...