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
ormaster
-
Components: Fixed a bug in
TabularizedComponent
that caused data races in multithreaded applications -
Discretization: There is now defaults for
FluxVariablesCache
andFluxVariablesCacheFiller
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 multiplegridGeometry
s 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 namespaceDumux::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 totest/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, usefvGeometry.geometry(scv/scvf)
instead -
Box:
scv/scvf.corner(i)
have been deprecated, usefvGeometry.geometry(scv/scvf).corner(i)
instead -
Cell centered: The
computeTpfa/MpfaTransmissibilities()
interfaces now require an additional parameterfvGeometry
-
Staggered:
fluxVars.advectivFluxForCellCenter()/inflowOutflowBoundaryFlux()
interfaces now require parameterfvGeometry
instead ofelement
-
Discretization:
Extrusion::area/volume(scvf/scv)
have been deprecated, useExtrusion::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 inrichards/model.hh
has been deprecated. Use the new modelExtendedRichards
instead -
Navier-Stokes: The unified
NavierStokesParentProblem
covering both momentum and mass problems has been deprecated, use separated problems instead -
Box:
BoxElementVolumeVariables
andBoxGridVolumeVariables
have been deprecated, use unifiedCVFE
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.