diff options
Diffstat (limited to 'boost/numeric/odeint/stepper/generation/make_dense_output.hpp')
-rw-r--r-- | boost/numeric/odeint/stepper/generation/make_dense_output.hpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/boost/numeric/odeint/stepper/generation/make_dense_output.hpp b/boost/numeric/odeint/stepper/generation/make_dense_output.hpp new file mode 100644 index 0000000000..a28e31b5d2 --- /dev/null +++ b/boost/numeric/odeint/stepper/generation/make_dense_output.hpp @@ -0,0 +1,78 @@ +/* + [auto_generated] + boost/numeric/odeint/stepper/generation/make_dense_output.hpp + + [begin_description] + Factory function to simplify the creation of dense output steppers from error steppers. + [end_description] + + Copyright 2011-2012 Karsten Ahnert + Copyright 2011-2012 Mario Mulansky + + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or + copy at http://www.boost.org/LICENSE_1_0.txt) + */ + + +#ifndef BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_DENSE_OUTPUT_HPP_INCLUDED +#define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_DENSE_OUTPUT_HPP_INCLUDED + +namespace boost { +namespace numeric { +namespace odeint { + + +// default template for the dense output +template< class Stepper > struct get_dense_output { }; + + + +// default dense output factory +template< class Stepper , class DenseOutput > +struct dense_output_factory +{ + DenseOutput operator()( + typename Stepper::value_type abs_error , + typename Stepper::value_type rel_error , + const Stepper &stepper ) + { + return DenseOutput( abs_error , rel_error , stepper ); + } +}; + + + +namespace result_of +{ + template< class Stepper > + struct make_dense_output + { + typedef typename get_dense_output< Stepper >::type type; + }; +} + + + +template< class Stepper > +typename result_of::make_dense_output< Stepper >::type make_dense_output( + 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_dense_output< stepper_type >::type dense_output_type; + typedef dense_output_factory< stepper_type , dense_output_type > factory_type; + factory_type factory; + return factory( abs_error , rel_error , stepper ); +} + + + + +} // odeint +} // numeric +} // boost + + +#endif // BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_DENSE_OUTPUT_HPP_INCLUDED |