ESyS-Particle
4.0.1
|
00001 00002 // // 00003 // Copyright (c) 2003-2011 by The University of Queensland // 00004 // Earth Systems Science Computational Centre (ESSCC) // 00005 // http://www.uq.edu.au/esscc // 00006 // // 00007 // Primary Business: Brisbane, Queensland, Australia // 00008 // Licensed under the Open Software License version 3.0 // 00009 // http://www.opensource.org/licenses/osl-3.0.php // 00010 // // 00012 00013 00014 #ifndef CHECKPOINTCONTROLLER_H 00015 #define CHECKPOINTCONTROLLER_H 00016 00017 // --- MPI includes --- 00018 #include <mpi.h> 00019 00020 // --- Project includes --- 00021 #include "Geometry/GeometryInfo.h" 00022 #include "Foundation/StringUtil.h" 00023 #include "Foundation/BoundingBox.h" 00024 00025 // --- STL includes --- 00026 #include <string> 00027 00031 class CheckPointController 00032 { 00033 public: 00039 CheckPointController(); 00040 00047 CheckPointController( 00048 const std::string &fileNamePrefix, 00049 int beginTime, 00050 int endTime, 00051 int timeInterval, 00052 bool writeThroughMaster=false 00053 ); 00054 00058 virtual ~CheckPointController(); 00059 00068 virtual void performCheckPoint(int currentTime); 00069 virtual void performSnapShot(int currentTime); 00070 00076 virtual void issueCheckPointCmd(int currentTime); 00077 virtual void issueCheckPointCmdWTM(int currentTime); 00078 virtual void issueSnapShotCmd(int currentTime); 00079 virtual void issueCheckPointLoadingCmd(const std::string&); 00080 00087 bool isCheckPoint(int time); 00088 00092 void setCheckPointParams( 00093 const std::string &fileNamePrefix, 00094 int beginTime, 00095 int endTime, 00096 int timeInterval, 00097 bool writeThroughMaster=false 00098 ); 00099 00100 std::string getLatticeDataFileName(const std::string &fileNamePrefix, int timeStep, int rank); 00101 00102 esys::lsm::StringVector getLatticeDataFiles(int timeStep, int size); 00103 00104 esys::lsm::StringVector getLatticeDataFiles(int timeStep); 00105 00110 void set_is2d(bool do2d); 00111 00115 void setLsmGeoVersion(float version); 00116 00120 void setPeriodicDimensions(esys::lsm::BoolVector periodicDimensions); 00121 00125 void setGeometryInfo(const esys::lsm::GeometryInfo &geoInfo); 00126 00130 void setSpatialDomain(const esys::lsm::BoundingBox &bBox); 00131 00135 esys::lsm::GeometryInfo getGeometryInfo() const; 00136 00140 int getNumTimeSteps() const; 00141 00145 void setNumTimeSteps(int numTimeSteps); 00146 00150 double getTimeStepSize() const; 00151 00155 void setTimeStepSize(double timeStepSize); 00156 00157 bool spatialDomainHasBeenSet() const; 00158 00159 00160 MPI_Comm getMpiComm() const; 00161 00162 void setMpiComm(MPI_Comm mpiComm); 00163 00164 protected: 00168 MPI_Comm m_mpiComm; 00169 00170 00174 std::string m_fileNamePrefix; 00175 00179 int m_beginTime; 00180 00184 int m_endTime; 00185 00189 int m_timeInterval; 00190 00194 esys::lsm::GeometryInfo m_geoInfo; 00195 00199 int m_numTimeSteps; 00200 00204 double m_timeStepSize; 00205 00206 bool m_spatialDomainHasBeenSet; 00207 00212 bool m_writeThroughMaster; 00213 }; 00214 00215 #endif