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
Changelog
- 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 toprecice
. This change does not break old code. Please refer tosrc/precice/bindings/python/README.md
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
forboost::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
andxml::Validator*
. - Removed the
xml::Validator*
classes and replaced them inxml::XMLAttribute
with a set of "options". - Made
xml::XMLAttribute
andxml::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 binarytestprecice
and necessary files.
UsePREFIX/share/precice
asPRECICE_ROOT
.
- Moved CMake files from
tools/cmake-modules
tocmake/
(general scripts) andcmake/modules
(find modules). - Migrated from file-globing to explicit source/interface/test-file lists.
Usetools/updateSourceFiles.py
from project-root to update all necessary files. install
target installs:- the library
PREFIX/lib
. - the binaries
PREFIX/bin
and their manfiles intoPREFIX/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 asPRECICE_ROOT
on installed system.
- the library
- CTest definition of tests run in isolated working directories:
precice.Base
for the base test suiteprecice.MPI2
run on 2 MPI ranksprecice.MPI4
run on 4 MPI ranks
- CPack configuration of target
package
to generate binary debian, tar and zip packages. - Added
CMakeLists.txt
totools/solverdummy/cpp
. It is an example of how to link to preCICE with CMake. - Extended the displayed information when configuring.
- Extended
updateSourceFiles.py
to verify the sources usinggit 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.