Coupling in-house and open-source simulation codes via preCICE

  • Chen, Jun (University of Stuttgart)
  • Chourdakis, Gerasimos (University of Stuttgart)
  • Desai, Ishaan (University of Stuttgart)
  • Homs Pons, Carme (University of Stuttgart)
  • Neubauer, Felix (University of Stuttgart)
  • Rodenberg, Benjamin (Technical University of Munich)
  • Schneider, David (University of Stuttgart)
  • Schulte, Miriam (University of Stuttgart)
  • Simonis, Frédéric (University of Stuttgart)
  • Uekermann, Benjamin (University of Stuttgart)

Please login to view abstract download link

Application experts often face the challenge of supporting additional models in their already fine-tuned simulation code. Common approaches are application-specific extension of the in-house code at hand, complete migration to a more capable multi-physics framework, reinventing coupling solutions that seem easy at first yet prove complicated at scale, or using an already available coupler. The open-source coupling library preCICE (https://precice.org/) allows coupling stand-alone simulation codes into a multi-physics or multi-scale simulation, building upon the expertise already accumulated in each code. Developed already for more than ten years, it offers a selection of efficient numerical algorithms for surface and volume coupling (such as interface quasi-Newton acceleration, RBF-based space interpolation methods, and waveform iteration), it is designed for high-performance computing, and is supported by a team of maintainers and a growing community. An API in C++ and language bindings in C, Fortran, Python, Julia, Matlab, and Rust allow coupling in-house codes from various application backgrounds. The coupling ecosystem of preCICE already includes ready-to-use adapters for established open-source simulation codes, such as OpenFOAM, FEniCS, CalculiX, deal.II, DuMux, G+Smo, MercuryDPM, Nutils, or SU2. Further tools allow coupling to system codes written using the Functional Mock-up Interface (FMI) or coupling one-to-many micro-macro simulations. This talk will introduce the main features, application examples of, and recent updates in the library, demonstrate the first steps of integrating it into an existing code, and discuss current research directions and community developments.