My Project
|
PID controller based adaptive time step control as suggested in: Turek and Kuzmin. More...
#include <TimeStepControl.hpp>
Public Member Functions | |
PIDTimeStepControl (const double tol=1e-3, const bool verbose=false) | |
constructor | |
double | computeTimeStepSize (const double dt, const int, const RelativeChangeInterface &relativeChange, const double) const |
compute new time step size suggestions based on the PID controller | |
template<class Serializer > | |
void | serializeOp (Serializer &serializer) |
bool | operator== (const PIDTimeStepControl &) const |
![]() | |
virtual | ~TimeStepControlInterface () |
virtual destructor (empty) | |
Static Public Member Functions | |
static PIDTimeStepControl | serializationTestObject () |
Static Public Attributes | |
static constexpr TimeStepControlType | Type = TimeStepControlType::PID |
Protected Attributes | |
const double | tol_ = 1e-3 |
std::vector< double > | errors_ {} |
const bool | verbose_ = false |
PID controller based adaptive time step control as suggested in: Turek and Kuzmin.
Algebraic Flux Correction III. Incompressible Flow Problems. Uni Dortmund.
See also: D. Kuzmin and S.Turek. Numerical simulation of turbulent bubbly flows. Techreport Uni Dortmund. 2004
and the original article: Valli, Coutinho, and Carey. Adaptive Control for Time Step Selection in Finite Element Simulation of Coupled Viscous Flow and Heat Transfer. Proc of the 10th International Conference on Numerical Methods in Fluids. 1998.
Opm::PIDTimeStepControl::PIDTimeStepControl | ( | const double | tol = 1e-3 , |
const bool | verbose = false |
||
) |
constructor
tol | tolerance for the relative changes of the numerical solution to be accepted in one time step (default is 1e-3) |
verbose | if true get some output (default = false) |
|
virtual |
compute new time step size suggestions based on the PID controller
dt | time step size used in the current step |
iterations | number of iterations used (linear/nonlinear) |
timeError | object to compute || u^n+1 - u^n || / || u^n+1 || |
Implements Opm::TimeStepControlInterface.