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 formAccepter-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 obsoletemesh::Group
andmesh::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 correctchangelog
andSOVERSION
, as well as generating a package name including theSOVERSION
. - 👌 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 theSolverInterface
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"
inm2n
. - 📚 Refactored the XML documentation generation out of the
xml::XMLAttribute
andxml::XMLTag
classes intoxml/Printer.[c/h]pp
. - 🚀 Released finalized version of python bindings in independent repository:
precice/python-bindings
. Package is namedpyprecice
and supports the preCICE version >= 2.0.0. - ✂ Removed
MeshHandle
from API and replace use in integration tests bySolverInterfaceImpl::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
toPRECICE_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/
.
- Moved developer tools to
- 🔧 Simplify parallel configuration:
- Automatically add
master:mpi-single
for parallel participant if necessary. - No longer require
gather-scatter
distribution type for am2n
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.
- Automatically add
- Sorted out the different meaning of timestep and time window:
- Renamed API function
isTimestepComplete
toisTimeWindowComplete
. - Renamed C bindings function
precicec_isCouplingTimestepComplete
toprecicec_isTimeWindowComplete
. - Renamed
cplscheme
configuration optiontimestep-length
totime-window-size
. - Renamed
cplscheme
configuration optionmax-timesteps
tomax-time-windows
. - Renamed
acceleration
configuration optiontimesteps-reused
totime-windows-reused
. - Renamed
acceleration
configuration optionreused-timesteps-at-restart
toreused-time-windows-at-restart
. - Renamed
export
configuration optiontimestep-interval
toevery-n-time-windows
.
- Renamed API function
- ➕ Added CMake build type fallback to