ESyS-Particle  4.0.1
SubLatticeControler.h
1 
2 // //
3 // Copyright (c) 2003-2011 by The University of Queensland //
4 // Earth Systems Science Computational Centre (ESSCC) //
5 // http://www.uq.edu.au/esscc //
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"
24 #include "Parallel/CheckPointable.h"
25 #include "Foundation/Timer.h"
26 
27 #include <boost/shared_ptr.hpp>
28 
29 class CheckPointer;
30 
42 {
43  private:
44  int m_global_rank;
45  int m_global_size;
46  int m_local_rank;
47  int m_local_size;
48 
49  MPI_Comm m_global_comm; // global MPI communicator
50  MPI_Comm m_local_comm; // MPI communicator of the spawned workers
51  TML_Comm m_tml_global_comm;
52  TML_Comm m_tml_local_comm;
53 
54  ASubLattice* m_lattice;
55  CheckPointer* m_pCheckPointer; // for restatable checkpoints
56  CheckPointer* m_pSnapShooter; // for visualization dumps
57  std::string m_timingFileName;
58  typedef boost::shared_ptr<MpiWTimers> MpiWTimersPtr;
59  MpiWTimersPtr m_timersPtr;
60 
61  public:
64 
65  void initMPI();
66  void makeLattice();
67  void initLattice();
68  void initLatticeCirc();
69  void init2DTriangularLocal();
70  void init3DTriangularLocal();
71  void searchNeighbors();
72  void performTiming();
73  void saveTimingData();
74  void getIdParticleData();
75  void setTimeStepSize();
76  void setTimingFileName(const std::string &timingFileName) {m_timingFileName=timingFileName;}
77  const std::string &getTimingFileName() const {return m_timingFileName;}
78  void do2dCalculations();
79  void getNumParticles();
80  void findParticleNearestToPoint();
81  void getParticlePosn();
82  void moveSingleParticle();
83 // void getBondGroupIdPairs();
84  void translateMeshBy();
85  void run();
86 
87  void setVerbosity();
88 
89  virtual void saveCheckPointData(std::ostream &oStream);
90  virtual void saveSnapShotData(std::ostream &oStream);
91 
92  virtual void loadCheckPointData(std::istream &iStream);
93 
94 };
95 
96 #endif //__SUBLATTICECONTROLER_H