Summary: With preCICE v3.3.0, we focused on improving clarity, portability, and tooling. The new release brings clearer coupling-state output and more helpful error messages. Tooling has been reworked significantly and is now bundled in the new preCICE CLI. Platform support—especially for Windows via MSYS2—has been expanded. Read on for the highlights.
Clearer coupling state and error messages
Understanding the coupling progress is now easier than ever.
The new output gives a concise, explicit overview of time windows, iterations, and partner states.
Explicit coupling
time-window 1 (max: 2), t 0 (max: 3), Dt 1, max-dt 1
time-window 2 (max: 2), t 1 (max: 3), Dt 1, max-dt 1
Reached end at: final time-window: 2, final time: 2
Implicit coupling
it 1 (min: 2, max: 2), time-window 1 (max: 2), t 0 (max: 3), Dt 1, max-dt 1
it 2 (min: 2, max: 2), time-window 1 (max: 2), t 0 (max: 3), Dt 1, max-dt 1
it 1 (min: 2, max: 2), time-window 2 (max: 2), t 1 (max: 3), Dt 1, max-dt 1
it 2 (min: 2, max: 2), time-window 2 (max: 2), t 1 (max: 3), Dt 1, max-dt 1
Reached end at: final time-window: 2, final time: 2
Compositional coupling
partner: M1, time-window 2 (max: 2), t 1, Dt 1, max-dt 1; partner: M2, ...
We also improved error reporting when required data or checkpoints are missing.
Instead of a generic “actions not fulfilled” message, you now get clear, actionable hints:
The iteration checkpoint wasn't read.
Did you forget to call "requiresReadingCheckpoint()"?
Running without MPI
If you run into building problems due to conflicting MPI implementations, it is sometimes necessary to build preCICE without MPI:
cmake -DPRECICE_FEATURE_MPI_COMMUNICATION=OFF .
If you then define participants as usual:
<participant name="Solid">
...
</participant>
Then running this participant in parallel, now uses sockets on the loopback interface for it’s intra-communicator by default.
Additionally, once you define an <intra-comm:sockets/> to customize the setting and run the partiticpant in serial, then preCICE ignores this intra-comm instead of emitting an error message.
Tooling rework
This release streamlines and bundles all our command-line tools. You now only need one tool: the preCICE CLI.
Install directly from PyPi:
pip install precice-cli
Then, you can format your configuration:
precice-cli config format precice-config.xml
Or visualize it:
precice-cli config visualize precice-config.xml -o graph.pdf
Or simply display the versions of all installed components:
precice-cli version
Many more things are possible. Learn about them in this presentation from the preCICE Workshop 2025:
Note that some of the old tools are now deprecated and will be removed with v4.0 eventually.
Updated profiling system
We observed that our profiling system can reach its limits if many events per time step, such as many read_data calls, are tracked and processed. First remedy was to avoid such events by default:
<profiling mode="off|fundamental|api|all" />
… still defaults to fundamental, but the non-steering API calls (such as read_data) were moved to the new dedicated api mode.
Second remedy was to make everything more space-efficient. Each rank now produces a plain TXT file (with optional LZMA compression). Then, precice-profiling merge creates a SQLite3 database for post-processing.
Docs on profiling via the new preCICE CLI
Improved platform support
Very neat for Windows users: We collaborated with the MSYS2 package maintainers to getting preCICE actively tested on Windows and fixed some compatibility issues. This works using Microsoft MPI v10.1.1 and Winsocks via Boost.ASIO. MSYS2 preCICE package
We, moreover, added compatibility with new versions of our dependencies libxml2 2.14.0+, Boost 1.89.0, and Eigen 5.0.0.
Note that for the latter, the build now requires a proper Eigen3Config.cmake file. A simple source checkout will not be detected anymore. You need to create a build directory and configure it using cmake to generate the required CMake conniguration files.
If CMake cannot find Eigen automatically, specify the location of its CMake configuration file manually using:
cmake -DEigen3_DIR=/path/to/eigen/share/eigen3/cmake ..
While not as feature-heavy as previous releases, preCICE v3.3 brings important quality-of-life improvements: more readable output, more efficient profiling, solid Windows support, and obviously a few important bugfixes (one concerns the QR3 filter, which became the default in v3.2).