Changes between Version 10 and Version 11 of SoC2016
- Timestamp:
- Feb 11, 2016, 11:44:29 AM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoC2016
v10 v11 203 203 204 204 205 === 2. Boost.odeint Implicit Routines===205 === 2. Boost.odeint === 206 206 Potential mentors: Karsten Ahnert and Mario Mulansky 207 207 208 208 ==== 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. 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 [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 ==== 210 212 211 213 The 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. … … 215 217 * [http://en.wikipedia.org/wiki/Explicit_and_implicit_methods] 216 218 217 ==== GSoC project proposal ====218 219 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. 219 220 … … 225 226 * (Add more implicit routines, if time permits) 226 227 228 ==== Project 2: Event Detection ==== 229 230 Currently, 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 232 The 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 227 240 === 3. Boost.Python improvements === 228 241 Potential mentor: Stefan Seefeld