DiFfRG
|
A simple PI controller which adjusts time steps in a smooth fashion depending on how well the solver performs, taking into account the most recent time step, too. More...
#include <PI.hh>
Public Types | |
using | Base = TC_Default<NEWT> |
Public Member Functions | |
TC_PI (NEWT &newton_, unsigned int alg_order_, double t_, double max_t_, double dt_, double min_dt_, double max_dt_, double output_dt_) | |
![]() | |
TC_Default (NEWT &newton_, unsigned int alg_order_, double t_, double max_t_, double dt_, double min_dt_, double max_dt_, double output_dt_) | |
double | get_dt () const |
double | get_t () const |
unsigned int | get_stuck () const |
Get how many times in succession the timestepper was at the same time step. | |
bool | finished () const |
template<typename F , typename OF > | |
void | advance (F &f, OF &of) |
Method to perform a single time step. | |
void | print_step_info () |
Protected Member Functions | |
void | get_q () |
This method just updates q for the calculation of the next sug_dt. | |
virtual void | step_success () override |
Increment t and suggest a dt based on current error and previous error. | |
virtual void | step_fail (const std::exception &) override |
On a fail, decrease the timestep. | |
![]() |
Protected Attributes | |
double | beta1 |
double | beta2 |
double | qsteady_min |
double | qsteady_max |
double | qmin |
double | qmax |
double | qoldinit |
double | qold |
double | q11 |
double | q |
double | gamma |
double | t |
NEWT & | newton |
double | cur_dt |
double | sug_dt |
unsigned int | alg_order |
![]() | |
NEWT & | newton |
unsigned int | alg_order |
double | t |
double | max_t |
double | sug_dt |
double | min_dt |
double | max_dt |
double | output_dt |
double | cur_dt |
double | last_save |
double | last_t |
unsigned int | stuck |
bool | fin |
A simple PI controller which adjusts time steps in a smooth fashion depending on how well the solver performs, taking into account the most recent time step, too.
NEWT | the used solver type which should at least explose the methods set_ignore_nonconv(bool)->void and get_error()->double. |
using DiFfRG::TC_PI< NEWT >::Base = TC_Default<NEWT> |
|
inline |
|
inlineprotected |
This method just updates q for the calculation of the next sug_dt.
|
inlineoverrideprotectedvirtual |
On a fail, decrease the timestep.
Reimplemented from DiFfRG::TC_Default< NEWT >.
|
inlineoverrideprotectedvirtual |
Increment t and suggest a dt based on current error and previous error.
Reimplemented from DiFfRG::TC_Default< NEWT >.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |