main_loop_2d.hpp
Go to the documentation of this file.
1 
6 #ifndef MAIN_LOOP_2D_HPP
7 #define MAIN_LOOP_2D_HPP 1
8 
9 #include <string>
10 #include "../two_dimensional/hdsim2d.hpp"
11 
12 using std::string;
13 
16 {
17 public:
18 
22  virtual void operator()(const hdsim& sim) = 0;
23 
24  virtual ~DiagnosticFunction(void);
25 };
26 
29 {
30 public:
31 
35  explicit WriteTime(const string& fname);
36 
37  void operator()(const hdsim& sim);
38 
39 private:
40  string fname_;
41 };
42 
45 {
46 public:
47 
51  explicit WriteData(const string& fname);
52 
53  void operator()(const hdsim& sim);
54 
55 private:
56  string fname_;
57 };
58 
59 
62 {
63 public:
64 
69  virtual bool operator()(const hdsim& sim) = 0;
70 
72  virtual ~TerminationCondition(void);
73 };
74 
77 {
78 public:
79 
84  SafeTimeTermination(double termination_time,
85  int max_cycles);
86 
87  bool operator()(const hdsim& sim);
88 
89 private:
90  const double termination_time_;
91  const int max_cycles_;
92 };
93 
96 {
97 public:
98 
102  explicit CycleTermination(int max_cycles);
103 
104  bool operator()(const hdsim& sim);
105 
106 private:
107 
108  const int max_cycles_;
109 };
110 
113 {
114 public:
115 
119  virtual void operator()(hdsim& sim) = 0;
120 
121  virtual ~Manipulate(void);
122 };
123 
125 namespace simulation2d{
133  void main_loop(hdsim& sim,
134  TerminationCondition& term_cond,
135  void (hdsim::*time_advance_method)(void),
136  DiagnosticFunction* diagfunc = 0,
137  Manipulate* manipulate = 0);
138 }
139 
140 #endif // MAIN_LOOP_2D_HPP
Newtonian hydrodynamic simulation.
Definition: hdsim2d.hpp:43
Writes the time after each time step.
void main_loop(hdsim &sim, TerminationCondition &term_cond, void(hdsim::*time_advance_method)(void), DiagnosticFunction *diagfunc=0, Manipulate *manipulate=0)
Simulation time advance loop.
Terminates the simulation after a specified number of iterations.
Terminates the simulation after a certain time was reached.
Functions for managing two dimensional simulations.
Abstract class for a diagnostic function.
Class for manual tweaking with the simulation data.
virtual void operator()(const hdsim &sim)=0
Perform diagnostics.
A class for writing data to a file.
Abstract class for a termination condition for the main loop.