All Versions
24
Latest Version
Avg Release Cycle
-
Latest Release
-

Changelog History
Page 1

  • v2.5.0 Changes

  • v2.4.0 Changes

  • v2.3.0 Changes

    • ➕ Added isMeshConnectivityRequired(meshID) to the SolverInterface API. This is useful to generate connectivity information only if required by preCICE.
    • ➕ Added a configuration option to enable experiemental API functions.
    • ➕ Added bindings to doxygen.
    • ➕ Added check of user-written data to be finite.
    • ➕ Added convergence information for linear solvers of PETSc-based RBF mappings. Reports of converged solvers are logged as DEBUG, stopped solvers as WARNING and diverged solvers as ERROR messages.
    • ➕ Added experimental support for direct mesh access of meshes.
    • ➕ Added fmtlib for more readable and maintainable message formatting.
    • ➕ Added support for 3D meshes in ScaleByAreaAction.
    • ➕ Added the Rank of partitions in VTK exports.
    • ➕ Added the associated data name when printing convergence information.
    • ➕ Added the constraint scaled-consistent to mapping methods, which scales a consistent mapping such that the surface integral is equal on both sides of the interface.
    • ➕ Added the experimental API functions setMeshAccessRegion and getMeshVerticesAndIDs.
    • ➕ Added the xml configuration option '' for this feature.
    • Adopted the Contributor Covenant code of conduct (see CODE_OF_CONDUCT.md).
    • 🔄 Change m2n:mpi to use the more efficient single-ports implementation. To use the old implementation, use m2n:mpi-mulitple-ports.
    • 🔄 Changed edge and triangle normals to be computed on-demand.
    • 🔄 Changed formatting scripts to use git ls-files. This simplifies handling of edge cases.
    • 🔄 Changed linear solvers of PETSc-based RBF mappings now issue a warning when they reach the maximum iterations. This used to result in an ERROR.
    • 🔄 Changed the convergence measures INFO print to a fixed width scientific format. (issue #975)
    • 🔄 Changed the default build type of the library from static to shared.
    • 🔄 Changed the precice log files to print a fixed width scientific notation using 8 digits after the comma for floating point numbers and a fixed width for integer values. (issue #975)
    • 🔄 Changed the watch-point calculation algorithm to use already built index trees.
    • 🗄 Deprecated the flip-normals attribute of meshes. This is not functional anymore.
    • 🗄 Deprecated vertex normals in the vertexCallback() of the python actions. preCICE will pass None if the normal parameter is defined.
    • 🛠 Fixed FindNumPy using fallback of find_path.
    • 🛠 Fixed FindPETSc to also find PETSc if the include directory is in CPATH, which occured with some versions of pkg-config.
    • 🛠 Fixed socket communication to fail without a network connection.
    • 🛠 Fixed wrong error in tightly converging QN coupling. (Issue #976)
    • Implement a simplified interface to query index trees of meshes.
    • 👌 Improved memory consumption and data locality of vertices.
    • 👌 Improved mesh memory usage of vertices by ~41% and of connectivity by ~55%.
    • 👌 Improved usabilty and readability of logging macros and assertions.
    • 📦 Introduced package time and moved functionality related to extrapolation there.
    • Migrated PRECICE_XXX macros to fmtlib.
    • 🚀 Modifying release PR templates according to restructured tutorials.
    • ✂ Removed limitation of multi-coupling scheme for coupling topologies without a central participant. A non-centric controlling participant still needs to run in serial.
    • ✂ Removed obsolete query package functionality. Interpolation is refactored into mapping package.
    • ✂ Removed the FASTEST fortran bindings.
    • ✂ Removed vertex normals from the vtk exporters.
    • 🖨 Replaced prettyprint with fmtlib.
  • v2.2.1 Changes

    • 🛠 Fixed a bug leading to a freeze when using sync-mode with lazy indexing.
    • 🛠 Fixed empty received partitions for filtering on slaves.
    • 🛠 Fixed gather-scatter communication deadlock with empty master ranks.
  • v2.2.0 Changes

    • ➕ Added a file sink to the test runner, which additionally writes the test log output to the file test.log.
    • ➕ Added a verbose log file test.debug.log to tests. Submitting this file alongside bug reports will significantly simplify debugging the tests.
    • ➕ Added check for user-defined python actions.
    • ➕ Added check to ensure advance() isn't called with invalid timestep size.
    • ➕ Added error message for incorrectly configured acceleration data in a serial implicit coupling scheme.
    • ➕ Added missing documentation to XML tags and attributes.
    • ➕ Added support for BUILD_TESTING, which may be used to disable the compilation and execution of the tests.
    • ➕ Added support for escaped characters in XML.
    • ➕ Added the build configuration (Release/Debug) to the preCICE startup statement and inform the user when Debug an Trace logs are not available.
    • ➕ Added watch-integral functionality to, for instance, compute total force, total stress, or flow rate at coupling mesh.
    • 🔄 Changed an error to a warning when all sub-vectors of the residual-sum preconditioner are numerically zero.
    • 🔄 Changed the CMake FindPETSc module to a robust wrapper based on pkg-config. The new method is more robust and simplifies the compilation of preCICE in e.g. SLURM jobs.
    • 🔄 Changed the log format for tests. They now contain the participant name and are |-separated.
    • Clarified the wording of errors messages in data access functions. They now refer to vertex IDs instead of indices.
    • 🚀 Deprecated API method getMeshIDs. Call getMeshID for specific mesh names instead. This method will be removed in a future release.
    • 🔧 Extended configuration and repartitioning to allow the user to define multiple mappings from and/or to the same mesh.
    • 🛠 Fixed MacOS compilation and test errors.
    • 🛠 Fixed a bug in ReceivedPartition which led to problems when coupling multiple participants.
    • 🛠 Fixed a bug in the configuration of Aitken underrelexation.
    • 🛠 Fixed an issue when running the tests with Intel MPI.
    • 🛠 Fixed an occasional issue solving the system matrix in PETSc-based RBF mappings.
    • 🛠 Fixed boost log_level issues on MacOS.
    • 🛠 Fixed compilation error emitted by intel compilers.
    • 🛠 Fixed cryptic assertion for forgetting the max-iterations tag. Now max-iterations is enforced in the configuration.
    • 🛠 Fixed indexing bug in solverdummies.
    • 🛠 Fixed input checks for data access functions.
    • 🛠 Fixed interleaved assertion output.
    • 🛠 Fixed parameter type of operator"" in TestContext, which was a system-dependant error.
    • 🛠 Fixed parsing error on systems without locales installed. This fixes issues when running preCICE in minimal docker containers.
    • Fixed syntax of the Fortran function precicef_get_mesh_vertex_size_, which lead to incorrect name de-mangling.
    • 🛠 Fixed the data type and precision in exported VTK files.
    • 🛠 Fixed two wrong assertions in QR factorization, which did not allow meshes with only a single partition.
    • 👌 Improved checks of configuration related to data access.
    • 👌 Improved compiler compatibility of assertion.
    • 👌 Improved the error message for not exchanging data over the same mesh used for convergence measures.
    • Increased the minimum required C++ version from 11 to 14. This was triggered by Boost.Geometry increasing their minimum version to C++14 in Boost 1.75.
    • ✂ Removed obsolete trigger-solver-plot config option.
  • v2.1.1 Changes

    • 🛠 Fixed a compilation error emitted by intel compilers when compiling tests.
    • 🛠 Fixed an error message for unique acceleration subtags.
    • 🛠 Fixed parsing error on systems without locales installed. This fixes issues when running preCICE in minimal docker containers.
    • 🛠 Fixed preCICE erroneously expects cyclic communicator for IMVJ with restart.
    • 🛠 Fixed system-dependent compilation error when compiling tests.
    • ⚡️ Updated the PKGBUILD for the Arch Linux User Repository to be compatible with preCICE v2.
  • v2.1.0 Changes

    • ➕ Added MPI version detection and print it during the CMake configuration.
    • ➕ Added a new action to sum up data values, action:summation.
    • ➕ Added check for only allowing watchpoints on a provided meshes.
    • ➕ Added check for the coordinates of configured watchpoints. They have to match the dimensionality of the <solver-interface>.
    • ➕ Added check to prevent <use-mesh> from the same participant.
    • ➕ Added control flow checks to C bingings.
    • ➕ Added many tests for the communication abstraction.
    • ➕ Added option to make a convergence measure strict. It has to converge then and leads to a premature simulation stop if not.
    • ➕ Added parallel support for Eigen RBF mapping.
    • ➕ Added platform-specific defaults of the loopback interface name to the network attribute of socket connections.
    • ➕ Added reset of written data 0 in advance() to simplify detection of missing write data calls.
    • ➕ Added several checks to prevent that false API usage leads to complicated quasi-Newton assertions.
    • ➕ Added support for planar quads based on triangulation, needed, for instance for nearest-projection mapping. Quads will be split along the shortest diagonal to minimize the mapping error. Note that this triangulation will be visible in configured mesh exports.
    • ➕ Added tests which build solverdummies and tests which run them in various configurations.
    • ➕ Added tooling to prevent changelog conflicts.
    • ➕ Added warning when configuring m2n as mpi when preCICE is compiled with OpenMPI. This is known to cause connection issues.
    • 👍 Allowed multiple convergence measures of same coupling data.
    • 🔄 Changed com::MPIDirectcommunication to work only for Master-Slave connections.
    • 🔄 Changed test setup to a simpler and consistent version using the new testing::TestContext. Tests now require to run on 4 MPI ranks. They will still compile but not run when MPICommunication=OFF.
    • 🔄 Changed the CMake FindNumPy module to only consider information based on the selected python interpreter.
    • 🔄 Changed the minimum required PETSc version to 3.12, which delivers consistent results across platforms.
    • ✅ Disabled tests based on MPIPorts and MPISinglePorts when using Open MPI.
    • ✅ Enabled RBF-based tests in partiton unit-tests and serial integration tests.
    • 🌲 Extended iteration logging by total and dropped quasi-Newton columns.
    • Extended title headers of convergence and iteration files by measure abbreviation.
    • 🛠 Fixed MPIPorts and MPISinglePorts not always closing ports.
    • 🛠 Fixed SocketCommunication setting up a port and writing connection info even if there are no requesters.
    • 🛠 Fixed compatibility with Boost 1.73.0.
    • 🛠 Fixed memory leaks and hanging communication when not calling precice::SolverInterface::finalize().
    • 🛠 Fixed memory leaks in C bindings.
    • 🛠 Fixed memory leaks in Fortran bindings in case of missing call toX_finalize().
    • 🛠 Fixed memory leaks when using petrbf mappings in some conditions.
    • 🛠 Fixed occasional errors when using PETRBF with a preCICE-managed MPI Communicator.
    • 🛠 Fixed over-subscription error when executing the tests with recent versions of Open MPI on less than 4 physical cores.
    • 🛠 Fixed silent truncation of numeric values in the config with C locales using decimal comma. The parser now always uses the locale en_US.UTF-8.
    • 🛠 Fixed target test_install requiring CMake version 1.13.
    • 🛠 Fixed value semantics of precice::SolverInterface.
    • Improved all error messages.
    • 👌 Improved readability of relative convergence measure INFO logs.
    • 🔨 Refactored com::Communication handling of rank adjustments.
    • 🔨 Refactored cplscheme::BaseCouplingScheme and derived classes. Introduce cplscheme::BiCouplingScheme.
    • 🔨 Refactored mesh::BoundingBox into seperate class.
    • ✂ Removed m2n:mpi-single, which never worked outside tests.
    • ✂ Removed convergence file logging for min-iterations convergence measure.
    • ✂ Removed deprecated and untested Manifold Mapping. API functions hasToEvaluateSurrogateModel and hasToEvaluateFineModel remain as nop stubs.
    • ✂ Removed logging of average convergence rates.
    • ✂ Removed support for CPP and CPPFLAGS environment variables.
    • 🚚 Renamed a few functions of the Fortran bindings for consistency with the C++ API. This does not break backwards compatibility, but the previous functions are now considered deprecated and will be removed in v3.
    • ✂ Removes the summary of event timing when preCICE finalizes and writes it to the file precice-PARTICIPANT-events-summary.log instead.
    • 🔧 Restricted the configuration of WatchPoints to provided meshes.
    • ✅ Split multi-setup integration tests into multiple single-setup tests.
  • v2.0.2 Changes

    • 🛠 Fixed a critical bug in the testing framework.
    • 🛠 Fixed a critical bug in the partitioning for geometric filter set to on-master in <use-mesh> tags. The default configuration is on-slave.
  • v2.0.1 Changes

    • 🛠 Fixed broken pkg-config file in some cases due to CMake GNUInstallDirs.
    • 🛠 Fixed system-dependent error when displaying mapping distance information for empty partitions.
    • 👌 Improved RBF error messages by clarifying them and giving a hint to the user on what to do next.
  • v2.0.0 Changes

    • ➕ 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.