123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #ifndef BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_CONTROLLED_HPP_INCLUDED
- #define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_CONTROLLED_HPP_INCLUDED
- namespace boost {
- namespace numeric {
- namespace odeint {
- template< class Stepper > struct get_controller { };
- template< class Stepper , class Controller >
- struct controller_factory
- {
- Controller operator()(
- typename Stepper::value_type abs_error ,
- typename Stepper::value_type rel_error ,
- const Stepper &stepper )
- {
- return Controller( abs_error , rel_error , stepper );
- }
- Controller operator()(
- typename Stepper::value_type abs_error ,
- typename Stepper::value_type rel_error ,
- typename Stepper::time_type max_dt ,
- const Stepper &stepper )
- {
- return Controller( abs_error , rel_error , max_dt, stepper );
- }
- };
- namespace result_of
- {
- template< class Stepper >
- struct make_controlled
- {
- typedef typename get_controller< Stepper >::type type;
- };
- }
- template< class Stepper >
- typename result_of::make_controlled< Stepper >::type make_controlled(
- typename Stepper::value_type abs_error ,
- typename Stepper::value_type rel_error ,
- const Stepper & stepper = Stepper() )
- {
- typedef Stepper stepper_type;
- typedef typename result_of::make_controlled< stepper_type >::type controller_type;
- typedef controller_factory< stepper_type , controller_type > factory_type;
- factory_type factory;
- return factory( abs_error , rel_error , stepper );
- }
- template< class Stepper >
- typename result_of::make_controlled< Stepper >::type make_controlled(
- typename Stepper::value_type abs_error ,
- typename Stepper::value_type rel_error ,
- typename Stepper::time_type max_dt ,
- const Stepper & stepper = Stepper() )
- {
- typedef Stepper stepper_type;
- typedef typename result_of::make_controlled< stepper_type >::type controller_type;
- typedef controller_factory< stepper_type , controller_type > factory_type;
- factory_type factory;
- return factory( abs_error , rel_error , max_dt, stepper );
- }
- }
- }
- }
- #endif
|