Skip to content

@MakisH MakisH released this Mar 7, 2019

preCICE Release v1.4

Dear preCICE users,

We are happy to provide you with a brand new preCICE release.

For this one, we sweat quite a bit, but it is an important one for making preCICE a sustainable software project in the long run.

In the last months, we worked a lot on improving building and packaging of preCICE. At the core of all this, we changed building from SCons to CMake. CMake also has its flaws, but it is simply the quasi-standard and, thus, simplifies many other things. One of these things is packaging: With this release, we provide you, for the first time, with Debian packages. So, if you are using Ubuntu 18.04 or newer, installing the new preCICE version is only a few clicks away. For all other users, building with CMake is also very easy. Last, we currently still support SCons, but we will drop it eventually.

In case you build yourself, we now require at least Boost version 1.65.1 (available already in Ubuntu 18.04).

Properly configuring the preCICE installation process also had an influence on adapters. We collected important information in the wiki to make this step for your inhouse codes as easy as possible. We already ported the official adapters to the new building scheme. For the OpenFOAM adapter, any building variant of preCICE should work for now, but please consider using CMake (or binary packages) from now on. For the CalculiX adapter, we only support cmake from now on (of course, you can still use older versions for the moment). For the SU2 adapter, there are still last things we will fix during the next days.
If you face any issues please let use know.

For our Python users: We changed the name of our bindings. From "PySolverInterface" to the much simpler "precice". The old bindings are deprecated, but still working. With preCICE v2.0, we also want to port the main API and all other bindings to the new naming scheme.

For our Fortran users: We extended the bindings to all API functions, both the f90 and the f2003 ones. The f2003 bindings, though, are still experimental. Again, let us know if you face any issues.

We also fixed many bugs and did small improvements at various places. For example, the initialization of the nearest-projection mapping is much faster now. For more details, please look at the changelog below (btw, the longest we ever had).

Happy coupling,
The preCICE crew


  • The python modules are now proper packages tracking dependencies etc.
  • Fix CMake now importable from binary directory.
  • The Python module for the preCICE bindings PySolverInterface is renamed to precice. This change does not break old code. Please refer to src/precice/bindings/python/ for more information.
  • Add a pkg-config for preCICE (libprecice.pc).
  • Use the Boost stacktrace library for cross-platform stacktrace printing. This requires Boost 1.65.1.
  • Added explicit linking to libdl for boost::stacktrace.
  • Reimplemented the internals of the nearest-projection mapping to significantly reduce its initialization time.
  • The EventTimings now do a time normalization among all ranks, i.e., the first event is considered to happen at t=0, all other events are adapted thereto.
  • The old CSV format of the EventTimings log files, split among two files was replaced by a single file, in structured JSON format.
  • Fixed memory leaks in the xml::XMLAttributes and xml::Validator*.
  • Removed the xml::Validator* classes and replaced them in xml::XMLAttribute with a set of "options".
  • Made xml::XMLAttribute and xml::XMLTag chainable.
  • Added manpages for binprecice and testprecice.
  • Fixed memory leaks in mesh::Mesh.
  • Fixed mapping classes not flushing the underlying caches on clear().
  • Fixed format of version logging (first preCICE log message).
  • Added tolerance of iterations in quasi-Newton tests.
  • CMake overhaul:
    • Converted to target-based system: precice, testprecice, binprecice
    • New options:
      • PRECICE_Packages (default ON) to configure CPack,
      • PRECICE_InstallTest (default ON) to configure installation of tests.
        This includes the binary testprecice and necessary files.
        Use PREFIX/share/precice as PRECICE_ROOT.
    • Moved CMake files from tools/cmake-modules to cmake/ (general scripts) and cmake/modules (find modules).
    • Migrated from file-globing to explicit source/interface/test-file lists.
      Use tools/ from project-root to update all necessary files.
    • install target installs:
      • the library PREFIX/lib.
      • the binaries PREFIX/bin and their manfiles into PREFIX/share/man/man1.
      • the CMake configuration files into PREFIX/lib/cmake/precice.
      • the pkg-config configuration files into PREFIX/lib/pkgconfig
      • the necessary files to run testprecice into PREFIX/share/precice. Use this as PRECICE_ROOT on installed system.
    • CTest definition of tests run in isolated working directories:
      • precice.Base for the base test suite
      • precice.MPI2 run on 2 MPI ranks
      • precice.MPI4 run on 4 MPI ranks
    • CPack configuration of target package to generate binary debian, tar and zip packages.
    • Added CMakeLists.txt to tools/solverdummy/cpp. It is an example of how to link to preCICE with CMake.
    • Extended the displayed information when configuring.
  • Extended to verify the sources using git ls-files --full-name if available.
  • Fixed the io::VTKXMLExporter not to write VertexNormals.
  • Improved the user-friendliness of the tests.
    • make test will run all tests.
    • make test_base only a unproblematic base-set.
    • A timeout will kill hanging tests.
    • All tests sets run in isolated working directories.
  • Added an (experimental) Fortran 2003 solver dummy.
Assets 6
You can’t perform that action at this time.