Boost logo

Boost :

Subject: Re: [boost] Fwd: ODEInt review
From: Karsten Ahnert (karsten.ahnert_at_[hidden])
Date: 2012-10-02 15:15:04


Hi Freg,

thank you for your review-

On 10/02/2012 08:15 PM, Steven Watanabe wrote:
>
>
> -------- Original Message --------
> Subject: ODEInt review
> Date: Wed, 26 Sep 2012 11:48:18 -0400
> From: Reese, Greg Dr. <greg.reese_at_[hidden]>
> To: watanabesj_at_[hidden] <watanabesj_at_[hidden]>
> CC: Reese, Greg Dr. <greg.reese_at_[hidden]>
>
> Please always state in your review, whether you think the library should
> be accepted as a Boost library!
>
> Absolutely!
>
>
>
> - What is your evaluation of the design?
>
> Good. Good use of policies
>
>
>
> Is it necessary to set an initial step size on the adaptive integrators?
> Shouldn't they be able to
>
> figure this out on their own? If the size is needed, maybe it could have
> a default value so the
>
> user doesn't have to pass the argument.

In principle you are right. But I think an initial guess for the step
size is not such a bad idea. (There are methods for choosing an initial
guess of the step size). If the step size is to large it will simply we
decreased.

>
> - What is your evaluation of the documentation?
>
> Excellent! Probably the best documentation of any Boost library.

Thank you.

>
> Suggestions:
>
> 1) Add general explanation of "observers", e.g., what they do, sample uses.

Ok, good point. We had initially a concept section for observer, but it
is not a real concept. We can introduce
>
> 2) In documentation of example programs, add plots of outputs. These
> help users decide
>
> if the program ran correctly and if they're interpreting the outputs
> correctly

Ok, also good point. I will put this on our todo list.

>
[snip]
>
> Suggestion for future (not current!) version - add capability for user
> routines to stop the
>
> Integration process. This is useful for breaking out of periodic
> solutions, for stopping
>
> the computations if the solution attains meaningless values, and for
> limiting the amount
>
> of running time. See, for example, "Event Location" at
> http://www.mathworks.com/help/matlab/math/ordinary-differential-equations.html#f1-669698

Right, there was a question some minutes ago on the boost users list
about the same topic. I think we will think about a feature like this.

In the mean time you can use the iterators or range of odeint in
combination with a find_if

boost::find_if( make_const_step_range(
    stepper , sys , state , t_start , t_end , dt ) ,
    []( const state_type &x ) { // your break condition } );


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk