Software Design Patterns in Research Software with Examples from OpenFOAM

Series: HPC Best Practices Webinars

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.


Presenter Bio

Tomislav Maric studied Mechanical Engineering at the University of Zagreb, Croatia, and has obtained his Ph.D. degree at the Institute for Mathematical Modeling and Analysis (MMA), Mathematics Department, at TU Darmstadt (Germany) and is currently working at TU Darmstadt as Athene Young Investigator. Tomislav has been developing unstructured Lagrangian / Eulerian Interface Approximation (LEIA) methods for simulating two-phase flows in the OpenFOAM open-source software since 2008. As a member of the Collaborative Research Center 1194 (CRC) at TU Darmstadt, he supports CRC-1194 researchers in developing research software and data.