#include <TimeStepControl.hpp>

Inheritance diagram for Opm::General3rdOrderController:
Inheritance graph

Public Member Functions

 General3rdOrderController ()=default
 
 General3rdOrderController (const double tolerance, const double safetyFactor, const bool rejectCompletedStep, const std::string &toleranceTestVersion, const double maxReductionTimeStep, const std::string &parameters, const bool verbose)
 
double computeTimeStepSize (const double dt, const int, const RelativeChangeInterface &, const AdaptiveSimulatorTimer &substepTimer) const override
 
double timeStepFactor (const std::array< double, 3 > &errors, const std::array< double, 3 > &timeSteps) const
 
bool timeStepAccepted (const double error, const double timeStepJustCompleted) const override
 
template<class Serializer >
void serializeOp (Serializer &serializer)
 
bool operator== (const General3rdOrderController &) const
 

Static Public Member Functions

static General3rdOrderController serializationTestObject ()
 

Static Public Attributes

static constexpr TimeStepControlType Type = TimeStepControlType::General3rdOrder
 

Protected Attributes

const double tolerance_ = 0.1
 
const double safetyFactor_ = 0.8
 
const bool rejectCompletedStep_ = false
 
std::array< double, 3 > errors_ {}
 
std::array< double, 3 > timeSteps_ {}
 
std::array< double, 3 > beta_ {0.125, 0.25, 0.125}
 
std::array< double, 2 > alpha_ {0.75, 0.25}
 
InternalControlVersions controllerVersion_ {InternalControlVersions::IController}
 
ToleranceTestVersions toleranceTestVersion_ {ToleranceTestVersions::Standard}
 
const double maxReductionTimeStep_ = 0.1
 
const bool verbose_ = false
 

Detailed Description

General 3rd order controller

Constructor & Destructor Documentation

◆ General3rdOrderController() [1/2]

Opm::General3rdOrderController::General3rdOrderController ( )
default

◆ General3rdOrderController() [2/2]

Opm::General3rdOrderController::General3rdOrderController ( const double  tolerance,
const double  safetyFactor,
const bool  rejectCompletedStep,
const std::string &  toleranceTestVersion,
const double  maxReductionTimeStep,
const std::string &  parameters,
const bool  verbose 
)

Member Function Documentation

◆ computeTimeStepSize()

double Opm::General3rdOrderController::computeTimeStepSize ( const double  dt,
const int  iterations,
const RelativeChangeInterface relativeChange,
const AdaptiveSimulatorTimer substepTimer 
) const
overridevirtual

compute new time step size suggestions based on the PID controller

Parameters
dttime step size used in the current step
iterationsnumber of iterations used (linear/nonlinear)
timeErrorobject to compute || u^n+1 - u^n || / || u^n+1 ||
Returns
suggested time step size for the next step

Implements Opm::TimeStepControlInterface.

◆ operator==()

bool Opm::General3rdOrderController::operator== ( const General3rdOrderController ) const

◆ serializationTestObject()

static General3rdOrderController Opm::General3rdOrderController::serializationTestObject ( )
static

◆ serializeOp()

template<class Serializer >
void Opm::General3rdOrderController::serializeOp ( Serializer &  serializer)
inline

◆ timeStepAccepted()

bool Opm::General3rdOrderController::timeStepAccepted ( const double  error,
const double  timeStepJustCompleted 
) const
overridevirtual

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

Implements Opm::TimeStepControlInterface.

◆ timeStepFactor()

double Opm::General3rdOrderController::timeStepFactor ( const std::array< double, 3 > &  errors,
const std::array< double, 3 > &  timeSteps 
) const

Member Data Documentation

◆ alpha_

std::array<double, 2> Opm::General3rdOrderController::alpha_ {0.75, 0.25}
mutableprotected

Referenced by serializeOp().

◆ beta_

std::array<double, 3> Opm::General3rdOrderController::beta_ {0.125, 0.25, 0.125}
mutableprotected

Referenced by serializeOp().

◆ controllerVersion_

InternalControlVersions Opm::General3rdOrderController::controllerVersion_ {InternalControlVersions::IController}
mutableprotected

Referenced by serializeOp().

◆ errors_

std::array<double, 3> Opm::General3rdOrderController::errors_ {}
mutableprotected

Referenced by serializeOp().

◆ maxReductionTimeStep_

const double Opm::General3rdOrderController::maxReductionTimeStep_ = 0.1
protected

Referenced by serializeOp().

◆ rejectCompletedStep_

const bool Opm::General3rdOrderController::rejectCompletedStep_ = false
protected

Referenced by serializeOp().

◆ safetyFactor_

const double Opm::General3rdOrderController::safetyFactor_ = 0.8
protected

Referenced by serializeOp().

◆ timeSteps_

std::array<double, 3> Opm::General3rdOrderController::timeSteps_ {}
mutableprotected

Referenced by serializeOp().

◆ tolerance_

const double Opm::General3rdOrderController::tolerance_ = 0.1
protected

Referenced by serializeOp().

◆ toleranceTestVersion_

ToleranceTestVersions Opm::General3rdOrderController::toleranceTestVersion_ {ToleranceTestVersions::Standard}
protected

Referenced by serializeOp().

◆ Type

constexpr TimeStepControlType Opm::General3rdOrderController::Type = TimeStepControlType::General3rdOrder
staticconstexpr

◆ verbose_

const bool Opm::General3rdOrderController::verbose_ = false
protected

Referenced by serializeOp().


The documentation for this class was generated from the following file: