edit

CHANGELOG dune-functions 2.11.0

Download the Dune 2.11.0 module sources

Release 2.11

Dune-functions no longer has a hard dependency on dune-typetree. If dune-typetree is not present, all features of dune-functions can be used, except for the deprecated NodeTag member typedefs of the node classes. After 2.11 the optional dependency on dune-typetree will be dropped, too. Hence downstream modules depending on typetree features that have not been moved to dune-common will have to make dune-typetree an explicit dependency.

New finite element bases

  • There is now an implementation of the Argyris finite element.

  • The RaviartThomasBasis can now be used with mixed grids in 3d including cubes, tetrahedra, pyramids, prisms.

  • The LagrangeDG(Pre)Basis supports selecting the polynomial order at runtime. Its static variables LagrangeDGPreBasis::dofsPer.* are deprecated.

  • Add HierarchicalLagrangeWithElementBubblePreBasis implemented in terms of LFEPreBasisMixin

  • The new MorleyPreBasis implements the non-conforming C1 Morley element on triangles.

  • The new CubicHermitePreBasis implements the cubic Hermite basis on simplices in 1d, 2d, and 3d. This C1 element is in general non-conforming since differentiability is only guaranteed at vertices (except for 1d where it coincides with cubic C1 splines). For 2d there is also the reduced variant which is part of the mixed DKT-element.

Changes to the C++ interface

  • Dune-functions now only depends on the modernized typetree interface provided in the dune/common/typetree/ subdirectory of the dune-typetree module. The plan is to eventually move this code to the dune-common module and then drop dune-typetree as dependency of dune-functions.

  • The nodes of a LocalView::Tree no longer derive from the base classes in dune-typetree but are still compatible with the utilities and algorithms from dune-typetree. The node members isLeaf, isPower, isComposite, and NodeTag are deprecated and the respective properties can be derived by checking the new node concepts from dune/common/typetree/nodeconcepts.hh. The node members Child<i>, ChildType, and ChildTypes are deprecated in favour of using Dune::TypeTree::Child.

  • Using the methods power or composite to construct function space basis trees without an explicit index merging strategy argument will now issue a warning. This warning informs that the default index merging strategy will change after the 2.11 release. More specifically, it will change from BlockedLexicographic to FlatLexicographic for the composite method, and from BlockedInterleaved to FlatInterleaved for the power method. The consequence is that default indexing is always flat, which is the most common form of indexing.

  • Similarly, when calling functions.Power to construct a product of finite element bases in a Python program, you will now get a warning saying that the default for the layout parameter will change from lexicographic to interleaved after the 2.11 release. After these changes, C++ and Python will have the same defaults.

  • The GridFunction class (and indeed everything else that inherits from TypeErasureBase) now implements the operator bool cast operator, which allows to check whether the GridFunction object contains a valid object or not.

  • Add function wrappers CoarseFunctionOnFineGridView and FineFunctionOnCoarseGridView that allow to represent a grid function on a grid view if the function is itself only defined on an entity set that is coarser or finer than the the target grid view.

  • Add the utility class GeometryInAncestor providing the geometric fine-in-coarse element embedding across multiple levels.

  • Add the function makeISTLVector to construct an dune-istl vector type compatible with a container descriptor of a basis.

  • The new utility class TransformedFiniteElementMixin can be used to implement local finite elements where the element specific basis functions are obtained by a linear transformation of the reference basis functions (additionally to the classical geometric pull back). This can be used, e.g., to implement Hermite-type C1 elements.

  • The consistency guarantees between leaf-nodes and the corresponding finiteElement got relaxed. This is necessary to add multidomain support. The change is that if node.size() == 0 accessing finiteElement or element() is undefined behaviour. To check for this, the basis nodes have a new member function node.empty() which is equivalent to node.size()==0. These changes are also reflected in the updated tests.

  • Any global basis implementation is required to implement a method .containerDescriptor() returning a container descriptor or ContainerDescriptors::Unknown as a fallback type. The default behavior implemented in DefaultGlobalBasis is to return the container descriptor provided by its pre-basis.

Changes to the Python interface

  • One overload of forEachBoundaryDOF is now available via the Python interface.

Deprecations and removals

  • The deprecated header functionspacebases/sizeinfo.hh has been removed.

  • The deprecated header functionspacebases/defaultnodetorangemap.hh has been removed.

  • The deprecated header functionspacebases/hierarchicvectorwrapper.hh has been removed.

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Feb 9, 23:36, 2026)