12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #ifndef BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_GENERATION_CONTROLLED_RUNGE_KUTTA_HPP_INCLUDED
- #define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_GENERATION_CONTROLLED_RUNGE_KUTTA_HPP_INCLUDED
- #include <boost/numeric/odeint/stepper/controlled_runge_kutta.hpp>
- #include <boost/numeric/odeint/stepper/generation/make_controlled.hpp>
- namespace boost {
- namespace numeric {
- namespace odeint {
- template< class Stepper >
- struct controller_factory< Stepper , controlled_runge_kutta< Stepper > >
- {
- typedef Stepper stepper_type;
- typedef controlled_runge_kutta< stepper_type > controller_type;
- typedef typename controller_type::error_checker_type error_checker_type;
- typedef typename controller_type::step_adjuster_type step_adjuster_type;
- typedef typename stepper_type::value_type value_type;
- typedef typename stepper_type::value_type time_type;
- controller_type operator()( value_type abs_error , value_type rel_error , const stepper_type &stepper )
- {
- return controller_type( error_checker_type( abs_error , rel_error ) ,
- step_adjuster_type() , stepper );
- }
- controller_type operator()( value_type abs_error , value_type rel_error ,
- time_type max_dt, const stepper_type &stepper )
- {
- return controller_type( error_checker_type( abs_error , rel_error ) ,
- step_adjuster_type(max_dt) , stepper );
- }
- };
- }
- }
- }
- #endif
|