| Home | Libraries | People | FAQ | More

## Class template modified_midpoint_dense_out

boost::numeric::odeint::modified_midpoint_dense_out

## Synopsis

    // In header: <boost/numeric/odeint/stepper/modified_midpoint.hpp>

    template<typename State, typename Value = double, typename Deriv = State,
             typename Time = Value,
             typename Algebra = typename algebra_dispatcher< State >::algebra_type,
             typename Operations = typename operations_dispatcher< State >::operations_type,
             typename Resizer = initially_resizer>
    class modified_midpoint_dense_out {
    public:
      // types
      typedef State                                                                                  state_type;
      typedef Value                                                                                  value_type;
      typedef Deriv                                                                                  deriv_type;
      typedef Time                                                                                   time_type;
      typedef Algebra                                                                                algebra_type;
      typedef Operations                                                                             operations_type;
      typedef Resizer                                                                                resizer_type;
      typedef state_wrapper< state_type >                                                            wrapped_state_type;
      typedef state_wrapper< deriv_type >                                                            wrapped_deriv_type;
      typedef modified_midpoint_dense_out< State, Value, Deriv, Time, Algebra, Operations, Resizer > stepper_type;
      typedef std::vector< wrapped_deriv_type >                                                      deriv_table_type;

      // public member functions
      modified_midpoint_dense_out(unsigned short = 2,
                                  const algebra_type & = algebra_type());
      template<typename System, typename StateIn, typename DerivIn,
               typename StateOut>
        void do_step(System, const StateIn &, const DerivIn &, time_type,
                     StateOut &, time_type, state_type &, deriv_table_type &);
      void set_steps(unsigned short);
      unsigned short steps(void) const;
      template<typename StateIn> bool resize(const StateIn &);
      template<typename StateIn> void adjust_size(const StateIn &);
    };

## Description

Implementation of the modified midpoint method with a configurable number of intermediate steps. This class is used by the dense output Bulirsch-Stoer algorithm and is not meant for direct usage.

| Note
This stepper is for internal use only and does not meet any stepper concept.

### `modified_midpoint_dense_out` public member functions

1.     modified_midpoint_dense_out(unsigned short steps = 2,
                                   const algebra_type & algebra = algebra_type());

2.     template<typename System, typename StateIn, typename DerivIn,
                typename StateOut>
         void do_step(System system, const StateIn & in, const DerivIn & dxdt,
                      time_type t, StateOut & out, time_type dt, state_type & x_mp,
                      deriv_table_type & derivs);

3.     void set_steps(unsigned short steps);

4.     unsigned short steps(void) const;

5.     template<typename StateIn> bool resize(const StateIn & x);

6.     template<typename StateIn> void adjust_size(const StateIn & x);