Differences Between DuMu<sup>x</sup> 3.4 and DuMu<sup>x</sup> 3.3

=============================================

### Improvements and Enhancements

- __Pore-network models added to DuMu<sup>x</sup>__:

...

...

@@ -13,6 +14,34 @@ Differences Between DuMu<sup>x</sup> 3.4 and DuMu<sup>x</sup> 3.3

- Note: the old shells script will be removed after release 3.4.

- __Law for water vapor viscosity in gas mixtures changed__: Polynomial laws for determining the viscosity of vater vapor in gas mixtures are introduced and applied by the new function `h2oGasViscosityInMixture`. The polynomial laws give a better approximation of the gas viscosity especially at higher temperatures ( >273.15 K) and a high water vapor content.

- __Newton line search__: The line search algorithm decreases the step size until the residual decreases. The lower bound

of the step size can now be set in the input file via the parameter `Newton.LineSearchMinRelaxationFactor`.

- __Material / Constant component__: The `Component::Constant` can now be used in non-isothermal simulation. Simple relations

for internal energy and enthalpy depending on temperature and constant heat capacity have been added.

- __Ordering strategies for UMFPack__:

It is now possible to [choose an ordering strategy](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/linear/seqsolverbackend.hh#L851) for UMFPack via the runtime parameter `LinearSolver.UMFPackOrdering` or by calling the `setOrdering()` method of `UMFPackBackend`. This can have a positive effect on the solver's performance, depending on the matrix structure.

- __Add setRetryTimeStepReductionFactor() function to NewtonSolver__:

This function allows to set the factor by which the time step is reduced after al failed iteration. Can be used, e.g., for custom Newton solvers inheriting from this class and using a more sophisticated time step management.

- __Improve upwind interface__:

- Additional functions have been added to upwindscheme.hh which can be used to `apply` the upwind scheme without the need of FluxVariables and to get the `multiplier` by which the flux is multiplied.

- These additional functions are now used in `CCTpfaForchheimersLaw` by providing the UpwindScheme as additional template argument.

- __Simplified use of SubGridManger__: It is now possible to specify pixel dimensions when reading an image file used as grid. For instance, `Grid.PixelDimension = 1e-3 1e-3` will scale the domain automatically such that the grid cells have a side length of 1e-3 m and you don't need to specify `Grid.UpperRight` anymore.

- __String utility__: There is a new header `common/stringutilities.hh` that implements two functions `tokenize` and `split`

that can split strings at a given delimiter.

- __Add linearRegression() function to math.hh__:

This function gets a set of (x, y) data and calculates/returns the intercept and the slope of the regression line using linear least squares method.

- __Python bindings__: There is now a small finite volume example included in the Python tests using the wrapped grid geometry and problem

- __Shallow water__: Added a heuristic turbulence model based on a mixing length and resulting a turbulent viscosity term

### Immediate interface changes not allowing/requiring a deprecation period:

- __MPNC__: The `MPAdapter` can now also be called with a temporary `pcKrSw` objects. For this, the compiler needs to deduce the

class's template argument types. You may need to adapt your `spatialParams` from

...

...

@@ -43,7 +72,22 @@ by the assembler in future Dumux versions.

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

- __Type traits__: `Dumux::IsIndexable<T, I>` is deprecated, use `Dune::IsIndexable<T, I>`directly.

-`Dumux::IsIndexable<T, I>` is deprecated, use `Dune::IsIndexable<T, I>`directly.

- The property `NumEqVector` has been deprecated. The class `NumEqVector` is now defined in namespace `Dumux` in header file `dumux/common/numeqvector.hh`.

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

- __Time stepping__: a first implementation of a generic `Dumux::MultiStageTimeStepper` was introduced,

that allows for using different time integration schemes besides the currently supported implicit and explicit

Euler schemes. However, this poses new requirements on the linear system assemblers, which are not yet met by

the standard assemblers provided in Dumux. This will be extended in future versions.

### Continuous integration

- A first version of the Dumux GitLab CI is now at the disposal of all developers. While every night a complete

test pipeline is triggered automatically, developers have the possibility to manually start test pipelines

within merge requests that automatically identify and run only those tests affected by the changes introduced.

Differences Between DuMu<sup>x</sup> 3.3 and DuMu<sup>x</sup> 3.2