#include <w_method.h>
Public Member Functions | |
virtual | ~WMethodStageEquationHelper ()=0 |
purely virtual destructor | |
virtual void | solve_W_stage_equation (const AbstractIVP< VECTOR > *ivp, const double t, const VECTOR &v, const double alpha, const VECTOR &y, const double tolerance, VECTOR &x) const =0 |
virtual void | approximate_ft (const AbstractIVP< VECTOR > *ivp, const double t, const VECTOR &v, const double tolerance, VECTOR &result) const =0 |
Abstract helper class for (adaptive) solvers of the W-(or ROW-) method stage equations
(alpha*I-T)x=y.
In a W-method, one replaces the exact Jacobian J=f_v(t,v) by an maybe crude approximation T. The derivative f_t(t,v) will also be approximated by a vector g (often even by zero).
In practice, it is possible (but not necessary) to make the concrete instance of AbstractIVP under consideration also a descendant from this helper class. For example, the class ROWMethod uses a special WMethodStageEquationHelper class, see row_method.h for details.
virtual void MathTL::WMethodStageEquationHelper< VECTOR >::approximate_ft | ( | const AbstractIVP< VECTOR > * | ivp, |
const double | t, | ||
const VECTOR & | v, | ||
const double | tolerance, | ||
VECTOR & | result | ||
) | const [pure virtual] |
Approximation of the temporal derivative f_t(t,v) (up to some tolerance w.r.t. ||.||_2, often denoted as g). In practice, g will often be chosen as zero, for stability reasons (reducing the overall consistency order of the W-method).
Implemented in MathTL::ROWMethod< VECTOR >.
virtual void MathTL::WMethodStageEquationHelper< VECTOR >::solve_W_stage_equation | ( | const AbstractIVP< VECTOR > * | ivp, |
const double | t, | ||
const VECTOR & | v, | ||
const double | alpha, | ||
const VECTOR & | y, | ||
const double | tolerance, | ||
VECTOR & | x | ||
) | const [pure virtual] |
(adaptive) solver for one of the systems (alpha*I-T)x=y, implicitly this also specifies the approximation T to the Jacobian f_v(t,v)
Implemented in MathTL::ROWMethod< VECTOR >.