We want you to improve SU2!
The SU2 community continues to grow rapidly, and together, we are making a measurable, worldwide impact on CFD. Now it's time to tap into our collective expertise, creativity, and coding skills to take SU2 to the next level.
With the code hosted on GitHub and the version 3.0 release under our belts, SU2 is now in prime position for the next major wave of development, and we want it to include contributions from developers all over the globe. Simply put, we want your help in adding new features to your favorite open-source CFD suite!
Below, you will find information regarding some important contributions that we believe are ripe for implementation in SU2 with a little help from the open-source community. We want to hear from any developers out there with an interest in tackling these topics or others (innovative ideas encouraged)! Please contact our developer email list (firstname.lastname@example.org), and we can help get you started.
Finally, if you have already implemented exciting, new features in SU2 and want them included in the main source code repository, please let us know! All approved contributions will be clearly acknowledged.
1) A Graphical User Interface (GUI) for SU2
With so many available options, setting up a configuration file can sometimes be an obstacle to your analysis. SU2 would benefit significantly from a graphical interface to ease the creation and manipulation of configuration files. We welcome you to use the script config_gui.py, which can be found in the SU2_PY/ subdirectory, as an example or a starting point. Some requested features for a GUI are:
- Minimal use of external libraries (easy to install).
- Attractive, intuitive, and discoverable visual design.
- Easily adaptable to changes in the configuration file format or options.
2) Expanded Support for the CGNS Standard
We believe that open data formats are important, and with that in mind, we would like to further expand our support for the CFD General Notation System (CGNS) Standard. The current version of SU2 accepts CGNS unstructured, single-block meshes for input, and CGNS output is also supported, although these features could be expanded. For example, the current implementation generates a new file for output rather than writing solution data into the original CGNS input file. This would reduce disk storage, improve performance, and also make it easier to interface SU2 with other pre- and post-processors. Some ideas might be:
- Verify that CGNS files exported from your favorite meshing package work with SU2.
- Implement an HDF5 based CGNS reader/writer.
- Add full support for mixed-element and multi-zone unstructured meshes.
- Streamline file I/O by reusing the original mesh file for solution output.
3) Extended Documentation
Clear documentation is one of the most important features of the code, and it provides the fastest way to get up to speed with SU2. We would like your help improving the general documentation of SU2. In particular, we would appreciate contributions in the following areas:
- Expanded tutorials: we would like additional tutorials that complement the existing set found in the web-based documentation. The tutorials can either detail and explain the functionality of SU2 (shape optimization, parallel computing, mesh deformation, etc.) or demonstrate general CFD knowledge (highlighting good meshes vs. bad meshes, the importance of CFL number, etc.). Tutorials are intended to be tools for teaching and learning, and they should follow the same style as the existing tutorials. They must provide any mesh or config files that are necessary for their completion. New or unique verification and validation cases would be of particular interest here.
- Source code: help us increase the legibility of the SU2 source code either by providing further comments within the code or by highlighting code portions that are unclear. Specific additional comments (or wording changes) should be sent to us via GitHub pull requests. Those wishing to make requests for added clarity in particular source locations can use the github issue tracker. Please be specific on comment requests.
4) Additional Ideas
- Memory layout optimization
- Binary versions for mesh/restart files
- Additional turbulence models
- Implementation of parallel decomposition via ParMETIS
- Interfaces to PETSC or other linear solvers
- OpenMP implementation (within the linear solver only)
- Code performance profiling/optimization
- Python wrapping
- Interfaces to external geometry engines
- Posing open-source analysis and design problems
- Sharing test cases and/or meshes
- Your own great idea?