preCICE is an open-source 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 convenient methods for transient equation coupling, communication, and data mapping. Read more on the preCICE website.
preCICE consists of several components, most of which are released as part of the preCICE Distribution:
- The core library (in C++, with bindings in C and Fortran)
- Language bindings for Python, Julia, Matlab, Rust, as well as a Fortran module
- Ready-to-use adapters for several open-source codes, including OpenFOAM, CalculiX, deal.II, FEniCS legacy, FEniCS-X, DUNE, DuMuX, SU2, MBDyn, code_aster, and more.
- Tutorials with case files for several applications, solvers, and preCICE features.
- A Vagrant box, which serves as a demo virtual machine with preCICE and several solvers already installed.
- The preCICE website and documentation
When using or referring to preCICE in academic publications, please follow the citation guidelines. More specifically, cite the preCICE v2 reference paper and any reference papers of adapters you may be using. For reproduibility, you may also want to use components from a preCICE distribution version and cite the respective data repository entry.
@article{preCICEv2,
author = {Chourdakis, G and Davis, K and Rodenberg, B and Schulte, M and Simonis, F and Uekermann, B and Abrams, G and Bungartz, HJ and Cheung Yau, L and Desai, I and Eder, K and Hertrich, R and Lindner, F and Rusch, A and Sashko, D and Schneider, D and Totounferoush, A and Volland, D and Vollmer, P and Koseomur, OZ},
title = {{preCICE} v2: A sustainable and user-friendly coupling library [version 2; peer review: 2 approved]
},
journal = {Open Research Europe},
volume = {2},
year = {2022},
number = {51},
doi = {10.12688/openreseurope.14445.2},
url = {https://doi.org/10.12688/openreseurope.14445.2}
}