Add implementation of topological interleaving for dune-functions interface

This MR basically synthesizes the local ordering of degrees of freedom to only one class, namely TopologicalInterleaving, and makes the interface clear by reducing the interplay with the final basis function to the strict minimum. That is, the need of a entity set, a tree structure, and a blocking rule per node.

Over the years I fixed bugs and added support for cases that PDELab and dune-functions.

This code is a modification of the local entity ordering from PDELab which as later modified in the dune-assembler1 module, and later moved back to pdelab into a branch named dune-assembler/main-multithreaded. Not all of the features on those branches are incorporated here (like multi-threading, different codim finite element, multi-domains, constraints containers, communication of degrees of freedom), but they should not be hard to bring them back if needed.

In addition, this adds a proper pre-basis in the sense of dune-functions, which allows to combine pdelab basis and merging strategies with those of dune-functions.

  1. https://gitlab.dune-project.org/santiago.ospina/dune-assembler

Edited by Santiago Ospina De Los Ríos

Merge request reports

Loading