45 virtual bool read(
const char*) {
return true; }
56 IFEM::cout <<
"\n ** HDF5 output is not available for spectral"
57 <<
" discretization. Deactivating...\n"<< std::endl;
84 virtual int solveProblem(
char* infile,
const char* heading =
nullptr)
87 int geoBlk = 0, nBlock = 0;
88 if (!
S1.saveModel(infile,geoBlk,nBlock))
95 if (!
S1.solveStep(dummy))
99 if (!
S1.saveStep(dummy,nBlock))
151 int geoBlk = 0, nBlock = 0;
159 if (!this->
S1.solveStep(
tp))
161 else if (!this->
saveState(geoBlk,nBlock))
176 int saveInterval = 1,
177 int restartInterval = 0)
180 if (restartInterval < 1)
return;
210 virtual bool parse(
char* keyw, std::istream& is) {
return tp.
parse(keyw,is); }
213 virtual bool parse(
const tinyxml2::XMLElement* elem)
215 if (strcasecmp(elem->Value(),
"postprocessing"))
218 const tinyxml2::XMLElement* child = elem->FirstChildElement();
219 for (; child; child = child->NextSiblingElement())
220 if (!strncasecmp(child->Value(),
"savediverg",10))
222 else if (!strncasecmp(child->Value(),
"dumplog",7))
229 bool saveState(
int& geoBlk,
int& nBlock,
bool newMesh =
false,
230 char* infile =
nullptr,
bool saveRes =
true)
232 if (newMesh && !this->
S1.saveModel(infile,geoBlk,nBlock))
236 else if (!this->
S1.saveStep(
tp,nBlock))
247 IFEM::cout <<
" Serializing simulator state for restart (time level "
252 data[
"TimeLevel"] = std::to_string(exportAdm->
getTimeLevel());
262 int restart(
const std::string& restartFile,
int restartStep)
264 if (restartFile.empty())
return 0;
271 if ((restartStep = hdf.readData(data,restartStep-1)) >= 0)
273 IFEM::cout <<
"\n === Restarting from a serialized state ==="
274 <<
"\n file = "<< restartFile
275 <<
"\n step = "<< restartStep+1;
280 HDF5Restart::SerializeData::const_iterator it = data.find(
"TimeLevel");
281 if (it != data.end())
295 std::cerr <<
" *** SIMSolver: Failed to read restart data."<< std::endl;
Output of restart data to HDF5.
Output of model and results to HDF5 file.
Initialization of the IFEM library.
Administration base class for FEM simulators.
Class for encapsulation of general time stepping parameters.
static const double T1[2]
1-point rule coordinates.
Definition TriangleQuadrature.C:19
Administer and write data using DataWriters.
Definition DataExporter.h:38
bool dumpTimeLevel(const TimeStep *tp=nullptr, bool geoUpd=false, bool doLog=false)
Dumps all registered fields using the registered writers.
Definition DataExporter.C:95
void registerWriter(DataWriter *writer)
Adds the data writer to the list of registered writers.
Definition DataExporter.h:90
int getTimeLevel() const
Returns current time level of the exporter.
Definition DataExporter.h:132
bool isPartitioned() const
Returns whether a graph based partition is used.
Definition DomainDecomposition.h:198
Write and read restart data using a HDF5 file.
Definition HDF5Restart.h:32
int getTimeLevel() const
Returns current time level.
Definition HDF5Restart.h:60
bool dumpStep(const TimeStep &tp)
Returns whether or not restart data should be output.
Definition HDF5Restart.C:40
bool writeData(const SerializeData &data)
Writes restart data to file.
Definition HDF5Restart.C:50
std::map< std::string, std::string > SerializeData
Convenience type.
Definition HDF5Restart.h:34
Write data to a HDF5 file.
Definition HDF5Writer.h:30
static void registerCallback(ControlCallback &cb)
Registers a fifo instruction callback.
Definition IFEM.C:189
static bool pollControllerFifo()
Polls the control fifo for instructions.
Definition IFEM.C:195
static utl::LogStream cout
Combined standard out for parallel processes.
Definition IFEM.h:62
static SIMoptions & getOptions()
Returns a reference to the general input options.
Definition IFEM.h:55
Class for administration of MPI processes in IFEM library.
Definition ProcessAdm.h:33
int getProcId() const
Return process id.
Definition ProcessAdm.h:66
DomainDecomposition dd
Decomain decomposition.
Definition ProcessAdm.h:45
Template class for stationary simulator drivers.
Definition SIMSolver.h:32
virtual ~SIMSolverStat()
The destructor deletes the results data exporter object.
Definition SIMSolver.h:42
void handleDataOutput(const std::string &hdf5file, const ProcessAdm &modelAdm, int saveInterval=1)
Handles application data output.
Definition SIMSolver.h:51
virtual int solveProblem(char *infile, const char *heading=nullptr)
Solves the stationary problem.
Definition SIMSolver.h:84
virtual bool read(const char *)
Nothing to read for this template.
Definition SIMSolver.h:45
SIMSolverStat(T1 &s1, const char *head=nullptr)
The constructor initializes the reference to the actual solver.
Definition SIMSolver.h:35
DataExporter * exporter
Administrator for result output to HDF5 file.
Definition SIMSolver.h:111
T1 & S1
The actual solver.
Definition SIMSolver.h:109
int startExpLevel
Initial time level for the DataExporter.
Definition SIMSolver.h:112
void printHeading(const char *heading)
Writes an application-specific heading, if provided.
Definition SIMSolver.h:69
Template class for transient simulator drivers.
Definition SIMSolver.h:123
const TimeStep & getTimePrm() const
Returns a const reference to the time stepping information.
Definition SIMSolver.h:141
int restart(const std::string &restartFile, int restartStep)
Handles application restarts by reading a serialized solver state.
Definition SIMSolver.h:262
bool dumpLog
Set to true, to print out dump time levels.
Definition SIMSolver.h:303
bool advanceStep()
Advances the time step one step forward.
Definition SIMSolver.h:144
virtual bool read(const char *file)
Reads solver data from the specified input file.
Definition SIMSolver.h:138
virtual bool deSerialize(const HDF5Restart::SerializeData &data)
Set internal state from a serialized state.
Definition SIMSolver.h:203
void handleDataOutput(const std::string &hdf5file, const ProcessAdm &modelAdm, int saveInterval=1, int restartInterval=0)
Handles application data output.
Definition SIMSolver.h:174
TimeStep tp
Time stepping information.
Definition SIMSolver.h:304
int startRstLevel
Initial time level for the restart output.
Definition SIMSolver.h:307
virtual bool serialize(HDF5Restart::SerializeData &data)
Serialize internal state for restarting purposes.
Definition SIMSolver.h:196
bool saveState(int &geoBlk, int &nBlock, bool newMesh=false, char *infile=nullptr, bool saveRes=true)
Saves geometry and results to VTF and HDF5 for current time step.
Definition SIMSolver.h:229
virtual bool parse(const tinyxml2::XMLElement *elem)
Parses a data section from an XML element.
Definition SIMSolver.h:213
SIMSolver(T1 &s1)
The constructor initializes the reference to the actual solver.
Definition SIMSolver.h:126
virtual bool parse(char *keyw, std::istream &is)
Parses a data section from an input stream.
Definition SIMSolver.h:210
virtual ~SIMSolver()
The destructor deletes the restart data handler.
Definition SIMSolver.h:135
bool saveDivergedSol
If true, save also the diverged solution to VTF.
Definition SIMSolver.h:300
virtual int solveProblem(char *infile, const char *heading=nullptr)
Solves the problem up to the final time.
Definition SIMSolver.h:147
HDF5Restart * restartAdm
Administrator for restart output.
Definition SIMSolver.h:305
ProcessAdm * restartProcAdm
Process admin used for restart output.
Definition SIMSolver.h:306
Administration base class for FEM simulators.
Definition SIMadmin.h:32
std::string myHeading
Heading written before reading the input file.
Definition SIMadmin.h:91
virtual bool read(const char *fileName)
Reads model data from the specified input file *fileName.
Definition SIMadmin.C:68
ProcessAdm adm
Parallel administrator.
Definition SIMadmin.h:88
Class for encapsulation of general time stepping parameters.
Definition TimeStep.h:31
bool serialize(std::map< std::string, std::string > &data) const
Serialize internal state for restarting purposes.
Definition TimeStep.C:355
bool multiSteps() const
Returns true if the simulation consists of several time steps.
Definition TimeStep.C:184
bool increment()
Advances the time increments one step further.
Definition TimeStep.C:223
bool parse(char *keyWord, std::istream &is)
Parses a data section from an input stream.
Definition TimeStep.C:62
bool deSerialize(const std::map< std::string, std::string > &data)
Set internal state from a serialized state.
Definition TimeStep.C:371