mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
SimpleIterationCountTimeStepControl: add serialization support
This commit is contained in:
parent
e89b28c9a2
commit
bd538cf61d
@ -66,6 +66,12 @@ namespace Opm
|
||||
}
|
||||
}
|
||||
|
||||
SimpleIterationCountTimeStepControl
|
||||
SimpleIterationCountTimeStepControl::serializationTestObject()
|
||||
{
|
||||
return {1, 1.0, 2.0, true};
|
||||
}
|
||||
|
||||
double SimpleIterationCountTimeStepControl::
|
||||
computeTimeStepSize( const double dt, const int iterations, const RelativeChangeInterface& /* relativeChange */, const double /*simulationTimeElapsed */) const
|
||||
{
|
||||
@ -86,6 +92,15 @@ namespace Opm
|
||||
return dtEstimate;
|
||||
}
|
||||
|
||||
bool SimpleIterationCountTimeStepControl::
|
||||
operator==(const SimpleIterationCountTimeStepControl& ctrl) const
|
||||
{
|
||||
return this->target_iterations_ == ctrl.target_iterations_ &&
|
||||
this->decayrate_ == ctrl.decayrate_ &&
|
||||
this->growthrate_ == ctrl.growthrate_ &&
|
||||
this->verbose_ == ctrl.verbose_;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
//
|
||||
// HardcodedTimeStepControl Implementation
|
||||
|
@ -35,6 +35,8 @@ namespace Opm
|
||||
class SimpleIterationCountTimeStepControl : public TimeStepControlInterface
|
||||
{
|
||||
public:
|
||||
SimpleIterationCountTimeStepControl() = default;
|
||||
|
||||
/// \brief constructor
|
||||
/// \param target_iterations number of desired iterations (e.g. Newton iterations) per time step in one time step
|
||||
// \param decayrate decayrate of time step when target iterations are not met (should be <= 1)
|
||||
@ -45,14 +47,27 @@ namespace Opm
|
||||
const double growthrate,
|
||||
const bool verbose = false);
|
||||
|
||||
static SimpleIterationCountTimeStepControl serializationTestObject();
|
||||
|
||||
/// \brief \copydoc TimeStepControlInterface::computeTimeStepSize
|
||||
double computeTimeStepSize( const double dt, const int iterations, const RelativeChangeInterface& /* relativeChange */, const double /*simulationTimeElapsed */ ) const;
|
||||
|
||||
template<class Serializer>
|
||||
void serializeOp(Serializer& serializer)
|
||||
{
|
||||
serializer(target_iterations_);
|
||||
serializer(decayrate_);
|
||||
serializer(growthrate_);
|
||||
serializer(verbose_);
|
||||
}
|
||||
|
||||
bool operator==(const SimpleIterationCountTimeStepControl&) const;
|
||||
|
||||
protected:
|
||||
const int target_iterations_;
|
||||
const double decayrate_;
|
||||
const double growthrate_;
|
||||
const bool verbose_;
|
||||
const int target_iterations_ = 0;
|
||||
const double decayrate_ = 0.0;
|
||||
const double growthrate_ = 0.0;
|
||||
const bool verbose_ = false;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <opm/common/utility/Serializer.hpp>
|
||||
|
||||
#include <opm/simulators/timestepping/SimulatorTimer.hpp>
|
||||
#include <opm/simulators/timestepping/TimeStepControl.hpp>
|
||||
#include <opm/simulators/utils/SerializationPackers.hpp>
|
||||
|
||||
#define BOOST_TEST_MODULE TestRestartSerialization
|
||||
@ -59,6 +60,7 @@ BOOST_AUTO_TEST_CASE(NAME) \
|
||||
#define TEST_FOR_TYPE(TYPE) \
|
||||
TEST_FOR_TYPE_NAMED(TYPE, TYPE)
|
||||
|
||||
TEST_FOR_TYPE(SimpleIterationCountTimeStepControl)
|
||||
TEST_FOR_TYPE(SimulatorTimer)
|
||||
|
||||
bool init_unit_test_func()
|
||||
|
Loading…
Reference in New Issue
Block a user