ESyS-Particle  2.3.4
cart_comm.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __CARTCOMM_H
14 #define __CARTCOMM_H
15 
16 //--- MPI ---
17 #include <mpi.h>
18 
19 //--- project includes ---
20 #include "tml/comm/comm.h"
21 
22 //--- STL ---
23 #include <vector>
24 using std::vector;
33 class TML_CartComm : public TML_Comm
34 {
35 private:
36  int m_ndims;
37  vector<int> m_dims;
38 
39  public:
40  // constructor
41  TML_CartComm(TML_Comm *comm, vector<unsigned int> dims, vector<bool> circular);
42  TML_CartComm(TML_Comm *comm, unsigned int ndims, const vector<int> &dims, const vector<bool> &circular);
43  TML_CartComm(TML_Comm*,unsigned int,int*,int*);
44 
45  vector<int> get_coords(int);
46  vector<int> get_coords() const;
47  vector<int> get_all_dims() const;
48  int get_dim(int);
49  int get_ndim() const {return m_ndims;};
50 
52  template <typename T,typename P> void shift(T,P&,int,int,int=0);
53  template <typename T,typename P> void shift_array(T*,int,P*,int,int,int,int=0);
54  template <typename T,typename P> void shift_cont(T,P&,int,int,int=0);
55 
57  template <typename T,typename P> void shift_packed(T,P&,int,int,int=0);
58  template <typename T,typename P> void shift_array_packed(T*,int,P*,int,int,int,int=0);
59  template <typename T,typename P> void shift_cont_packed(T,P&,int,int,int=0);
60  // shift_replace ops?
61 };
62 
63 #include "tml/comm/cart_comm.hpp"
64 
65 #endif // __CARTCOMM_H
TML_CartComm::m_ndims
int m_ndims
Definition: cart_comm.h:36
TML_CartComm::shift
void shift(T, P &, int, int, int=0)
shift ops
Definition: cart_comm.hpp:23
TML_CartComm::TML_CartComm
TML_CartComm(TML_Comm *comm, vector< unsigned int > dims, vector< bool > circular)
Definition: cart_comm.cpp:30
TML_CartComm::shift_cont_packed
void shift_cont_packed(T, P &, int, int, int=0)
Definition: cart_comm.hpp:129
TML_CartComm::get_all_dims
vector< int > get_all_dims() const
get size of communicator in all directions
Definition: cart_comm.cpp:189
TML_CartComm::get_coords
vector< int > get_coords() const
get own coords
Definition: cart_comm.cpp:174
esys::lsm::bpu::len
int len(const boost::python::object &pyOb)
Definition: Util.h:30
TML_CartComm::get_ndim
int get_ndim() const
Definition: cart_comm.h:49
esys::lsm::setPathEnv
void setPathEnv(int argc, char *argv[])
Definition: PathUtil.cpp:27
TML_CartComm::m_dims
vector< int > m_dims
Definition: cart_comm.h:37
Console::Debug
Console & Debug()
set verbose level of next message to "dbg"
cart_comm.hpp
console.h
boost
Definition: BondInteractionGroupPy.h:20
TML_CartComm::shift_array
void shift_array(T *, int, P *, int, int, int, int=0)
Definition: cart_comm.hpp:45
TML_CartComm::shift_cont
void shift_cont(T, P &, int, int, int=0)
Definition: cart_comm.hpp:66
CSubLatticeControler
class for control of a SubLattice
Definition: SubLatticeControler.h:42
TML_Comm::rank
int rank() const
Definition: comm.cpp:56
cart_comm.h
TML_CartComm
class for a cartesian communicator
Definition: cart_comm.h:34
comm.h
TML_Comm::m_comm
MPI_Comm m_comm
Definition: comm.h:50
main
int main(int argc, char **argv)
Definition: MpiPythonMain.cpp:35
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
TML_CartComm::shift_array_packed
void shift_array_packed(T *, int, P *, int, int, int, int=0)
Definition: cart_comm.hpp:108
TML_Comm::comm
MPI_Comm comm() const
Definition: comm.h:56
TML_Comm
abstract base class for communicator
Definition: comm.h:47
TML_CartComm::get_dim
int get_dim(int)
get size of communicator in one direction
Definition: cart_comm.cpp:205
CSubLatticeControler::run
void run()
Definition: SubLatticeControler.cpp:510
CSubLatticeControler::initMPI
void initMPI()
Definition: SubLatticeControler.cpp:83
TML_CartComm::shift_packed
void shift_packed(T, P &, int, int, int=0)
packed shift ops
Definition: cart_comm.hpp:86
SubLatticeControler.h
console
Console console
Definition: console.cpp:25
PathUtil.h
TML_Comm::size
int size()
Definition: comm.cpp:69