ESyS-Particle  4.0.1
CheckPointController.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 
14 #ifndef CHECKPOINTCONTROLLER_H
15 #define CHECKPOINTCONTROLLER_H
16 
17 // --- MPI includes ---
18 #include <mpi.h>
19 
20 // --- Project includes ---
21 #include "Geometry/GeometryInfo.h"
22 #include "Foundation/StringUtil.h"
23 #include "Foundation/BoundingBox.h"
24 
25 // --- STL includes ---
26 #include <string>
27 
32 {
33 public:
40 
48  const std::string &fileNamePrefix,
49  int beginTime,
50  int endTime,
51  int timeInterval,
52  bool writeThroughMaster=false
53  );
54 
58  virtual ~CheckPointController();
59 
68  virtual void performCheckPoint(int currentTime);
69  virtual void performSnapShot(int currentTime);
70 
76  virtual void issueCheckPointCmd(int currentTime);
77  virtual void issueCheckPointCmdWTM(int currentTime);
78  virtual void issueSnapShotCmd(int currentTime);
79  virtual void issueCheckPointLoadingCmd(const std::string&);
80 
87  bool isCheckPoint(int time);
88 
93  const std::string &fileNamePrefix,
94  int beginTime,
95  int endTime,
96  int timeInterval,
97  bool writeThroughMaster=false
98  );
99 
100  std::string getLatticeDataFileName(const std::string &fileNamePrefix, int timeStep, int rank);
101 
102  esys::lsm::StringVector getLatticeDataFiles(int timeStep, int size);
103 
104  esys::lsm::StringVector getLatticeDataFiles(int timeStep);
105 
110  void set_is2d(bool do2d);
111 
115  void setLsmGeoVersion(float version);
116 
120  void setPeriodicDimensions(esys::lsm::BoolVector periodicDimensions);
121 
125  void setGeometryInfo(const esys::lsm::GeometryInfo &geoInfo);
126 
130  void setSpatialDomain(const esys::lsm::BoundingBox &bBox);
131 
136 
140  int getNumTimeSteps() const;
141 
145  void setNumTimeSteps(int numTimeSteps);
146 
150  double getTimeStepSize() const;
151 
155  void setTimeStepSize(double timeStepSize);
156 
157  bool spatialDomainHasBeenSet() const;
158 
159 
160  MPI_Comm getMpiComm() const;
161 
162  void setMpiComm(MPI_Comm mpiComm);
163 
164 protected:
168  MPI_Comm m_mpiComm;
169 
170 
174  std::string m_fileNamePrefix;
175 
179  int m_beginTime;
180 
184  int m_endTime;
185 
189  int m_timeInterval;
190 
194  esys::lsm::GeometryInfo m_geoInfo;
195 
199  int m_numTimeSteps;
200 
204  double m_timeStepSize;
205 
206  bool m_spatialDomainHasBeenSet;
207 
213 };
214 
215 #endif