1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
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
|