We happily announce today's release of DuMux 3.3.

Differences Between DuMux 3.3 and DuMux 3.2

Improvements and Enhancements

  • Requirements: DuMux now requires Dune >=2.7 and CMake >= 3.13.
  • New way to use material laws: The usage of laws for pc-Sw and kr-Sw has been completely revised. A caller does not have to pass a parameters object to the laws anymore. The spatialParams now provide a fluidMatrixInteraction function which bundles an arbitrary number of different interaction laws such as a pc-Sw and kr-Sw curve and interfacial areas. New pre-cached spline laws were added which can help to increase efficiency. The usage of the old interface is deprecated and warnings will be raised. The old interface will be removed after the release of 3.3.
  • New example: We have added another free-flow example dealing with lid-driven cavity flow.
  • Install script written in Python: The DuMux install script has been translated to Python to improve portability. The old shell script will be removed after release 3.3.
  • Improved velocity reconstruction: The velocity reconstruction for immiscible porous-media models has been improved, leading to slightly different velocity fields in the vicinity of Neumann boundaries.
  • Python bindings (experimental): Basic support for Python bindings has been added. Python bindings are an experimental feature and might undergo unannounced API changes until further notice. This concerns the files in the folders python and dumux/python. To activate
    • add -DDUNE_ENABLE_PYTHONBINDINGS=TRUE and -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE to your CMAKE_FLAGS and run dunecontrol
    • run python3 dune-common/bin/setup-dunepy.py
    • adapt your PYTHONPATH environment variable as described here
  • fmt-library: We now include a basic version of the fmt-library which implements std::format (coming with C++20) without the need for C++20. In order to use this, include <dumux/io/format.hh>. format, format_to, format_to_n, formatted_size are available in the Dumux::Fmt namespace. The string formatting is documented here and follows the Python string formatting rules. The functions are documented on cppreference.
  • RANS: The RANS models now include variable densities. Compositional or nonisothermal RANS models could produce slightly different, more accurate, results.

Immediate interface changes not allowing/requiring a deprecation period:

  • Flash/Constraintsolver: The flashes depending on material laws are immediately required to use new-style material laws (fluidMatrixInteraction interface in spatialparams)
  • Box interface solver: The box interface solver immediately requires the new material law interface without deprecation period. Use the new class BoxMaterialInterfaces and update your spatial params to use the new fluidmatrixinteraction interface to be able to use the box interface solver in version 3.3.
  • For the "sequential" models, the property BoundaryTypes has been simply renamed to SequentialBoundaryTypes
  • Quadmath: Dumux::Quad has been removed without deprecation. Use Dune::Float128 instead.
  • Within the RANS group, two additional runtime parameters have been included 'IsFlatWallBounded' and 'WriteFlatWallBoundedFields'. For both the K-Epsilon and Zero-eq RANS models the 'IsFlatWallBounded' runtime parameter should be set as True, as wall topology is not supported for these models with our geometric constraints. If not set as true, the geometry will be checked before the model is run. If either the runtime parameter or the geometry check indicate non-flat walls, the model will terminate. To add FlatWallBounded specific output to the vtk output, WriteFlatWallBoundedFields can be set as True.
  • 1d3d coupling: The kernel coupling manager has been replaced with the one from Koch et al (2020) JCP https://doi.org/10.1016/j.jcp.2020.109370
  • 1d3d coupling: The average and surface coupling managers has been updated with a slightly more accurate version to compute the stencils and the average operator. The results might differ a bit when using coarse grids. However, both version are expected to converge to the same result with grid refinement.

Deprecated properties/classes/functions/files, to be removed after 3.3:

  • The property BoundaryTypes has been deprecated. The boundary condition type can now be deduced from the problem type using ProblemTraits.

Deleted classes/files, property names, constants/enums:

  • Everything that has been deprecated before release 3.2 has been removed.
  • All of the geometry headers previously saved in dumux/common/geometry have been relocated to dumux/geometry. The headers in dumux/common/geometry are deprecated and will be removed after 3.3. The geometry tests have been moved from test/common/geometry and test/common/boundingboxtree to test/geometry.

Other noteworthy changes:

  • Releases earlier than 3.0 are no longer automatically tested or supported.