Boost logo

Boost :

Subject: [boost] Fwd: [Review] ODEint review
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2012-10-02 14:28:59


-------- Original Message --------
Subject: [Review] ODEint review
Date: Fri, 28 Sep 2012 22:56:56 +0200
From: André Bergner <andre.bergner.0_at_[hidden]>
To: boost_at_[hidden]
CC: watanabesj_at_[hidden]

=== ODEINT REVIEW ===

   I vote for 'YES'. The library ODEint should be
   accepted and integrated into boost.

   Boost features many scientific/numeric applications
   already. Differential equations are fundamental enough
   to be added to boost's math/numeric category and
   enhance the scientific use cases of boost.

_____________________________________________
What is your evaluation of the design?

   ODEint features a modern C++ (concept based as
   opposed to of polymorphism) which improves performance
   and flexibility tremendously.

   It demonstrates very well the power of a functional
   programming style - algorithms and containers are
   separated strictly. In particular parallelization
   comes almost for free by 'just' changing the container
   type. This is one very nice feature I like a lot.

   The design allows inter-portability to a great extend.
   Pretty much everything can be exchanged and adapted
   to specific needs.

_____________________________________________
What is your evaluation of the implementation?

   I did not dive into all the internals deeply. But
   from what I've seen ODEint is well implemented
   and its internal structure make sense. Here the
   well designed interface helps the internals to be
   structured clearly as well.

_____________________________________________
What is your evaluation of the documentation?

   The documentation is pretty good. It is covering
   many use-cases in detail and demonstrates the high
   flexibility of ODEint (CUDE/thrust, etc.) with many
   examples (missing a lot in some other boost libs).
   It becomes clear how it is used and what can be done
   with it.

   Nevertheless, for somebody not familiar with the topic
   of differential equations the purpose of the library
   is unclear from a quick glance into the overview.
   I would extend the overview with a short introduction
   (one or two paragraphs, links to wikipedia) of the
   topic, especially with some demonstrative example in
   words (e.g. physics engine in computer games or
   something similar).

   Concerning a more technical detail of the lib,
   I would like to have one large html file instead of
   many linked small ones. This would improve reading
   and in particular searching a lot. Btw., this is also
   true for many other boost libraries.

   I miss some notes about ODEint and C++11 (e.g.
   some obvious such as lambda should be mentioned, what
   about literals as units). Further, from a mathematical
   point of view also some comments about the application
   to partial differential equations would be useful. For
   somebody with experience in the field this might be
   obvious but for a beginner this would be helpful.

_____________________________________________
What is your evaluation of the potential
usefulness of the library?

   ODEint has many applications in a huge amount of
   scientific and engineering fields. It has the potential to
   become the de-facto standard for solving ODEs and
   high performance computing.

   Further, some less obvious use-cases might be:
   particle systems (quite popular in entertainment apps
   these days), network layout algorithm, etc...

   Within its field of application this library is very
   feature complete and can compete with many standard
   libs (matlab, python, ...) with ease. I think that
   ODEint makes the best compromise between simplicity
   in use and computational performance while not giving
   up general flexibility. It also features many things
   (error correction, symplectic methods, ...) not present
   in many competing libraries.

_____________________________________________
Did you try to use the library? With what
compiler? Did you have any problems?

   I was using the library for quite some time with
   several compilers (gnu, clang, intel).

_____________________________________________
How much effort did you put into your evaluation?
A glance? A quick reading? In-depth study?

   I was using the library one year age intensively.
   However, within this year I was not using it due
   to a different working field of mine. But I was
   following its improvements.

_____________________________________________
Are you knowledgeable about the problem domain?

   Yes, I used the library extensively. I was successfully
   combining it with boost::graph to integrate network
   of coupled differential equations.

Best regards,
--- André Bergner


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