Dune 2.3.0
Download the Dune 2.3.0 module sources
- dune-common [ tarball: dune-common-2.3.0.tar.gz , signature: dune-common-2.3.0.tar.gz.asc ]
- dune-geometry [ tarball: dune-geometry-2.3.0.tar.gz , signature: dune-geometry-2.3.0.tar.gz.asc ]
- dune-grid [ tarball: dune-grid-2.3.0.tar.gz , signature: dune-grid-2.3.0.tar.gz.asc ]
- dune-grid-dev-howto [ tarball: dune-grid-dev-howto-2.3.0.tar.gz , signature: dune-grid-dev-howto-2.3.0.tar.gz.asc ]
- dune-grid-howto [ tarball: dune-grid-howto-2.3.0.tar.gz , signature: dune-grid-howto-2.3.0.tar.gz.asc ]
- dune-istl [ tarball: dune-istl-2.3.0.tar.gz , signature: dune-istl-2.3.0.tar.gz.asc ]
- dune-localfunctions [ tarball: dune-localfunctions-2.3.0.tar.gz , signature: dune-localfunctions-2.3.0.tar.gz.asc ]
DUNE 2.3.0 - Release Notes
- All modules compile with g++ 4.7, 4.8 and Clang 3.1, 3.2, 3.3.
buildsystem
- The deprecated build system macro
DUNE_CHECK_ALL_Mhas been removed. Please useDUNE_CHECK_ALLinstead. - As an experimental feature CMake is supported as a replacement for the current buildsystem based on autotools. It is still undecided when DUNE will switch, how long the transition period will be or whether this switch will happen at all (see this bug).
dunecontrolenables CMake when the flag--use-cmakeis set, everything is built in the module’s default build directorybuild-cmake.
dune-common
- The file
diagonalmatrix.hhcontaining the class of the same name has been moved fromdune-istltodune-common, since it is now used from thedune-geometrymodule. - There is a new file
power.hh, which collects various compile-time power methods. - The files
collectivecommunication.hh mpicollectivecommunication.hh mpiguard.hh mpihelper.hh mpitraits.hhhave been moved to the directorydune/common/parallel(see this bug). - The macro
DUNE_UNUSED_PARAMETERmarks intentional unused function parameters to get rid of compiler warnings. - Hash support is provided by
dune/common/hash.hh. - An adapter
Dune::singletonto turn a class into a singleton was added. - The macro
DUNE_CONSTEXPRis defined asconstexpr, if supported by the compiler, and empty otherwise. - The semantics of
Dune::PoolAllocatorhave changed. It now has an internal state (the pool) and thus is not fully usable for non C++11 containers. - There is a new communicator (
VariableSizeCommunicator) for the parallel index sets. Its communication methods are more adapted to the communication interface of dune-grid. It is usable for implementing these methods by using the mapping of entities to local and global indices and the partition information.
Deprecated and removed features
FieldVector::sizeis now a method rather than an enum value. This makesFieldVectormore compliant with thestlconventions for container classes. The configure flag--enable-fieldvector-size-is-methodhas been removed as its purpose was to ease the transition. If you need the container size as an enum value useFieldVector::dimension.- The class
Power_m_pfrom the filemisc.hhhas been deprecated. Use the new classStaticPowerfrom the new filepower.hhinstead. - The
geometrytype.hhandgeometrytypeindex.hhfiles, backward-compatibility headers for<dune/geometry/type.hh>and<dune/geometry/typeindex.hh>, have been removed. Please usetype.hhandtypeindex.hhdirectly. - The deprecated
finitestack.hhfile has been removed. Please usestd::stack<Dune::ReservedVector>instead of theFiniteStackclass. - The class
SelectType(fromtypetraits.hh) has been deprecated. Please use the new classconditionalinstead, which does the same thing, but can be used like the corresponding one from the C++11 standard library. - Similarly, we have deprecated
TypeTraits::isPointer,TypeTraits::isReference,TypeTraits::PointeeType, andTypeTraits::ReferredType. Please useis_pointer,is_lvalue_reference,remove_pointer,remove_reference, (respectively) instead. - The file
misc.hhis deprecated. Most math-related stuff has moved tomath.hh. The two methodshasPrefixandhasSuffixare now in the new headerstringutility.hh. The methodsSQRandgenFilenamedisappear with no replacement. - Support for very old MPI implementations is now deprecated, specifically implementations without support for the MPI-2.1 standard. This should affect very few users because all common MPI packages have been compatible with that standard since 2009.
dune-geometry
- The method
ReferenceElement::geometryreturns the (affine) embedding of subentities into the reference element. It uses an AffineGeometry to interpolate the vertex positions of the subentity. AxisAlignedCubeGeometry, a new implementation of theGeometryinterface has been added. As expected, it implements the geometry for axis-aligned hypercubes of arbitrary dimension and codimension. Since such hypercubes have a lot of structure, the implementation is very fast.- Similarly,
AffineGeometryimplements theGeometryinterface for affine geometries. In affine geometries the Jacobian of the map to the reference element is constant. Using this can result in more efficient code (thanks to Martin Nolte). - A reimplementation of the generic geometries, named
MultiLinearGeometryhas been added. It comes without a complicated TMP and abandons the use of dynamic polymorphism in the case of multiple geometry types. Despite these simplifications, it shows slightly better performance. - A new class
CompositeQuadratureRuleallows to build composite quadrature rules by refining a reference element and using a given other quadrature rule for each subelement. Due to some limitations of the virtual refinement mechanism, this currently only works for simplex elements. - Virtual refinement moved from dune-grid to dune-geometry.
- Gauss-Lobatto quadrature rules added without external dependencies.
- The enumeration values
Gauss,Jacobian_1_0, andJacobian_2_0used to denote 1d numerical quadrature rules have been replaced by the more informative namesGaussLegendre,GaussJacobi_1_0, andGaussJacobian_2_0. For a transitional period, the old names are still available. Note: It is impossible to mark enum values as deprecated. After the next release the old names will disappear without a warning from the compiler.
Deprecated and removed features
- The methods
ReferenceElement::globalhave been deprecated; useReferenceElement::geometry< codim>( i ).globalinstead. The non-interface methodReferenceElement::mapping, which is superseded by theglobalmethod, has been deprecated, too. - The classes
GenericReferenceElement*are renamed asReferenceElement*. The old names are deprecated and will be removed after Dune 2.3. - Many functions and constructors using
topologyIdas an argument were removed which were deprecated in Dune 2.2. In many cases a replacement, withDune::GeometryTypeas an argument, has to be used. - The support for ALGLIB has been removed.
- The method
volumeOuterNormalon theReferenceElementhas been renamed tointegrationOuterNormal. It has always actually returned the outer normal to a face whose length coincides with the integration element of the face. The old name is now deprecated and will be removed after Dune 2.3. - The class
MockGeometryhas been deprecated and will be removed in Dune 2.3. Use the newMultiLinearGeometryinstead. In most cases, replacing MockGeometry by MultiLinearGeometry and adapting the includes will do. - The method
initializeTopologyof the classReferenceElementhas been deprecated and will disappear after the 2.3 release. There is no replacement, you are not supposed to call such a method at all. - The enumeration value
Invalid_Rule, from the set of all possible one-dimensional rules, has been removed. There is no replacement.
dune-grid
- The
EntitySeednow has a default constructor (see this bug). A state of anEntitySeedcan now be checked using the methodisValid(). After default construction the state isnot isValid(). - As all other facades classes in the Dune grid interface. Grid implementors can access the mutable and const
EntitySeedimplementation viaGrid::getRealImplementation(see this bug). - The type
Jacobianexported byGeometryhas been renamed toJacobianInverseTransposed. The old type is still there for backward compatibility. - The types
JacobianTransposedandJacobianInverseTransposedare now set by the Geometry implementations. Previously they were hardwired to beFieldMatricesof the proper size. The change allows to use special purpose data types for, e.g., structured grids, resulting in quite a bit of speed-up. It means, though, that you cannot rely on the Jacobians to be FieldMatrices anymore. The precise interface requirements for these matrices is still being worked out. GeometryGridnow uses the newMultiLinearGeometryinstead of the generic geometry implementation.- There is a new class
GmshWriter, which allows to write grids in the native format of the gmsh grid generator. EntitySeednow has a default constructor, this is especially helpful if you want to store sets ofEntitySeeds in anstd::vector, or a similar container.- Grids have new methods
leafGridViewandlevelGridView. These behave just like the correspondingleafViewandlevelViewmethods, respectively. Their advantage is that the names correspond to the method return types, which areLeafGridViewandLevelGridView, respectively. The old methods will be deprecated eventually. - The persistent container interface was cleaned up, some methods are deprecated.
- When the new flag
--enable-extra-utilsis set, the utility programs insrc/are built.
UGGrid
- You need to have at least UG-3.9.1-patch9 now to use
UGGrid. - If you have even UG-3.9.1-patch10 installed,
UGGridprovides dynamic load-balancing for vertex data. Thanks to Bernd Flemisch. UGGridcan do face and edge communication now. Thanks to Bernd Flemisch.- Parallel
UGGridimplements edge ids now.
Deprecated and removed features
-
The transition headers for the headers moved to dune-geometry were removed. Mostly quadrature rules and the generic reference element are affected.
-
Virtual refinement moved to dune-geometry and is deprecated in dune-grid.
-
The classes
ALUCubeGrid,ALUSimplexGrid, andALUConformGridhave been marked deprecated. Use instead the new classALUGridand specialize it withcubeorsimplexandnonconformingorconformingfrom<dune/grid/alugrid/common/declaration.hh>. More details -
The struct
VTKOptionshas been removed, it was alreadey deprecated in Dune 2.1. UseVTK::ascii,VTK::base64,VTK::appendedrawinstead ofVTKOptions::ascii,VTKOptions::binary,VTKOptions::binaryappended. Most of the issues will be resolved by executingfor i in `find . -name \*.[ch][ch] | xargs grep VTKOption | cut --delimiter=":" -f 1`; do sed "s/VTKOptions/VTK/g" $i> tmp && mv tmp $i done for i in `find . -name \*.[ch][ch] | xargs grep binary | cut --delimiter=":" -f 1`; do sed "s/VTK::binary/VTK::base64/g" $i> tmp && mv tmp $i done for i in `find . -name \*.[ch][ch] | xargs grep binaryappended | cut --delimiter=":" -f 1`; do sed "s/VTK::binaryappended/VTK::appendedraw/g" $i> tmp && mv tmp $i done -
The interface methods
ilevelbegin/ilevelendandileafbegin/ileafendon theEntityhave been deprecated and will be removed after Dune 2.3. Use the methodsibegin/iendon the corresponding grid view to obtain the intersection iterators. -
The classes
HierarchicIterator,LeafIterator,LevelIterator, and their header files have been deprecated and will be removed after Dune 2.3. Use theEntityIteratorinterface instead. -
The type
ctypeand the integerdimensionworldexported by theEntityfacade class are deprecated now, and will be removed eventually. They give geometrical information, which is not supposed to be known to a topological object like theEntity. Please useGeometry::ctypeandGeometry::coorddimensioninstead. -
Two constructors of
YaspGridhave been deprecated. These took the number of elements in aFieldVector<int>and the periodicity in aFieldVector<bool>. In their place, the corresponding constructors takingarray<int>andstd::bitsetare to be used.
Changes for maintainers of grid implementations
- There is now an interface class
EntitySeed, which forward calls to an implementation specific engine class. From now on users of grids only get this interface class, and not the engine directly. This brings EntitySeed in conformance with the rest of the grid interface. Implementors of grids may need to tweak their implementations a little.
dune-istl
- UMFPACK is a new linear solver backend. It is a direct solver which in some cases is faster up to factor of six compared to SuperLU.
BCRSMatrixhas a new build mode called implicit. It may reduce memory usage and computation time. Some problematic but rare corner cases for setting up BCRS matrices are now forbidden for all build modes.- There is a new implementation of a sequential algebraic multigrid method (
FastAMG), that better utilizes the memory bandwidth. - We have added a generalized conjugate gradient method (
GeneralizedPCGSolver), that allows for using preconditioners whose behaviour might change from step to step.
Deprecated and removed features
- All transition headers which included parallel headers were removed. The original headers were moved to
dune/istl/parallelor dune-common in Dune 2.1, use these instead. Matrix::transposedMultwas removed, it was deprecated in Dune 2.2. UseMatrix::mtvinstead.- The file
diagonalmatrix.hhcontaining the class of the same name has been moved fromdune-istltodune-common, since it is now used from thedune-geometrymodule.
dune-localfunctions
- Support for Lagrangian shape functions of arbitrary order on cubes of dimension 1, 2, and 3 has been added (thanks to Matthias Wohlmuth).
- Support for first-order dual mortar basis functions for simplices and cubes of any dimension has been added (thanks to Jonathan Youett).
- Rannacher-Turek elements in 3d have been implemented (thanks to Christoph Gersbacher).
- Support for Brezzi-Douglas-Marini elements of first order in 3d for cubes and of second order in 2d for simplices and cubes have been added (thanks to Human Rezaijafari). The interpolation operator is not or not properly implemented for these elements.
- Raviart-Thomas elements have a new and more convenient naming scheme. Use the new headers
<dune/localfunctions/raviartthomas/raviartthomascube.hh>,<dune/localfunctions/raviartthomas/raviartthomassimplex.hh>and the new classesRaviartThomasCubeLocalFiniteElementandRaviartThomasSimplexLocalFiniteElementinstead of the deprecated ones.
Deprecated and removed features
- The header
<dune/localfunctions/lagrange/q22d.hh>, deprecated in Dune 2.2, has been removed. Please use the more general<dune/localfunctions/lagrange/qk.hh>instead. - The header
<dune/localfunctions/lagrange/q2.hh>has been deprecated. Again, please use the more general<dune/localfunctions/lagrange/qk.hh>instead. - The support for ALGLIB has been removed. Some of its features are provided by GMP. Some others, like Lobatto points for Lagrangian shape functions, are no longer provided.
- The class
RannacherTurek2DLocalFiniteElement<D, R>is deprecated and will be removed after Dune 2.3. Please useRannacherTurekLocalFiniteElement<D, R, 2>instead.
dune-grid-howto
dune-grid-dev-howto
- The whole module is deprecated and will be removed.
IdentityGridwill be moved to dune-grid until the next release.
Known Bugs
- Our drop-in replacement of
std::shared_ptrdiffers slightly from the official implementation. WithDune::shared_ptronly the destructor of the base class A will be called in the following example:
struct A{...};
struct B:public A{...};
void voo()
{
shared_ptr<A> p = shared_ptr<A>(new B);
}
In contrast the shared_ptr in (std|std::tr1|boost) will call the destructor of B even if it is not virtual. We intend to resolve this issue only implicitly by eventually discarding our own reimplementation of shared_ptr:
- The pseudo inverse used in the generic geometries might fail for nearly singular matrices. This is not really a problem unless the grid is nearly degenerate.
- The parallel
UGGridmay return wrong ids on very complex adaptively refined and load-balanced grids. The reason is that the Dune grid interface mandates that two entities on different levels have the same id if they are copies. Therefore the UGGrid id/subId methods look through the ancestry of a given entity to see if there are copies. However, UG does so-called vertical load-balancing, which means that the ancestry may be distributed across different processors. Since the current code does not take that into account, wrong ids will be returned in the presence of vertical load-balancing. This is a potentially severe issue, because users do not get error messages, only ids that are tacitly wrong. PoolAllocatoris a stateful allocator and therefore not usable with containers according to standard before C++11.- Building shared libraries with CMake might break if you are using external static libraries compiled without support for position independent code (g++ -fpic).
A list of all bugs can be found online in our bug-tracker http://www.dune-project.org/flyspray/.
|
Legal Statements / Impressum |
Hosted by TU Dresden & Uni Heidelberg |
generated with Hugo v0.111.3
(Apr 14, 22:30, 2026)