From 2ea2fad09fac5271fd4367a9d302cb65eb764cc9 Mon Sep 17 00:00:00 2001 From: Christoph Koke Date: Thu, 12 Apr 2012 13:57:44 +0200 Subject: [PATCH] added std::ref & std::bind support --- .../integrate/detail/integrate_adaptive.hpp | 8 +- .../integrate/detail/integrate_n_steps.hpp | 7 +- .../integrate/detail/integrate_times.hpp | 7 +- .../odeint/stepper/adams_bashforth.hpp | 15 ++-- .../stepper/adams_bashforth_moulton.hpp | 3 +- .../numeric/odeint/stepper/adams_moulton.hpp | 11 ++- .../base/explicit_error_stepper_base.hpp | 11 ++- ...xplicit_stepper_and_error_stepper_base.hpp | 19 +++-- ...it_stepper_and_error_stepper_fsal_base.hpp | 13 ++- .../stepper/base/explicit_stepper_base.hpp | 11 ++- .../base/symplectic_rkn_stepper_base.hpp | 53 ++++++------ .../numeric/odeint/stepper/bulirsch_stoer.hpp | 17 ++-- .../stepper/bulirsch_stoer_dense_out.hpp | 13 ++- .../odeint/stepper/controlled_runge_kutta.hpp | 29 ++++--- .../stepper/dense_output_runge_kutta.hpp | 9 +-- .../stepper/detail/generic_rk_algorithm.hpp | 3 +- .../stepper/explicit_error_generic_rk.hpp | 4 +- .../odeint/stepper/explicit_generic_rk.hpp | 5 +- .../numeric/odeint/stepper/implicit_euler.hpp | 11 ++- .../odeint/stepper/modified_midpoint.hpp | 8 +- boost/numeric/odeint/stepper/rosenbrock4.hpp | 15 ++-- .../odeint/stepper/rosenbrock4_controller.hpp | 7 +- .../stepper/rosenbrock4_dense_output.hpp | 5 +- .../odeint/stepper/runge_kutta4_classic.hpp | 5 +- .../runge_kutta_cash_karp54_classic.hpp | 7 +- .../odeint/stepper/runge_kutta_dopri5.hpp | 7 +- boost/numeric/odeint/util/bind.hpp | 80 +++++++++++++++++++ 27 files changed, 221 insertions(+), 162 deletions(-) create mode 100644 boost/numeric/odeint/util/bind.hpp diff --git a/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp b/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp index 660984ca..c2db1d9f 100644 --- a/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp +++ b/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp @@ -23,9 +23,9 @@ #include #include #include +#include #include -#include #include @@ -58,7 +58,7 @@ size_t integrate_adaptive( { //make a last step to end exactly at end_time stepper.do_step( system , start_state , end , end_time - end ); steps++; - typename boost::unwrap_reference< Observer >::type &obs = observer; + typename detail::unwrap_reference< Observer >::type &obs = observer; obs( start_state , end_time ); } return steps; @@ -75,7 +75,7 @@ size_t integrate_adaptive( Observer observer , controlled_stepper_tag ) { - typename boost::unwrap_reference< Observer >::type &obs = observer; + typename detail::unwrap_reference< Observer >::type &obs = observer; const size_t max_attempts = 1000; const char *error_string = "Integrate adaptive : Maximal number of iterations reached. A step size could not be found."; @@ -116,7 +116,7 @@ size_t integrate_adaptive( Time start_time , Time end_time , Time dt , Observer observer , dense_output_stepper_tag ) { - typename boost::unwrap_reference< Observer >::type &obs = observer; + typename detail::unwrap_reference< Observer >::type &obs = observer; size_t count = 0; stepper.initialize( start_state , start_time , dt ); diff --git a/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp b/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp index e2a7a937..1f722512 100644 --- a/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp +++ b/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp @@ -20,7 +20,6 @@ #include #include #include -#include namespace boost { namespace numeric { @@ -43,7 +42,7 @@ Time integrate_n_steps( Time start_time , Time dt , size_t num_of_steps , Observer observer , stepper_tag ) { - typename boost::unwrap_reference< Observer >::type &obs = observer; + typename detail::unwrap_reference< Observer >::type &obs = observer; Time time = start_time; @@ -68,7 +67,7 @@ Time integrate_n_steps( Time start_time , Time dt , size_t num_of_steps , Observer observer , controlled_stepper_tag ) { - typename boost::unwrap_reference< Observer >::type &obs = observer; + typename detail::unwrap_reference< Observer >::type &obs = observer; Time time = start_time; Time time_step = dt; @@ -95,7 +94,7 @@ Time integrate_n_steps( Time start_time , Time dt , size_t num_of_steps , Observer observer , dense_output_stepper_tag ) { - typename boost::unwrap_reference< Observer >::type &obs = observer; + typename detail::unwrap_reference< Observer >::type &obs = observer; Time time = start_time; const Time end_time = start_time + static_cast< typename detail::unit_value_type