Dr. Benjamin Uekermann
Scientific Computing in Computer Science
Technische Universität München
preCICE (Precise Code Interaction Coupling Environment) is a coupling library for partitioned multi-physics simulations, including, but not restricted to fluid-structure interaction and conjugate heat transfer simulations. Partitioned means that preCICE couples existing programs (solvers) capable of simulating a subpart of the complete physics involved in a simulation. This allows for the high flexibility that is needed to keep a decent time-to-solution for complex multi-physics scenarios. The software offers methods for transient equation coupling, communication means, and data mapping schemes. Ready-to-use adapters for well-known solvers, such as OpenFOAM, deal.II, FEniCS, SU2, or CalculiX, are available. Due to the minimally-invasive approach of preCICE, adapters for in-house codes can be implemented and validated in only a few weeks. preCICEis open-source software under the LGPL3 license and available on GitHub.
The impact of preCICE has been growing significantly during the past five years. Today, we know of more than 60 research groups in academia, non-academic research centers, and industry that actively use preCICE. The GitHub page including the documentation has in average more than 500 independent views per two weeks. At least a dozen of users are using or will potentially use preCICEon SuperMUC-NG or the LRZ Linux clusters. preCICE is also part of the xSDKframework.
In its current version, preCICE only allows the usage of static coupling meshes. The vertices of such meshes can only be defined once per coupled simulation(during the initialization of preCICE) and remain, as the name suggests, static during the simulation. The range of applications that can be covered with static meshes is not to be underestimated: coupling of models of different fidelity at fixed bounding boxes or fluid-structure interaction with fluid solvers using the arbitrary Lagrangian-Eulerian framework. For static coupling meshes, preCICEwas parallelized and optimized in the ExaFSA project (Exascale Simulation of Fluid-Structure-Acoustics Interactions), which was part of the German PriorityProgram SPPEXA – Software for Exascale Computing.
Several coupling applications, however, require dynamic coupling meshes: meshes that can be altered in every timestep during a simulation. One such application is the coupling of solvers which use dynamic adaptive meshes or dynamic load-balancing themselves. Another application is fluid-structure interaction with fluid solvers using a pure Eulerian framework. In this case, coupling meshes need to move over one another. An older, serial version of preCICE already supported dynamic meshes. During the parallelization of preCICE in the ExaFSA project, however, this feature needed to be dropped to decrease the complexity of the software architecture. In this small-scale KONWIHR project, we want to take a first step towards parallel dynamic coupling meshes in preCICE.
To this end, we want to extend preCICE with a brute-force re-initialization feature. Users will be able to mark complete coupling meshes as invalid and re-define them in every timestep, followed by a re-initialization of the parallel communication pattern of preCICE. This procedure is expected to be a slow algorithm for many coupled applications. For surface-coupled applications with small coupling meshes compared to large internal meshes of the coupled solvers, the algorithm could, however, already be fast enough. Besides the implementation, the objective of this KONWIHR project is to carefully analyze under which conditions this procedure is fast enough and where the bottlenecks are. Furthermore, we want to make coupling meshes more lightweight, which should have a strong influence on the performance. From this analysis, we hope to learn how efficient parallel dynamic coupling meshes could be implemented in future releases of preCICE.