Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
layout.h
Go to the documentation of this file.
1 
14 #ifndef LAYOUT_INCLUDED
15 #define LAYOUT_INCLUDED
16 
17 #include "communicator_mpi.h"
19 
21 
29  public:
30 
31  static int grid_rank(int *rank, const int *gcoord);
32  static int grid_coord(int *gcoord, const int rank);
33  static int grid_dims(int *gdims);
34 
35  static int ipe(const int idir);
36  static int npe(const int idir);
37 
38  static int tag(int rank, int idir, int ipm);
39 
40  static int layout_setup();
41  static int layout_delete();
42 
43  static int m_ndim;
44  static int *m_dims;
45 
46  // logical layout
47  static int *m_grid_dims;
48  static int *m_grid_coord;
49 
50  static int *m_ipe_up;
51  static int *m_ipe_dn;
52 
53  // physical mapping
54  static char m_map_grid[16];
55  static int *m_physical_to_logical;
56 
57  static int physical_map_setup();
58  static int physical_map_delete();
59 
60  // subdimensional-slices
61  static MPI_Comm *m_sub_comm;
62 
63  static int subgrid_setup();
64  static int subgrid_delete();
65 
66  private:
67  Layout() {}
68  Layout(const Layout&) {}
69  Layout& operator=(const Layout&);
70 };
71 
72 /*
73  struct LogicalLayout {
74  int ndim;
75  int *dims; // global lattice size
76 
77  int *grid_dims; // number of division along axis
78  int *grid_coord; // logical grid coord
79 
80  int *ipe_up; // rank of upward neighbour along ith axis
81  int *ipe_dn; // rank of downward neighbour along ith axis
82 
83  MPI_Comm *sub_comm; // communicator of reduced dimensions
84  };
85 
86  static LogicalLayout m_layout;
87 
88  static int layout_setup ();
89  static int layout_delete ();
90 
91  static int subgrid_setup ();
92  static int subgrid_delete ();
93 
94  static int physical_map_setup ();
95  static int physical_map_delete ();
96 */
97 #endif /* m__COMMUNICATOR_MPI_LAYOUT_H */
static int * m_grid_coord
grid coordinate.
Definition: layout.h:39
static int layout_setup()
layout_setup() – setup logical layout
Definition: layout.cpp:82
static int grid_coord(int *gcoord, const int rank)
static int * m_dims
lattice extent (Lx, Ly, Lz, Lt)
Definition: layout.h:35
static int * m_physical_to_logical
map between physical and logical grid
Definition: layout.h:46
static int m_ndim
number of dimensions.
Definition: layout.h:34
static int subgrid_setup()
Definition: layout.cpp:213
static int subgrid_delete()
Definition: layout.cpp:252
static int grid_rank(int *rank, const int *gcoord)
static int npe(const int idir)
Definition: layout.cpp:57
static int grid_dims(int *gdims)
Definition: layout.cpp:64
Layout class for logical organisation of parallel nodes.
Definition: layout.h:19
Layout()
constructor is hidden as private; no instantiation.
Definition: layout.h:67
static int * m_grid_dims
grid dimensions in directions.
Definition: layout.h:38
static char m_map_grid[16]
Definition: layout.h:45
static int * m_ipe_up
rank of upward neighbour in directions.
Definition: layout.h:41
static int ipe(const int idir)
Definition: layout.cpp:50
static MPI_Comm * m_sub_comm
subgrid
Definition: layout.h:61
static int tag(int rank, int idir, int ipm)
Definition: layout.cpp:75
static int layout_delete()
Definition: layout.cpp:183
static int * m_ipe_dn
rank of downward neighbour in directions.
Definition: layout.h:42
static int physical_map_delete()
Layout & operator=(const Layout &)
static int physical_map_setup()
Layout(const Layout &)
copy constructor is hidden as private; no instantiation.
Definition: layout.h:68