Add support for Hermite elements to the global interpolate() method
The selected approach relies on the fact that
local interpolation of fLocal
assumes that derivative(fLocal)
is the localized version of the global derivative.
See #76 for a discussion of the two variants.
This also included support for local functions lf
where derivative(lf)
hands out a reference to a cached derivative. This potentially allows
to avoid the creation and copy of those local derivatives on each element
which can be relatively costly as e.g. in case of DiscreteGlobalBasisFunction
.
Currently, the latter does not implement such caching. To improve performance
for such function implementations this patch also implements local caching
of the local derivative object. The derivative()
method of the wrapper
hands out a reference to a single local derivative object that is already
approriately bound and thus mimics creation of a new local derivative
for the bound local function.
This MR also adds a CubicHermitePreBasis
that only serves for testing.
It is is not meant to be used and will be replaced by a more generic concept soon.