2 #include "../../misc/universal_error.hpp" 3 #include "../../misc/simple_io.hpp" 5 simulation1d::TerminationCondition::~TerminationCondition(
void) {}
8 (
double termination_time,
10 termination_time_(termination_time),
11 max_cycles_(max_cycles) {}
18 return sim.
GetTime()<termination_time_;
21 simulation1d::DiagnosticsFunction::~DiagnosticsFunction(
void) {}
24 (
string const& fname):
37 while(term_cond(sim)){
40 else if(2==time_order)
43 throw UniversalError(
"Error in 1d main_loop: unsupported time integration order");
54 string const& time_log)
56 while(sim.
GetTime()<final_time){
59 else if(2==time_order)
63 throw UniversalError(
"Error in 1d main_loop: unsupported time integration order");
SafeTimeTermination(double termination_time, int max_cycles)
Class constructor.
Newtonian hydrodynamic simulation.
WriteTime(string const &fname)
Class constructor.
Container for error reports.
double GetTime(void) const
Returns the time of the simulation.
int GetCycle(void) const
Returns the number of times time advance was called.
void TimeAdvance2(void)
Second order time advance.
void TimeAdvance(void)
Advances the simulation in time.
Abstract class for diagnostics function.
Abstract type for termination condition.
void main_loop(hdsim1D &sim, TerminationCondition &term_cond, int time_order, DiagnosticsFunction *diag=0)
Main simulation time advance loop.
bool operator()(hdsim1D const &sim)
Determines if a simulation should continue running.
Standard simulation time advance loop.
void operator()(hdsim1D const &sim)
Performs diagnostics.
void write_number(double num, string const &fname, int prec=6)
Writes a single number to a file.