| 108 | === Boost.odeint === |
| 109 | |
| 110 | Boost.odeint [http://www.odeint.com] is a library devoted to finding numerical solutions of ordinary differential equations (ODEs). |
| 111 | It is developed in a generic way using Template Metaprogramming which leads to extraordinary high flexibility at top performance. |
| 112 | It is widely used in academic and industrial projects. |
| 113 | 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. |
| 114 | Therefore, we offer the two following projects: |
| 115 | |
| 116 | ==== Implicit Routines ==== |
| 117 | |
| 118 | The current focus of odeint is on '''explicit''' routines, namely the Runge-Kutta schemes or the multi-step methods. |
| 119 | However, we would like to expand odeint by adding implicit routines in the same flexible manner. |
| 120 | Implicit routines are important when dealing with ''stiff'' systems, but also ensure stability in some cases of discretized partial differential equations (PDEs). |
| 121 | At the moment, odeint provides an implicit Euler and Rosenbrock algorithm, but the implementation is restricted to Boost.uBlas. |
| 122 | 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. |
| 123 | This project would not only require pure coding, but first also a considerable amount of design work. |
| 124 | * Develop a design on how the requirements on implicit routines can be modularized |
| 125 | * Implement a prototype showing the usability of the design |
| 126 | * Change the existing routines to the new design |
| 127 | * Implement other backends (MTL, eigen,...) to demonstrate the flexibility |
| 128 | * Provide examples and documentation |
| 129 | * (Add more implicit routines, if time permits) |
| 130 | |
| 131 | This 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. |
| 132 | |
| 133 | The project will be mentored by Karsten Ahnert and Mario Mulansky. |
| 134 | |
| 135 | * [http://en.wikipedia.org/wiki/Numerical_methods_for_ordinary_differential_equations] |
| 136 | * [http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods] |
| 137 | * [http://en.wikipedia.org/wiki/Explicit_and_implicit_methods] |
| 138 | |