A bug introduced with the recent max_dt facility prevented the rosenbrock
controller to increase step size in most cases (if max_dt=0). This is fixed
now, and a regression test case has been added.
all integrate function now use the adaption to provide checking functionality
the implementations in detail::integrate_* are not aware of the checkers at
all.
integrate_times now uses checked_stepper and checked_observer to implement
the checking facility. Not that this means the integrate implementations in
detail::integrate_times have no knowledge on the checkers at all.
generate function now support additional max_dt parameter for setting the set
size limit.
Added a test case to check limiter behavior for controlled and dense out
integration.
Following the discussion in #173, the integrate_const function now
provide a mechanisms to check for TOO_MUCH_WORK situations where too
many steps are performed without any progress (i.e. observer calls).
Naturally, this only makes sense for controlled steppers or dense
output steppers.
Also, integrate_adaptive functions do not require such functionality as
there observer calls happen at every time step.
Hence, only integrate_n_steps and integrate_times will be adapted shortly
fixed bug in less_eq_with_sign. equality was not correctly checked for, which
resulted in wrong behavior when the numeric type had
std::numeric_limits<T>::epsilon() == 0.
The Adams-Bashforth-Moulton stepper has now also the initializing stepper
as a template parameter.
This allows to get rid of the specific test case for multi-step methods in
order_quadrature_formula. Furthermore, some cosmetic adjustments were made in
this test: global variables, camel case naming, while loop -> for loop.
* state_type is now a double
* rhs is global
* p is a member of rhs, called exponent
* 'main loop' is of the form
do{ exponent++; ... } while ( error < tolerance );
when state_type == time_type (e.g. 1d odes with state_type = double), some
do_step overloads are disabled due to ambiguities of parameter structure.
However, the initialization of the Adams-Bashforth needs some of those
disabled functions in its initialization. As a fix, I added do_step_dxdt to
the stepper base classes to provide direct access to the required functions
that will not be disabled in the case of state_type == time_type.
This test checks, wether solvers of order ord can solve the problem
x'(t) = 1 + t^p
for p<ord with a very high accuracy (10^-13).
This should be the case for linear solvers, see
https://github.com/headmyshoulder/odeint-v2/issues/145
for a discussion about this topic.
The Adams-Bashforth-Moulton stepper called the corrector step with the wrong time value, as pointed out by GregorDeCillia in Issue #144. This commit fixes this bug and adds a test to check the correct behavior.