usingbase=EmbeddedRungeKuttaStep<dim,butcher_tableau_t>;//!< Type of the base class
usingvec_t=typenamebase::vec_t;//!< Type of a vector
usingbase::butcher;
usingbase::get_rhs;
usingbase::get_options;
//check that template argument are consistent
static_assert(butcher_tableau_t::RK_order==5,"The butcher tableau must correspond to a Runge-Kutta method of order 5");
static_assert(butcher_tableau_t::RK_evaluations==6||butcher_tableau_t::RK_evaluations==7,"The number of functions evaluations must be 6 or 7 for an embedded Runge-Kutta method");
//! \brief Constructor with default options
EmbeddedRungeKuttaStep45(constrhs_f<dim>&rhs,
constbutcher_tableau_t&butcher):
base(rhs,butcher)
{
}
//! \brief Constructor with custom options
EmbeddedRungeKuttaStep45(
constrhs_f<dim>&rhs,
constbutcher_tableau_t&butcher,
EmbeddedRungeKuttaStepOptionsoptions
):
base(rhs,butcher,options)
{
}
//! \brief compute a step
//!
//! \param y initial value
//! \param dydx initial value of the right hand site
//! \param x value of the integration variable
//! \param timestep the integration step
//! \param y_out value at the end of the step (y+timestep)
//! \param y_err estimation of the truncation error