ESyS-Particle  2.2
CheckPointController.h
Go to the documentation of this file.
1 
2 // //
3 // Copyright (c) 2003-2013 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
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,
98  int precision=12
99  );
100 
101  std::string getLatticeDataFileName(const std::string &fileNamePrefix, int timeStep, int rank, bool bin=false);
102 
103  esys::lsm::StringVector getLatticeDataFiles(int timeStep, int size);
104 
106 
111  void set_is2d(bool do2d);
112 
116  void setLsmGeoVersion(float version);
117 
121  void setPeriodicDimensions(esys::lsm::BoolVector periodicDimensions);
122 
126  void setGeometryInfo(const esys::lsm::GeometryInfo &geoInfo);
127 
131  void setSpatialDomain(const esys::lsm::BoundingBox &bBox);
132 
137 
141  int getNumTimeSteps() const;
142 
146  void setNumTimeSteps(int numTimeSteps);
147 
151  double getTimeStepSize() const;
152 
156  void setTimeStepSize(double timeStepSize);
157 
158  void setPrecision(int precision){m_precision=precision;};
159 
160  bool spatialDomainHasBeenSet() const;
161 
162 
163  MPI_Comm getMpiComm() const;
164 
165  void setMpiComm(MPI_Comm mpiComm);
166 
167 
168 protected:
172  MPI_Comm m_mpiComm;
173 
174 
178  std::string m_fileNamePrefix;
179 
184 
189 
194 
199 
204 
209 
211 
218 };
219 
220 #endif