PID controller based adaptive time step control as above that also takes an target iteration into account. More...
#include <TimeStepControl.hpp>
Public Member Functions | |
PIDAndIterationCountTimeStepControl (const int target_iterations=20, const double tol=1e-3, const bool verbose=false) | |
constructor | |
double | computeTimeStepSize (const double dt, const int iterations, const RelativeChangeInterface &relativeChange, const double) const |
Protected Attributes | |
const int | target_iterations_ |
PID controller based adaptive time step control as above that also takes an target iteration into account.
Opm::PIDAndIterationCountTimeStepControl::PIDAndIterationCountTimeStepControl | ( | const int | target_iterations = 20 , |
|
const double | tol = 1e-3 , |
|||
const bool | verbose = false | |||
) |
constructor
target_iterations | number of desired iterations per time step | |
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) |
double Opm::PIDAndIterationCountTimeStepControl::computeTimeStepSize | ( | const double | dt, | |
const int | iterations, | |||
const RelativeChangeInterface & | relativeChange, | |||
const double | simulationTimeElapsed | |||
) | const [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 || |
Reimplemented from Opm::PIDTimeStepControl.