We happily announce today's release of DuMuX 3.1.
Improvements and Enhancements
Examples: Three extensively documented examples have been added which highlight interesting features and show how to apply DuMuX to interesting problems. They can be found in the new folder
examples. To get an overview, point your browser to https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/tree/master/examples.
Porousmediumflow: Added a new porous medium model for the energy balance of a porous solid (general heat equation).
Multidomain: It is now possible to use the facet coupling module together with the mpfa-o scheme in the bulk domain.
Box: The box scheme works now on grids with prism / wedge elements in 3D.
Diffusive fluxes: We revised the formulation of the diffusion laws to allow for changes between mass-averaged velocity reference systems and molar-averaged velocity reference systems. The standard formulation is now set to mass-averaged velocity reference systems.
- Supports now reading unstructured grids and data from vtu/vtp files (ASCII, XML format) sequential.
For UGGrid and FoamGrid you can specify a grid in such a format in the input file:
Grid.File = mygrid.vtu/
Grid.File = mygrid.vtp. The associated data is then available in the grid data object.
- Instead of always including all grid manager specializations you can now only include the specialization that you need.
For example, if you only use YaspGrid in your code, you only need to include
dumux/io/grid/gridmanager_yasp.hh. The convenience header
dumux/io/grid/gridmanager.hhstill includes all specializations.
- Added a
NetPBMReaderwhich allows to read simple raster images files (
*.pgm). Can be used, e.g., with
dune-subgridin order to create a grid from an image file.
- Supports now reading unstructured grids and data from vtu/vtp files (ASCII, XML format) sequential. For UGGrid and FoamGrid you can specify a grid in such a format in the input file:
Freeflow: A second order approximation of the convective term of all Navier-Stokes based models is now available. This can be enabled using the property
UpwindSchemeOrder. This property defaults to a first order upwinding approximation, which is the method used for all models in release 3.0. If this property is set to
2, a second order flux limiter method will be used. Various flux limiter functions have been implemented to maintain the monotonicity of this discretization. Per default the
Minmodflux limiter is used, but
Wahydbased flux limiters are also available. These can be specified using the input file entry
Flux.DifferencingScheme. These methods are also implemented for non-uniform structured grids (e.g. YaspGrid - TensorProductCoordinates). Per default, a scheme assuming a uniform grid is used, but two other methods,
Hou, are both available for adaptations to non-uniform grids. These can be specified using the input file entry
RANS: The called RANS model, defined in the properties system, will specify, via the model traits, which RANS problem implementation should be used. In each problem file, the initial and boundary conditions can be set using templated functions based on the model type. Examples of these functions exist in the RANS based tests. No further preprocessor macros are required.
ShallowWater: Thanks to Leopold Stadler we now have a shallow water equations solver / model. Have a look at freeflow/shallowwater and give it a try with the dam break test at test/freeflow/shallowwater. The are also some friction laws computing shear stresses (Manning, Nikuradse) to account for friction in a channel/river bed, thanks to Martin Utz.
Staggered: Added a
StaggeredNewtonConvergenceWriterfor the staggered grid discretization scheme.
Solver: There is a new abstract base class
PDESolverthat is a class that does linearize & assemble, solve and update. The NewtonSolver now derives from this class (interface is unchanged). A new class
LinearPDESolversimplifies solving linear problems by reducing the code in the main file and streamlining the terminal output to look like the Newton output.
Immediate interface changes not allowing/requiring a deprecation period
NewtonConvergenceWriter's first template argument has changed from
FVGridGeometry. This allows to call the
resize()method after a grid change without any arguments. Here is an example how to instatiate the convergence writer:
using NewtonConvergenceWriter = Dumux::NewtonConvergenceWriter<FVGridGeometry, SolutionVector>; auto convergenceWriter = std::make_shared<NewtonConvergenceWriter>(*fvGridGeometry);
The interface of the abstract
TimeLoopBaseclass has been extended by
virtual void advanceTimeStep(),
virtual void setTimeStepSize(Scalar dt),
virtual Scalar maxTimeStepSize(), and
virtual bool finished(), thus forcing the inheriting classes to implement those functions.
TimeLoopis no longer a template argument in
solve()method, thereby increasing type safety and providing better compiler error messages.
RANS: The base problems for all turbulence models e.g.
ZeroEqProblemhave been been renamed to one generic
Deprecated properties, to be removed after 3.1:
EnableFVGridGeometryCachehave been replaced by
Unfortunately, clang doesn't emit deprecation warnings if an old property name is used. Consider employing gcc for detecting occurrences of the old name.
Deprecated classes/files, to be removed after 3.1:
dumux/io/grid. Use the corresponding
Deprecated member functions, to be removed after 3.1:
- The convergence writer is no longer passed to
solve()method. For outputting convergence data, please use
main.cc(directly after instantiating the writer). To stop the output, the writer can also be detached again using
Deleted classes/files, property names, constants/enums
- Deprecated classes and files for the 3.0 release listed below stay deprecated for at least one more release cycle.