PID controller based adaptive time step control as above that also takes target iterations into account.
More...
#include <TimeStepControl.hpp>
|
| | PIDAndIterationCountTimeStepControl (const int target_iterations, const double decayDampingFactor, const double growthDampingFactor, const double tol, const double minTimeStepBasedOnIterations, const bool verbose) |
| | constructor More...
|
| |
| double | computeTimeStepSize (const double dt, const int iterations, const RelativeChangeInterface &relativeChange, const AdaptiveSimulatorTimer &) const override |
| | compute new time step size suggestions based on the PID controller More...
|
| |
|
bool | timeStepAccepted (const double, const double) const override |
| | For the general 3rd order controller, the internal shifting of errors and time steps happens here, and hence this method needs to be called for (after) each time step.
|
| |
|
template<class Serializer > |
| void | serializeOp (Serializer &serializer) |
| |
|
bool | operator== (const PIDAndIterationCountTimeStepControl &) const |
| |
| | PIDTimeStepControl (const double tol, const bool verbose) |
| | constructor More...
|
| |
|
template<class Serializer > |
| void | serializeOp (Serializer &serializer) |
| |
|
bool | operator== (const PIDTimeStepControl &) const |
| |
|
virtual | ~TimeStepControlInterface () |
| | virtual destructor (empty)
|
| |
|
|
static constexpr TimeStepControlType | Type = TimeStepControlType::PIDAndIterationCount |
| |
|
static constexpr TimeStepControlType | Type = TimeStepControlType::PID |
| |
|
|
const int | target_iterations_ = 8 |
| |
|
const double | decayDampingFactor_ = 1.0 |
| |
|
const double | growthDampingFactor_ = 3.2 |
| |
|
const double | minTimeStepBasedOnIterations_ = 0.0 |
| |
|
const bool | verbose_ = false |
| |
|
const double | tol_ = 0.1 |
| |
|
std::vector< double > | errors_ {} |
| |
|
const bool | verbose_ = false |
| |
PID controller based adaptive time step control as above that also takes target iterations into account.
◆ PIDAndIterationCountTimeStepControl()
| Opm::PIDAndIterationCountTimeStepControl::PIDAndIterationCountTimeStepControl |
( |
const int |
target_iterations, |
|
|
const double |
decayDampingFactor, |
|
|
const double |
growthDampingFactor, |
|
|
const double |
tol, |
|
|
const double |
minTimeStepBasedOnIterations, |
|
|
const bool |
verbose |
|
) |
| |
constructor
- Parameters
-
| target_iterations | number of desired iterations per time step |
| decayDampingFactor | limiting the decrease in time step if iteration count was high |
| growthDampingFactor | limiting the increase in time step if iteration count was low |
| tol | tolerance for the relative changes of the numerical solution to be accepted in one time step |
| minTimeStepBasedOnIterations | time step suggestion from target iterations should not be below this |
| verbose | if true, get some output |
◆ computeTimeStepSize()
compute new time step size suggestions based on the PID controller
- Parameters
-
| dt | time step size used in the current step |
| iterations | number of iterations used (linear/nonlinear) |
| relativeChange | Relative change handler |
| substepTimer | Sub step timer |
- Returns
- suggested time step size for the next step
- Parameters
-
| dt | Time step length |
| iterations | Number of iterations used |
| relativeChange | Relative change handler |
Reimplemented from Opm::PIDTimeStepControl.
The documentation for this class was generated from the following files:
- opm/simulators/timestepping/TimeStepControl.hpp
- opm/simulators/timestepping/TimeStepControl.cpp