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]>
=== 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
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
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.
--- André Bergner
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk