ESyS-Particle  2.3
SubLatticeControler.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 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.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 #ifndef __SUBLATTICECONTROLER_H
14 #define __SUBLATTICECONTROLER_H
15 
16 //--- MPI ---
17 #include <mpi.h>
18 
19 //--- TML includes ---
20 #include "tml/comm/comm.h"
21 #include "tml/comm/comm_world.h"
22 
23 #include "Parallel/SubLattice.h"
25 #include "Foundation/Timer.h"
26 
27 #include <boost/shared_ptr.hpp>
28 
29 class CheckPointer;
30 
42 {
43  private:
48 
49  MPI_Comm m_global_comm; // global MPI communicator
50  MPI_Comm m_local_comm; // MPI communicator of the spawned workers
51  MPI_Group m_global_group, m_local_group; // MPI groups
52 
55 
57  CheckPointer* m_pCheckPointer; // for restatable checkpoints
58  CheckPointer* m_pSnapShooter; // for visualization dumps
59  std::string m_timingFileName;
60  typedef boost::shared_ptr<MpiWTimers> MpiWTimersPtr;
61  MpiWTimersPtr m_timersPtr;
62 
63  public:
66 
67  void initMPI();
68  void makeLattice();
69  void initLattice();
70  void initLatticeCirc();
71  void init2DTriangularLocal();
72  void init3DTriangularLocal();
73  void searchNeighbors();
74  void performTiming();
75  void saveTimingData();
76  void getIdParticleData();
77  void setTimeStepSize();
78  void setTimingFileName(const std::string &timingFileName) {m_timingFileName=timingFileName;}
79  const std::string &getTimingFileName() const {return m_timingFileName;}
80  void do2dCalculations();
81  void getNumParticles();
83  void getParticlePosn();
84  void moveSingleParticle();
85 // void getBondGroupIdPairs();
86  void translateMeshBy();
87  void run();
88 
89  void setVerbosity();
90 
91  virtual void saveCheckPointData(std::ostream &oStream);
92  virtual void saveSnapShotData(std::ostream &oStream);
93 
94  virtual void loadCheckPointData(std::istream &iStream);
95 
96 };
97 
98 #endif //__SUBLATTICECONTROLER_H
CheckPointer * m_pSnapShooter
Definition: SubLatticeControler.h:58
void getParticlePosn()
Definition: SubLatticeControler.cpp:378
~CSubLatticeControler()
Definition: SubLatticeControler.cpp:55
void findParticleNearestToPoint()
Definition: SubLatticeControler.cpp:356
void setTimingFileName(const std::string &timingFileName)
Definition: SubLatticeControler.h:78
int m_global_size
Definition: SubLatticeControler.h:45
std::string m_timingFileName
Definition: SubLatticeControler.h:59
const std::string & getTimingFileName() const
Definition: SubLatticeControler.h:79
void getNumParticles()
Definition: SubLatticeControler.cpp:349
void initLattice()
Definition: SubLatticeControler.cpp:184
void saveTimingData()
Definition: SubLatticeControler.cpp:308
ASubLattice * m_lattice
Definition: SubLatticeControler.h:56
void performTiming()
Definition: SubLatticeControler.cpp:296
TML_Comm m_tml_global_comm
Definition: SubLatticeControler.h:53
void setTimeStepSize()
Definition: SubLatticeControler.cpp:218
MPI_Comm m_global_comm
Definition: SubLatticeControler.h:49
void searchNeighbors()
Definition: SubLatticeControler.cpp:316
MPI_Comm m_local_comm
Definition: SubLatticeControler.h:50
void getIdParticleData()
Definition: SubLatticeControler.cpp:399
void translateMeshBy()
Definition: SubLatticeControler.cpp:440
void run()
Definition: SubLatticeControler.cpp:479
void initMPI()
Definition: SubLatticeControler.cpp:83
virtual void saveSnapShotData(std::ostream &oStream)
Definition: SubLatticeControler.cpp:166
CheckPointer * m_pCheckPointer
Definition: SubLatticeControler.h:57
void initLatticeCirc()
Definition: SubLatticeControler.cpp:248
int m_local_rank
Definition: SubLatticeControler.h:46
abstract base class for communicator
Definition: comm.h:46
void do2dCalculations()
Definition: SubLatticeControler.cpp:322
void setVerbosity()
Definition: SubLatticeControler.cpp:463
int m_local_size
Definition: SubLatticeControler.h:47
Definition: CheckPointer.h:38
Definition: CheckPointable.h:26
boost::shared_ptr< MpiWTimers > MpiWTimersPtr
Definition: SubLatticeControler.h:60
TML_Comm m_tml_local_comm
Definition: SubLatticeControler.h:54
Abstract base class for sublattices.
Definition: ASubLattice.h:36
virtual void saveCheckPointData(std::ostream &oStream)
Definition: SubLatticeControler.cpp:159
int m_global_rank
Definition: SubLatticeControler.h:44
CSubLatticeControler()
Definition: SubLatticeControler.cpp:32
virtual void loadCheckPointData(std::istream &iStream)
Definition: SubLatticeControler.cpp:173
void makeLattice()
Definition: SubLatticeControler.cpp:121
void moveSingleParticle()
Definition: SubLatticeControler.cpp:417
MPI_Group m_global_group
Definition: SubLatticeControler.h:51
MpiWTimersPtr m_timersPtr
Definition: SubLatticeControler.h:61
class for control of a SubLattice
Definition: SubLatticeControler.h:41
MPI_Group m_local_group
Definition: SubLatticeControler.h:51