21#ifndef OPM_TIMESTEPCONTROL_HEADER_INCLUDED
22#define OPM_TIMESTEPCONTROL_HEADER_INCLUDED
24#include <opm/simulators/timestepping/TimeStepControlInterface.hpp>
31 enum class TimeStepControlType {
46 static constexpr TimeStepControlType Type = TimeStepControlType::SimpleIterationCount;
55 const double decayrate,
56 const double growthrate,
57 const bool verbose =
false);
64 template<
class Serializer>
65 void serializeOp(Serializer& serializer)
67 serializer(target_iterations_);
68 serializer(decayrate_);
69 serializer(growthrate_);
76 const int target_iterations_ = 0;
77 const double decayrate_ = 0.0;
78 const double growthrate_ = 0.0;
79 const bool verbose_ =
false;
99 static constexpr TimeStepControlType Type = TimeStepControlType::PID;
105 const bool verbose =
false );
112 template<
class Serializer>
113 void serializeOp(Serializer& serializer)
117 serializer(verbose_);
123 const double tol_ = 1e-3;
124 mutable std::vector< double > errors_{};
126 const bool verbose_ =
false;
139 static constexpr TimeStepControlType Type = TimeStepControlType::PIDAndIterationCount;
147 const double decayDampingFactor = 1.0,
148 const double growthDampingFactor = 1.0/1.2,
149 const double tol = 1e-3,
150 const double minTimeStepBasedOnIterations = 0.,
151 const bool verbose =
false);
158 template<
class Serializer>
159 void serializeOp(Serializer& serializer)
162 serializer(target_iterations_);
163 serializer(decayDampingFactor_);
164 serializer(growthDampingFactor_);
165 serializer(minTimeStepBasedOnIterations_);
171 const int target_iterations_;
172 const double decayDampingFactor_;
173 const double growthDampingFactor_;
174 const double minTimeStepBasedOnIterations_;
189 static constexpr TimeStepControlType Type = TimeStepControlType::HardCodedTimeStep;
201 template<
class Serializer>
202 void serializeOp(Serializer& serializer)
204 serializer(subStepTime_);
211 std::vector<double> subStepTime_;
HardcodedTimeStepControl Input generated from summary file using the ert application:
Definition: TimeStepControl.hpp:187
double computeTimeStepSize(const double dt, const int, const RelativeChangeInterface &, const double simulationTimeElapsed) const
compute new time step size suggestions based on the PID controller
Definition: TimeStepControl.cpp:137
PID controller based adaptive time step control as above that also takes an target iteration into acc...
Definition: TimeStepControl.hpp:136
PIDAndIterationCountTimeStepControl(const int target_iterations=20, const double decayDampingFactor=1.0, const double growthDampingFactor=1.0/1.2, const double tol=1e-3, const double minTimeStepBasedOnIterations=0., const bool verbose=false)
constructor
Definition: TimeStepControl.cpp:232
double computeTimeStepSize(const double dt, const int iterations, const RelativeChangeInterface &relativeChange, const double) const
compute new time step size suggestions based on the PID controller
Definition: TimeStepControl.cpp:252
PID controller based adaptive time step control as suggested in: Turek and Kuzmin.
Definition: TimeStepControl.hpp:97
PIDTimeStepControl(const double tol=1e-3, const bool verbose=false)
constructor
Definition: TimeStepControl.cpp:156
double computeTimeStepSize(const double dt, const int, const RelativeChangeInterface &relativeChange, const double) const
compute new time step size suggestions based on the PID controller
Definition: TimeStepControl.cpp:173
RelativeChangeInterface.
Definition: TimeStepControlInterface.hpp:32
A simple iteration count based adaptive time step control.
Definition: TimeStepControl.hpp:44
double computeTimeStepSize(const double dt, const int iterations, const RelativeChangeInterface &, const double) const
compute new time step size suggestions based on the PID controller
Definition: TimeStepControl.cpp:76
TimeStepControlInterface.
Definition: TimeStepControlInterface.hpp:49
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: BlackoilPhases.hpp:27