Function Space Bases - for now only depending on GridView (maybe also for Grids or other entity sets - tbd) - Global interface minimalistic (only provide enough information for computing container sizes) - main interface through a LocalView obtained from the global basis - Prototype implementation for PQ1 and flat global index in dune-functions LocalView - LocalView returned by value (can have multiple views at the same time) - View can be bound to and unbound from elements and provides access to a bound element - Concrete interaction with a bound view through a nested tree object (name tbd) LocalView Tree - Tree represents an element-local tensor product space - Leafs correspond to a local finite elements from dune-localfunctions - Tree is implemented using dune-typetree - Leafs can map leaf-local consecutive indices for shape functions to - a unique index with respect to the entire local basis tree, which is consecutive and 0-based - a globally unique (for the entire function space) multi-index. The exact semantics and properties of this multi-index are not defined yet. There may be multiple classes of multi-indices with different properties and complexities. A very simple index would be of length 1 and consecutive. In general, indices can be of varying length and can contain non-consecutive entries (e.g. for the GeometryTypeIndex). At a later stage, those classes will need to be precisely defined to create an interface to container backends that will depend on the exact semantics of those classes. - There are interfaces to obtain either a single global index or to efficiently populate a container with all global indices for the currently bound grid element Smaller Changes - GridViewFunction was revised to work with new GridViewFunctionSpaceBasis - Replace FunctionHandle for derived functions with shared_ptr - Functions now longer inherit from enable_shared_from_this - Convenience interfaces by Carsten to convert to / from callables (via std::function) Open Questions - Container backends - Index transformations (for systems / blocking / etc.) - Avoid interface restrictions w.r.t. features like automatic backend construction (PDELab) or additional information like local sparsity structures (Carsten) - Semantics and properties of canonical multi-index classes - Constraints - higher-order derivatives of shape functions for non-affine geometry mappings - dune-localfunctions: Several smaller issues - revise global valued interface of dune-localfunctions Homework Oli: port additional bases (P^k) from dune-fufem Christian: functions interface for PDELab Christian / Steffen: discuss minimum backend interface from PDELab point of view