Opened 5 years ago

#13325 new Bugs

boost::numeric::odeint::dense_output_runge_kutta call a non-existign function "resize"

Reported by: Koichi Owned by: karsten
Milestone: To Be Determined Component: odeint
Version: Boost 1.65.0 Severity: Problem
Keywords: Cc:

Description

I failed the compile of the following code.

source:

#include<vector>
#include<boost/numeric/odeint.hpp>

int main(void) {
        namespace odeint = boost::numeric::odeint;
        using state_type = std::vector<double>;

        auto Stepper = odeint::make_dense_output(0.001, 0.001, odeint::runge_kutta_dopri5<state_type>());

        state_type State{ 1.0,1.0 };
        Stepper.adjust_size(State);

        return 0;
}

output:

error C2039: 'resize': 'boost::numeric::odeint::runge_kutta_dopri5<state_type,double,State,Value,boost::numeric::odeint::algebra_dispatcher_sfinae<StateType,void>::algebra_type,boost::numeric::odeint::operations_dispatcher_sfinae<StateType,void>::operations_type,boost::numeric::odeint::initially_resizer>' is not a member.

This seems to be caused because odeint::dense_output_runge_kutta calls a non-existing function "resize" instead of "adjust_size" of the base stepper.

boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp

  //boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp
  //Line 378-383
  template< class StateType >
  void adjust_size( const StateType &x )
  {
      resize( x );
      m_stepper.stepper().resize( x );  //not resize but adjust_size?
  }

Change History (0)

Note: See TracTickets for help on using tickets.