preCICE v2.0.0 Release Notes

    • ➕ Added CMake build type fallback to Debug in case it wasn't provided.
    • ➕ Added CMake check for C++11 library conformance. This is especially helpful when using Intel Compilers.
    • Added CMake options to enable native bindings PRECICE_ENABLE_C, PRECICE_ENABLE_FORTRAN (on by default).
    • ➕ Added examples/ to installation and package
    • ➕ Added a generator for markdown references binprecice md.
    • ➕ Added caching to the CMake library validation
    • ➕ Added directional directory level for file-based connection exchange. For each connection, there is now a directory in precice-run of the form Accepter-Requestor.
    • ➕ Added distance statistics of nearest-neighbour and nearest-projection mappings between mesh pairs as debug output.
    • ➕ Added grouped tests by module to CTest.
    • ➕ Added information to the log of the first written Data values.
    • ➕ Added log statements to the connection information file writers and listeners including full paths.
    • ➕ Added step to remove the connection directories after connecting the slaves. precice-run will be empty after a successful run.
    • ➕ Added support for python 3 in python actions.
    • ➕ Added the mesh name to the information used to generate connection information files, which is required for the two-level initialization.
    • Changed CMake to always validate dependencies. Set PRECICE_ALWAYS_VALIDATE_LIBS=NO to disable this behaviour.
    • 🔄 Changed the internal handling of meshes by removing sub-meshes, the type hierarchy based on mesh::PropertyContainer, and the obsolete mesh::Group and mesh::Merge. This improves memory consumption, dramatically reduces allocations and improves locality when traversing primitives.
    • 🔄 Changed unit tests to run only on MPI Rank 0.
    • 🚚 Completely removed server mode. Now, the only supported parallelization concept is the peer-to-peer master-slave mode.
    • ✅ Disabled the installation of the test binary and files by default.
    • ⬇️ Dropped official python2 support for python bindings (remove tests).
    • ✂ Removed all experimental python bindings precice, precice-future, PySolverInterface.
    • 🛠 Fixed a bug in the XML parser which did not correctly checked tag occurrence.
    • 🛠 Fixed a bug in the XML parser which lead to ignored error messages from libxml2.
    • 🛠 Fixed the Debian package generation by using GNUInstallDirs, providing a correct changelog and SOVERSION, as well as generating a package name including the SOVERSION.
    • 👌 Improved efficiency of nearest projection mapping of matching meshes using lazy generation of index trees.
    • Introduced preCICE-MATLAB bindings (https://github.com/precice/precice/pull/494, https://github.com/precice/precice/pull/580) and provided them in precice/matlab-bindings.
    • 🔧 Merged the SolverInterface::configure() into the SolverInterface constructors. They now have a second parameter for the configuration file.
    • 🚚 Moved Fortan 2003 bindings (src/precice/bindings/f2003) and solverdummy (tools/solverdummy/f2003) to a separate repository.
    • 🔨 Refactored and made two-level initialization configurable through "use-two-level-init" in m2n.
    • 📚 Refactored the XML documentation generation out of the xml::XMLAttribute and xml::XMLTag classes into xml/Printer.[c/h]pp.
    • 🚀 Released finalized version of python bindings in independent repository: precice/python-bindings. Package is named pyprecice and supports the preCICE version >= 2.0.0.
    • ✂ Removed MeshHandle from API and replace use in integration tests by SolverInterfaceImpl::mesh().
    • ✂ Removed an unnecessary assertion in getMeshVertexIDsFromPositions().
    • ✂ Removed deprecated SCons.
    • ✂ Removed deprecated HierarchicalAitkenAcceleration.
    • ✂ Removed deprecated ModifyCoordinatesAction.
    • ✂ Removed deprecated voxel queries in src/query/.
    • ✂ Removed packaging files specific to Ubuntu 18.04 as it is covered by CPack.
    • Renamed CMake variables MPI, PETSC, PYTHON to PRECICE_MPICommunication, PRECICE_PETScMapping, PRECICE_PythonActions
    • Replaced geometric filter option "filter-first" and "broadcast-filter" by "on-master" and "on-slaves", respectively, to generalize to two-level initialization.
    • Restructured tools and bindings:
      • Moved developer tools to tools/.
      • Moved user tools to extras/.
      • Moved native bindings to extras/bindings/.
    • 🔧 Simplify parallel configuration:
      • Automatically add master:mpi-single for parallel participant if necessary.
      • No longer require gather-scatter distribution type for a m2n with at least one serial participant.
      • Automatically choose suitable RBF implementation based on whether preCICE was built with PETSc and whether the participant is serial or parallel.
    • Sorted out the different meaning of timestep and time window:
      • Renamed API function isTimestepComplete to isTimeWindowComplete.
      • Renamed C bindings function precicec_isCouplingTimestepComplete to precicec_isTimeWindowComplete.
      • Renamed cplscheme configuration option timestep-length to time-window-size.
      • Renamed cplscheme configuration option max-timesteps to max-time-windows.
      • Renamed acceleration configuration option timesteps-reused to time-windows-reused.
      • Renamed acceleration configuration option reused-timesteps-at-restart to reused-time-windows-at-restart.
      • Renamed export configuration option timestep-interval to every-n-time-windows.