- private:
- int nnodes_ = 0;
- int ndims_;
- int *dims_;
- int *periodic_;
- int *position_;
- public:
- explicit Topo_Cart(int ndims);
- ~Topo_Cart();
- Topo_Cart(MPI_Comm comm_old, int ndims, int dims[], int periods[], int reorder, MPI_Comm *comm_cart);
- Topo_Cart* sub(const int remain_dims[], MPI_Comm *newcomm) ;
- int coords(int rank, int maxdims, int coords[]) ;
- int get(int maxdims, int* dims, int* periods, int* coords);
- int rank(int* coords, int* rank);
- int shift(int direction, int disp, int *rank_source, int *rank_dest) ;
- int dim_get(int *ndims);
- static int Dims_create(int nnodes, int ndims, int dims[]);
+ int nnodes_ = 0;
+ int ndims_;
+ std::vector<int> dims_;
+ std::vector<int> periodic_;
+ std::vector<int> position_;
+
+public:
+ explicit Topo_Cart(int ndims);
+ Topo_Cart(MPI_Comm comm_old, int ndims, const int dims[], const int periods[], int reorder, MPI_Comm* comm_cart);
+ Topo_Cart* sub(const int remain_dims[], MPI_Comm* newcomm);
+ int coords(int rank, int maxdims, int coords[]);
+ int get(int maxdims, int* dims, int* periods, int* coords);
+ int rank(const int* coords, int* rank);
+ int shift(int direction, int disp, int* rank_source, int* rank_dest);
+ int dim_get(int* ndims);
+ static int Dims_create(int nnodes, int ndims, int dims[]);