Opened 8 years ago

Closed 5 years ago

#10498 closed Bugs (fixed)

Boost.Odeint: Infinite loop in integrate_adaptive with rosenbrock4 dense output stepper

Reported by: vygis.d@… Owned by: karsten
Milestone: To Be Determined Component: odeint
Version: Boost 1.56.0 Severity: Problem
Keywords: infinite loop, integrator algorithm Cc:

Description

Problem description:

integrate_adaptive goes into infinite loop with rosenbrock4 dense stepper.

After the call to

st.initialize( st.current_state() , st.current_time() , static_cast<Time>(end_time - st.current_time()) );

Loop condition

while( less_eq_with_sign( static_cast<Time>(st.current_time() + st.current_time_step()) ,

end_time , st.current_time_step() ) )

evaluates to false, when t1-t2 < std::numeric_limits<T>::epsilon(); is evaluated.

Expected behaviour:

No infinite loops for any well behaving (albeit stiff) system.

Change History (2)

in reply to:  description comment:1 by karsten, 8 years ago

Does this problem still exists for you with boost version > 1.56 ? There are checks for numeric limits within less_eq_with_sign .

Replying to vygis.d@…:

Problem description:

integrate_adaptive goes into infinite loop with rosenbrock4 dense stepper.

After the call to

st.initialize( st.current_state() , st.current_time() , static_cast<Time>(end_time - st.current_time()) );

Loop condition

while( less_eq_with_sign( static_cast<Time>(st.current_time() + st.current_time_step()) ,

end_time , st.current_time_step() ) )

evaluates to false, when t1-t2 < std::numeric_limits<T>::epsilon(); is evaluated.

Expected behaviour:

No infinite loops for any well behaving (albeit stiff) system.

comment:2 by mariomulansky, 5 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.