Reusable object oriented design techniques for a high performance multi-physics and multi-method framework.
In the scientific field, it often happens that a researcher or a team of researchers start writing a software package in order to tackle some specific problems. When new problems arise or new methodologies to solve problems are developed, one has to choose between adding new features into an existing code or writing a new one from scratch. In both cases, reusability and extensibility of the software become extremely advantageous for easing the job of the developers. This seminar presents a number of object oriented design techniques which were targeted towards scientific computing applications and developed with the aim of easing the integration of new functionalities such as arbitrary mesh-based data structures, physical models and numerical algorithms (e.g. space discretizations, time stepping schemes, linear system solvers, dots). In the context of high performance computing, suitable guidelines for achieving a developer friendly parallelization will also be addressed. All those techniques have been successfully implemented in COOLFluiD, a computational platform for the high performance simulation of multi-physics phenomena on unstructured grids developed at the Von Karman Institute during the last 7 years. A whole range of different CFD applications will be discussed as a validation of the concept design ideas.