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.
-
GridManager:
- 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 headerdumux/io/grid/gridmanager.hh
still includes all specializations. - Added a
NetPBMReader
which allows to read simple raster images files (*.pbm
and*.pgm
). Can be used, e.g., withdune-subgrid
in 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 to2
, 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 theMinmod
flux limiter is used, butVanleer
,Vanalbada
,Superbee
,Umist
,Mclimiter
, andWahyd
based flux limiters are also available. These can be specified using the input file entryFlux.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,Li
andHou
, are both available for adaptations to non-uniform grids. These can be specified using the input file entryFlux.TVDApproach
. -
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
StaggeredNewtonConvergenceWriter
for the staggered grid discretization scheme. -
Solver: There is a new abstract base class
PDESolver
that is a class that does linearize & assemble, solve and update. The NewtonSolver now derives from this class (interface is unchanged). A new classLinearPDESolver
simplifies 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 fromGridView
toFVGridGeometry
. This allows to call theresize()
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
TimeLoopBase
class has been extended byvirtual void advanceTimeStep()
,virtual void setTimeStepSize(Scalar dt)
,virtual Scalar maxTimeStepSize()
, andvirtual bool finished()
, thus forcing the inheriting classes to implement those functions.TimeLoop
is no longer a template argument inNewtonSolver
'ssolve()
method, thereby increasing type safety and providing better compiler error messages. -
RANS: The base problems for all turbulence models e.g.
ZeroEqProblem
have been been renamed to one genericRANSProblem
Deprecated properties, to be removed after 3.1:
-
FVGridGeometry
andEnableFVGridGeometryCache
have been replaced byGridGeometry
andEnableGridGeometryCache
.
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:
-
BaseFVGridGeometry
fromdumux/discretization
. UseBaseGridGeometry
instead. -
CakeGridCreator
andSubgridGridCreator
fromdumux/io/grid
. Use the corresponding...Manager
instead. -
IntRange
fromdumux/common
. UseDune::IntegralRange
instead.
Deprecated member functions, to be removed after 3.1:
- The convergence writer is no longer passed to
NewtonSolver
'ssolve()
method. For outputting convergence data, please usenewtonSolver.attachConvergenceWriter(convWriter)
inmain.cc
(directly after instantiating the writer). To stop the output, the writer can also be detached again usingnewtonSolver.detachConvergenceWriter()
.
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.