How to Contribute
DUNE is a community project and we are happy about all forms of external contributions. There are many easy things that you can do, like
- read the documentation and tell us where and how it should be improved,
- try to install DUNE on your platform and report bugs if it doesn’t work,
- fix bugs and send us patches.
If you decide to contribute code please head to our GitLab Instance and get an account there. Please read the contribution guide shown by GitLab in all the core modules.
Google Summer of Code
In 2013 Dune participated in GSoC as a mentoring organization for the first time.
In 2016, we were selected a second time. The 2016 projects were:
- Xinyun is working on a grid with spline geometries using B-spline and NURBS geometries. Checkout the screenshots with according surfaces. Usually we don’t see such smooth output with our methods. Blog: http://gsoc2016xinyun.blogspot.de Code repository: https://gitlab.dune-project.org/Xinyun.Li/dune-iga
- Michael is developing Python bindings for the DUNE grid interface. As an example, he implemented a cell-centered finite volume in Python, inspired by the corresponding example in the DUNE grid how-to, using his bindings. Blog: http://misg.github.io/ Code repository: https://gitlab.dune-project.org/michael.sghaier/dune-corepy
Both projects were succesful. We greatly appreciate the work put into our codebase by the GSOC students.
The following is a list of things that we find interesting but that we probably will never have the time to do ourselves.
- Write an improved parallel ILU preconditioner, following the approach proposed in http://www.cc.gatech.edu/~echow/pubs/parilu-sisc.pdf
- Implement an incomplete Cholesky preconditioner, to improve efficiency for symmetric matrices.
- Design and implement a special matrix class, to store symmetric matrices, reducing the memory footprint.
- Write a module with language bindings for dune-grid for languages other than C++. Especially Python would be interesting.
- Implement iterators over edges and faces in UGGrid. The challenge here is that, unlike elements and vertices, edges and faces don’t exist as separate objects within UG.
Tutorials are a good way to get started with Dune. A good tutorial for dune-istl would be of great help.
- Invent a mechanism that extracts all finite element implementations from dune-localfunctions (plus their doxygen documentation), and renders them into a LaTeX document. This document should then in turn become a reference section in the dune-localfunctions tutorial. It seems that the doxygen-LaTeX functionality is too limited for this. You may have to play around with the XML feature of doxygen. See the brief discussion in .
Additional Grid Backends
- Write a wrapper for the Racoon II grid manager. This is a parallel AMR grid manager for 2d and 3d.
- Write a wrapper for the AmRoc grid manager. This is another AMR manager. Some initial work has been done. Ask on the mailing list for details.
- Write a parallel AMR grid manager that works in more than three space dimensions.
- Write a structured simplex grid for rectangular domains. 2d and 3d would be great, the brave can implement Freudenthal’s algorithm for a general n-d simplex grid.
Meta grids are DUNE grids which are parametrized by another grid. An example is SubGrid, which allows you to select a subset of elements of a DUNE grid and treat this subset as a grid in its own right. Here are a few other ideas for meta grids which may be useful.
- Write a meta grid which, given an affine grid with a parametrized boundary, yields an isoparametric approximation of the boundary.