Software Design Patterns in Research Software with Examples from OpenFOAM

The IDEAS Productivity project, in partnership with the DOE Computing Facilities of the ALCF, OLCF, and NERSC, and the DOE Exascale Computing Project (ECP), organizes the webinar series on Best Practices for HPC Software Developers.

As part of this series, we offer one-hour webinars on topics in scientific software development and high-performance computing, approximately once a month. The March webinar is titled Software Design Patterns in Research Software with Examples from OpenFOAM; and will be presented by Tomislav Maric (TU Darmstadt). The webinar will take place on Wednesday, March 9, 2022 at 1:00 pm ET.


Combining sub-algorithms to develop robust, scalable, and convergent numerical methods carries with itself a high level of uncertainty. Extensive automatic testing reduces this uncertainty for methods whose properties cannot be proven mathematically in all application scenarios – basically, most numerical methods. Methods with a more solid theoretical basis still require extensive testing since the jump between theory and practice is often challenging. The ability to select numerical sub-algorithms and combine them easily at runtime, speeds up research immensely. Software Design Patterns already very successfully address the requirements of runtime selection and algorithm combinations and are staples of modern Software Engineering. This webinar covers a handful of beneficial Software Design Patterns that provide a solid basis for developing numerical methods in a modular way – drawing concrete examples from OpenFOAM, a highly modular open-source software for Computational Fluid Dynamics.