Feellgood
time_integration.h
1 #ifndef time_integration_h
2 #define time_integration_h
3 
6 class timing
7  {
8 public:
11  inline timing(const double _tf, const double _dtmin, const double _dtmax)
12  : tf(_tf), DTMIN(_dtmin), DTMAX(_dtmax), TAUR(100. * DTMAX), t(0)
13  {
14  set_dt(sqrt(DTMIN * DTMAX));
15  }
16 
18  const double tf;
19 
21  const double DTMIN; // 1e-14;
22 
24  const double DTMAX; // 1e-5 en stat ; 1e-7 en dynamique;
25 
27  const double TAUR;
28 
30  double prefactor;
31 
33  inline double get_dt() const { return dt; }
34 
37  inline void set_dt(const double _dt)
38  {
39  dt = _dt;
40  double t_tilde = _dt / TAUR;
41  prefactor = (1. + t_tilde * abs(log( t_tilde)));
42  }
43 
45  inline bool is_dt_TooSmall() const { return (dt < DTMIN); }
46 
48  inline void inc_t() { t += dt; }
49 
51  inline double get_t() const { return t; }
52 
54  inline void set_t(double _t) { t = _t; }
55 
56 private:
57  double t;
58  double dt;
59  };
60 
61 #endif
Definition: time_integration.h:7
void set_t(double _t)
Definition: time_integration.h:54
void set_dt(const double _dt)
Definition: time_integration.h:37
const double DTMIN
Definition: time_integration.h:21
double get_t() const
Definition: time_integration.h:51
const double TAUR
Definition: time_integration.h:27
void inc_t()
Definition: time_integration.h:48
timing(const double _tf, const double _dtmin, const double _dtmax)
Definition: time_integration.h:11
bool is_dt_TooSmall() const
Definition: time_integration.h:45
const double DTMAX
Definition: time_integration.h:24
double get_dt() const
Definition: time_integration.h:33
double dt
Definition: time_integration.h:58
double t
Definition: time_integration.h:57
const double tf
Definition: time_integration.h:18
double prefactor
Definition: time_integration.h:30