Feellgood
time_integration.h
1 #ifndef time_integration_h
2 #define time_integration_h
3 
5 class timing
6  {
7 public:
10  inline timing(const double _tf, const double _dtmin, const double _dtmax)
11  : tf(_tf), DTMIN(_dtmin), DTMAX(_dtmax), TAUR(100. * DTMAX), t(0)
12  {
13  set_dt(sqrt(DTMIN * DTMAX));
14  }
15 
17  const double tf;
18 
20  const double DTMIN; // 1e-14;
21 
23  const double DTMAX; // 1e-5 en stat ; 1e-7 en dynamique;
24 
26  const double TAUR;
27 
29  double prefactor;
30 
32  inline double get_dt() const { return dt; }
33 
36  inline void set_dt(const double _dt)
37  {
38  dt = _dt;
39  double t_tilde = _dt / TAUR;
40  prefactor = (1. + t_tilde * abs(log( t_tilde)));
41  }
42 
44  inline bool is_dt_TooSmall() const { return (dt < DTMIN); }
45 
47  inline void inc_t() { t += dt; }
48 
50  inline double get_t() const { return t; }
51 
53  inline void set_t(double _t) { t = _t; }
54 
55 private:
56  double t;
57  double dt;
58  };
59 
60 #endif
Definition: time_integration.h:6
void set_t(double _t)
Definition: time_integration.h:53
void set_dt(const double _dt)
Definition: time_integration.h:36
const double DTMIN
Definition: time_integration.h:20
double get_t() const
Definition: time_integration.h:50
const double TAUR
Definition: time_integration.h:26
void inc_t()
Definition: time_integration.h:47
timing(const double _tf, const double _dtmin, const double _dtmax)
Definition: time_integration.h:10
bool is_dt_TooSmall() const
Definition: time_integration.h:44
const double DTMAX
Definition: time_integration.h:23
double get_dt() const
Definition: time_integration.h:32
double dt
Definition: time_integration.h:57
double t
Definition: time_integration.h:56
const double tf
Definition: time_integration.h:17
double prefactor
Definition: time_integration.h:29