*/
struct Status : public TimeStepping<VectorType>::Status
{
+ Status()
+ : method(invalid)
+ {}
+
runge_kutta_method method;
embedded_runge_kutta_time_step exit_delta_t;
unsigned int n_iterations;
namespace TimeStepping
{
+ DeclExceptionMsg(ExcNoMethodSelected,
+ "No method selected. You need to call initialize or pass a "
+ "runge_kutta_method to the constructor.");
+
// ----------------------------------------------------------------------
// RungeKutta
// ----------------------------------------------------------------------
double delta_t,
VectorType & y)
{
+ Assert(status.method != runge_kutta_method::invalid, ExcNoMethodSelected());
+
std::vector<VectorType> f_stages(this->n_stages, y);
// Compute the different stages needed.
compute_stages(f, t, delta_t, y, f_stages);
VectorType & vec_ri,
VectorType & vec_ki)
{
+ Assert(status.method != runge_kutta_method::invalid, ExcNoMethodSelected());
+
compute_one_stage(f,
t,
this->b[0] * delta_t,
double delta_t,
VectorType & y)
{
+ Assert(status.method != runge_kutta_method::invalid, ExcNoMethodSelected());
+
VectorType old_y(y);
std::vector<VectorType> f_stages(this->n_stages, y);
// Compute the different stages needed.
double delta_t,
VectorType & y)
{
+ Assert(status.method != runge_kutta_method::invalid, ExcNoMethodSelected());
+
bool done = false;
unsigned int count = 0;
double error_norm = 0.;