preCICE is written in C++. Thus, the native API language of preCICE is C++ as well. If you are new to the preCICE API, we recommended that you first follow the step-by-step guide.
Native API
The definite documentation of the C++ API is available on the preCICE API doxygen pages for the latest release, or see more options.
| Language | Location | Installation |
|---|---|---|
| C++ | precice/precice/tree/main/src/precice/Participant.hpp |
Automatically included |
Bindings
Besides the C++ API, there are also bindings to other languages available:
| Language | Location | Installation |
|---|---|---|
| C | precice/precice/tree/main/extras/bindings/c |
native bindings |
| Fortran | precice/precice/tree/main/extras/bindings/fortran |
native bindings |
| Fortran Module | precice/fortran-module |
make |
| Python | precice/python-bindings |
pip3 install pyprecice |
| Matlab | precice/matlab-bindings |
installation script |
| Julia | precice/PreCICE.jl |
add PreCICE |
| Rust | precice/rust-bindings |
cargo add precice |
The community is also working on the following bindings:
| Language | Location | Notes |
|---|---|---|
| Rust | ajaust/rust-precice |
Experimental prototype / work in progress |
Minimal reference implementations
For all languages, we provide minimal reference implementations, so called solver dummies. They can be a great source to copy from.
The community also maintains MPI-parallel versions of some of these solver dummies.
Architectural overview of bindings
All the language bindings are calling the C++ API of preCICE and some of them are interdependent. Here is an overview of what uses what:
