Changes between Version 10 and Version 11 of SoC2016


Ignore:
Timestamp:
Feb 11, 2016, 11:44:29 AM (7 years ago)
Author:
mariomulansky
Comment:

added event detection odeint project

Legend:

Unmodified
Added
Removed
Modified
  • SoC2016

    v10 v11  
    203203
    204204
    205 === 2. Boost.odeint Implicit Routines ===
     205=== 2. Boost.odeint ===
    206206Potential mentors: Karsten Ahnert and Mario Mulansky
    207207
    208208==== Background ====
    209 Boost.odeint  http://www.odeint.com is a library devoted to finding numerical solutions of ordinary differential equations (ODEs). It is developed in a generic way using Template Metaprogramming which leads to extraordinary high flexibility at top performance. It is widely used in academic and industrial projects. Boost.odeint has been a Google Summer of Code project in 2011  http://google-melange.appspot.com/gsoc/project/google/gsoc2011/mulansky/14001 and we would like again to see students involved in the development of this numerical library.
     209Boost.odeint  http://www.odeint.com is a library devoted to finding numerical solutions of ordinary differential equations (ODEs). It is developed in a generic way using Template Metaprogramming which leads to extraordinary high flexibility at top performance. It is widely used in academic and industrial projects. Boost.odeint has been a Google Summer of Code project in [http://google-melange.appspot.com/gsoc/project/google/gsoc2011/mulansky/14001 2011] and [https://www.google-melange.com/gsoc/project/details/google/gsoc2013/earnocks/5872285445521408 2013] and we would like again to see students involved in the development of this numerical library.
     210
     211==== Project 1: Implicit Routines ====
    210212
    211213The current focus of odeint is on '''explicit''' routines, namely the Runge-Kutta schemes or the multi-step methods. However, we would like to expand odeint by adding implicit routines in the same flexible manner. Implicit routines are important when dealing with stiff systems, but also ensure stability in some cases of discretized partial differential equations (PDEs). At the moment, odeint provides an implicit Euler and Rosenbrock algorithm, but the implementation is restricted to Boost.uBlas. As one of the main objectives of odeint is to provide highly flexible algorithms, we want to change this implementation to have a greater flexibility and interchangeability similar to that of the explicit routines. This project would not only require pure coding, but first also a considerable amount of design work.
     
    215217* [http://en.wikipedia.org/wiki/Explicit_and_implicit_methods]
    216218
    217 ==== GSoC project proposal ====
    218219This project does not only require profound knowledge on C++ and generic programming, but we would also like to see some experience on numerical algorithms and solving ODEs, if possible.
    219220
     
    225226 * (Add more implicit routines, if time permits)
    226227
     228==== Project 2: Event Detection ====
     229
     230Currently, Boost.odeint does not offer specific functionality for event detection. However, this is a common use-case and has been discussed on the [https://github.com/headmyshoulder/odeint-v2/issues/9 odeint Github page] in the past. Some examplary implementation of an event-detection algorithm was added recently as [https://github.com/headmyshoulder/odeint-v2/commit/766d2cb0631b89f8f7f5c8187b792a216e691bd9#diff-8cd5c8387c683493559d40540e0a4f0c an example]. On the other hand, sophisticated event detection algorithms have been explored in the context of [http://www.sciencedirect.com/science/article/pii/0167278982900343 computing Poincare sections]. The fundamental task of this project, however, is to develop a clean, generic interface to incorporate event detection algorithms into the existing structure of Boost.odeint.
     231
     232The project requires profound knowledge of C++ and generic programming, as well as a good understanding of Boost.odeint and ODE simulations and numerical algorithms.
     233
     234 * Design an interface to incorporate event detection into Boost.odeint
     235 * Prototypical implementation and testing the usability of the design in several use cases
     236 * Implementation of sophisticated algorithms for event detection
     237 * Documentation and examples
     238
     239
    227240=== 3. Boost.Python improvements ===
    228241Potential mentor: Stefan Seefeld