2.0.0b10
catchment modelling framework
Loading...
Searching...
No Matches
HeunIntegrator Class Reference

A simple predictor - corrector solver. More...

+ Inheritance diagram for HeunIntegrator:
+ Collaboration diagram for HeunIntegrator:

Detailed Description

A simple predictor - corrector solver.

Not tested and very experimentally \( y^{n+1} = y^n + \alpha f(y^n + f(y^n)dt)dt + (1-\alpha)f(y^n)dt \)

Public Member Functions

 HeunIntegrator (const cmf::math::state_list &states, real Alpha=0.5)
 Constructs a new PredictCorrectSimple from a pointer to a vector of state variables.
 
 HeunIntegrator (const Integrator &copy)
 copy constructor
 
 HeunIntegrator (real Alpha=0.5)
 Constructs a new Heun integrator.
 
virtual Integratorcopy () const
 Polymorphic copy constructor.
 
int integrate (cmf::math::Time MaxTime, cmf::math::Time TimeStep)
 Integrates the vector of state variables.
 
void reset () override
 Resets any saved history (for multistep methods)
 
std::string to_string () const override
 Desrcibes the iterator.
 
Integrate
void integrate_until (cmf::math::Time t_max, cmf::math::Time dt=Time(), bool reset=false)
 Integrates the vector of state variables until t_max.
 

Public Attributes

real alpha
 Alpha Weight factor \(\alpha\) to weight \(f(y^n)\) and \(f(y^{n+1})\).
 

Protected Attributes

Accuracy parameters
const real Epsilon =1e-9
 Tolerable error.
 

model time

cmf::math::Time get_t () const
 Returns the current model time.
 
void set_t (cmf::math::Time val)
 Sets the current model time.
 
cmf::math::Time get_dt () const
 Returns the last time step.
 
cmf::math::Time m_t
 Actual time of the solver.
 
cmf::math::Time m_dt
 last time step of the solver
 

Constructor & Destructor Documentation

◆ HeunIntegrator() [1/2]

HeunIntegrator ( const cmf::math::state_list & states,
real Alpha = 0.5 )
explicit

Constructs a new PredictCorrectSimple from a pointer to a vector of state variables.

Note
The Integrator becomes the owner of states
Parameters
statesStatevariable owner of the system
AlphaWeight factor \(\alpha\) to weight \(f(y^n)\) and \(f(y^{n+1})\)

◆ HeunIntegrator() [2/2]

HeunIntegrator ( real Alpha = 0.5)

Constructs a new Heun integrator.

Parameters
AlphaWeight factor \(\alpha\) to weight \(f(y^n)\) and \(f(y^{n+1})\)

Member Function Documentation

◆ integrate()

int integrate ( cmf::math::Time MaxTime,
cmf::math::Time TimeStep )
virtual

Integrates the vector of state variables.

Parameters
MaxTime(ignored) To stop the model (if running in a model framework) at time steps of value exchange e.g. full hours, the next value exchange time can be given
TimeStepTakes the proposed time step

Implements Integrator.

◆ integrate_until()

void integrate_until ( cmf::math::Time t_max,
cmf::math::Time dt = Time(),
bool reset = false )
inherited

Integrates the vector of state variables until t_max.

Parameters
t_maxTime, the solver should run to
dtTime step (may be omitted)
resetIf true, solver is reseted before integration starts