We happily announce today's release of DuMux 3.6.

Differences Between DuMux 3.6 and DuMux 3.5

General changes / structure

  • Testing/CI: Dumux is now tested with C++20 flag enabled in addition to C++17 (which is still the minimum requirement)

  • Testing/CI: The CI system now checks for common spelling mistakes using the codespell tool.

Improvements and Enhancements

  • bin/extract_as_new_module.py: Allow for main branch named main or master

  • Components: Fixed a bug in TabularizedComponent that caused data races in multithreaded applications

  • Discretization: There is now defaults for FluxVariablesCache and FluxVariablesCacheFiller for box/cctpfa/ccmpfa/staggered that implement an empty cache (i.e. nothing is cached for the flux variables).

  • Discretization: Added a new face-centered FV scheme based on non-conforming FE spaces FCDiamond

  • Discretization: Added a new FV scheme based on conforming FE spaces pq1bubble

  • Discretization: Added a basicGridGeometry which isn't discretization specific and may be shared among multiple gridGeometrys on the same grid.

  • Grid: Added stamped subgrids which allow for domains to be generated from repeated images

  • Parallelization: Update grid caches in parallel

  • Parallelization: GridView confirms whether multithreaded iteration of the grid is permitted

  • Multidomain: Added a parallel scalar product for multidomain problems

  • Assembly: Enabled multithreaded assembly for embedded problems

  • Multiphase and multicomponent: Added an initial helper to choose an appropriate constraintsolver based on present phases

  • Properties: There is now a GetPropOr helper that evaluates to the property type if that type is specialized for the given TypeTag and a given type if not.

  • 1d3d: Fixed a bug in the extended source stencil which didn't respect a user-defined epsilon for numeric differentiation

  • Pore-network model: Pore-network model will no longer prevent non-wetting fluid flowing out by default. Throats blocking non-wetting fluid can be specified by setting runtime parameter InvasionState.BlockNonwettingPhaseAtThroatLabel.

  • Pore network model: Fixed a bug in the calculation of pc snap-off. To calculate the pc snap-off, corner half angle of the throat cross section shape is needed. Previous implementation was only based on square cross section. We included corner half angle in the calculation to be able to calculate pc snap-off for other cross sections than square.

  • Examples: Extend the porenetwork_upscaling example to include non-creeping flow simulation in pore network. The example is able now to provide not only upscaled Darcy permeability but also Forchheimer permeability and coefficient (employed in Forchheimer equation).

  • Json: Dumux now ships a fixed version of https://github.com/nlohmann/json to read and write JSON files. Only the symbols in the namespace Dumux::Json are meant to be used with Dumux. In particular, this now exports the json tree structure. More features may be added in the future.

Immediate interface changes not allowing/requiring a deprecation period:

  • Experimental features: All headers with experimental features have been moved into the folder dumux/experimental. Correspondingly, all unit tests for those features have been moved to test/experimental.

  • Stokes/Darcy: In the coupling manager, the diffusion coefficient coupling type had a mode Arithmetic misspelled with an additional letter. The spelling has been corrected. The incorrect spelling will lead now lead to an error.

  • Box: The grid geometry now passes information to the local view via an internal cache (instead of passing a pointer to itself directly). This allows to hide some internal interfaces. This only concerns implementers of FVElementGeometry classes that inherit from the box implementation and don't overload the constructor. Then code possibly fails to compile. The fix is to implement the same caching concept. The cache can be a simple wrapper around the grid geometry pointer.

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

  • Box: scv/scvf.geometry() have been deprecated, use fvGeometry.geometry(scv/scvf) instead
  • Box: scv/scvf.corner(i) have been deprecated, use fvGeometry.geometry(scv/scvf).corner(i) instead
  • Cell centered: The computeTpfa/MpfaTransmissibilities() interfaces now require an additional parameter fvGeometry
  • Staggered: fluxVars.advectivFluxForCellCenter()/inflowOutflowBoundaryFlux() interfaces now require parameter fvGeometry instead of element
  • Discretization: Extrusion::area/volume(scvf/scv) have been deprecated, use Extrusion::area/volume(fvGeometry, scvf/scv) instead
  • Richards: Using the extended Richards model accounting for vapor diffusion in the gaseous phase by setting the property EnableWaterDiffusionInAir and the use of the corresponding template parameter in richards/model.hh has been deprecated. Use the new model ExtendedRichards instead
  • Navier-Stokes: The unified NavierStokesParentProblem covering both momentum and mass problems has been deprecated, use separated problems instead
  • Box: BoxElementVolumeVariables and BoxGridVolumeVariables have been deprecated, use unified CVFE volume variables instead

New experimental features (possibly subject to backwards-incompatible changes in the future)

  • Meta data: There is support for extraction of meta data in dumux/common/metadata.hh. The extracted features, might change in the future and we can't give any guarantee that the name of keys and values in the extracted meta data tree will be stable between releases.