explicit_mapmaking
 All Classes Files Pages
grid.hpp
Go to the documentation of this file.
1 
8 #ifndef EXPLICIT_MAPMAKING_GRID_HPP_
9 #define EXPLICIT_MAPMAKING_GRID_HPP_
10 
11 #include <mpi.h>
12 #include <vector>
13 #include <utility>
14 
15 namespace mapmaking {
16 class Grid {
17  public:
18  Grid(const MPI_Comm comm);
19  Grid(int n_row, int n_col, std::vector<int> id_proc_involved, const MPI_Comm comm);
20  ~Grid();
21 
22  int context() const { return context_; } // BLACS context identifying the created process grid
23  int my_row() const { return my_row_; } // Negative means not in the grid
24  int my_col() const { return my_col_; }
25  std::pair<int,int> my_coor() const { return std::pair<int,int>(my_row_, my_col_); }
26  int my_rank() const { return my_rank_; }
27  int n_row() const { return n_row_; }
28  int n_col() const { return n_col_; }
29  int n_proc_grid() const { return n_proc_grid_; }
30  int n_proc_comm() const { return n_proc_comm_; }
31  const MPI_Comm& comm() const { return comm_; }
32  bool i_am_in() const { return i_am_in_; }
33  const std::vector<int>& row_indexes() const { return row_indexes_; } // {0, 1, ..., n_col} TODO remove
34  const std::vector<int>& col_indexes() const { return col_indexes_; }
35  const std::vector<std::pair<int,int>>& coordinates() const { return coordinates_; } // {(0,0), (0,1), ..., (n_row_-1, n_col_-1)} TODO remove
36  std::pair<int,int> rank2coor(int rank) const;
37  int coor2rank(std::pair<int,int> coor) const;
38 
39  private:
40  int bhandle_ = 0;
41  int context_ = 0;
42  int my_row_ = -1;
43  int my_col_ = -1;
44  int my_rank_ = -1;
45  int n_row_ = -1;
46  int n_col_ = -1;
47  int n_proc_grid_ = 0;
48  int n_proc_comm_ = 0;
49  const MPI_Comm comm_;
50  bool i_am_in_ = false; // The processor is in the grid
51  std::vector<int> row_indexes_;
52  std::vector<int> col_indexes_;
53  std::vector<int> rank_procs;
54  std::vector<std::pair<int,int>> coordinates_;
55 };
56 }
57 
58 #endif // EXPLICIT_MAPMAKING_GRID_HPP_
Definition: grid.hpp:16
Definition: atfa.hpp:18