Tutorials are meant as starting points to build your own coupled simulations. Our collection has grown rapidly over the past few years and your contribution is very welcome!
You can find all tutorial case files in the tutorials repository. Get the latest release, or clone the Git repository to easily update them in the future:
git clone --branch=master --depth 1 https://github.com/precice/tutorials.git
Basic cases
We recommend that you start from one of the following cases, which you can quickly run on your laptop:
- Flow over a heated plate: A conjugate heat transfer scenario. Try OpenFOAM, FEniCS, or Nutils.
- Partitioned heat conduction: The mathematician’s dream: split the heat equation in two and glue it again. Pick your Dirichlet and Neumann solvers among FEniCS, Nutils, and OpenFOAM.
- Flow in a channel with an elastic perpendicular flap: A fluid-structure interaction scenario. Feel free to combine different solvers, among OpenFOAM, SU2, deal.II, FEniCS, Nutils, CalculiX, and DUNE.
All cases
In the following cases, you can explore different aspects of preCICE:
- ASTE turbine: An example case for ASTE to investigate different preCICE mappings using a turbine geometry.
- Breaking dam with flexible pillar 2D: A two-phase flow fluid-structure interaction problem, with OpenFOAM and CalculiX.
- Channel transport collection
- Basic variant: A channel flow coupled to a transport (of, e.g., a chemistry species) in a uni-directional way, with Nutils.
- Transport + reaction variant: A channel flow coupled to a transport of a chemical species with reaction in a uni-directional way, with FEniCS.
- Elastic tube 1D: A 1D fluid-structure interaction scenario, with toy solvers in Python, C++ and Rust.
- Elastic tube 3D: A 3D fluid-structure interaction scenario, with OpenFOAM, CalculiX, and FEniCS.
- Flow around controlled moving cylinder: A flow around a rigid moving cylinder with an FMI-based controller to dampen out the oscillation.
- Flow over a heated plate collection
- Basic variant (as in “featured”)
- Nearest-projection mapping variant: A nearest-projection mapping version, with two OpenFOAM solvers.
- Steady-state variant: A steady-state version, with OpenFOAM and code_aster.
- Two interface meshes variant: A variant where the mesh used to transfer temperature is not the same as the one transferring heat fluxes. This allows us to use CalculiX as a solid solver.
- Heat exchanger: A three-field conjugate heat transfer case (explicit coupling, steady state, Robin-Robin coupling), with OpenFOAM and CalculiX.
- Heat exchanger: simplified: A simplified version of the heat exchanger tutorial. Apart from a simpler geometry, that case is transient and using the implicit multi-coupling scheme, with Dirichlet-Neumann coupling..
- Multiple perpendicular flaps: A three-field fluid-structure interaction case (fully implicit coupling, transient).
- Oscillator: A simple mass-spring oscillator with two masses, coupling two instances of a Python solver.
- Oscillator overlap: An overlapping Schwartz method variant of the Oscillator tutorial, coupling two Dirichlet participants.
- Partitioned elastic beam: An experimental structure-structure coupling scenario, with two CalculiX solvers.
- Partitioned flow collection
- Partitioned flow over a backwards-facing step: A fluid-fluid coupling scenario, demonstrating inlet-outlet boundary conditions in OpenFOAM.
- Partitioned flow over a heated plate: A three-participant case, similar to the flow over a heated plate with OpenFOAM solvers, but with a partitioned channel flow.
- Partitioned pipe: A fluid-fluid coupling scenario, with two OpenFOAM solvers.
- Partitioned pipe two-phae: A two-phase variant of the partitioned pipe tutorial.
- Partitioned heat conduction collection
- Basic variant (as in “featured”)
- Complex variant: A partitioned heat conduction case with FEniCS, showcasing advanced features and geometries.
- Direct mesh access variant: A partitioned heat conduction case with Nutils, showcasing the direct mesh access feature.
- Overlapping Schwarz variant: An overlapping Schwarz method of the partitioned heat conduction case, coupling two Dirichlet participants.
- Perpendicular flap (as in “featured”)
- Resonant circuit: The basic LC circuit, with two MATLAB solvers.
- Two-scale heat conduction: A heat conduction scenario with an underlying micro-structure which is resolved to get the constitutive properties on the macro scale.
- Turek-Hron FSI3: The well-known fluid-structure interaction benchmark, with OpenFOAM and deal.II.
- Volume-coupled diffusion: An experimental volume coupling scenario, with two FEniCS solvers.
- Volume-coupled flow: An experimental volume coupling scenario, coupling a source term coded in Nutils with a flow in OpenFOAM.
Community projects
Apart from these simple tutorial cases, the community has tried preCICE in different setups. Check out our new community projects section in our forum, or read the community stories.
General hints
You can start any tutorial by opening multiple terminals, navigating to each participant case, and running ./run.sh
. To make the “multiple terminals” part easier, it is often convenient to use a terminal multiplexer, such as Tilix or tmux.
Before running a case again, cleanup previous results with the included cleaning scripts.
Are you wondering how to visualize the various results generated? Have a look in our visualization hints.