dune-functions 2.9.0
|
A grid function induced by a global basis and a coefficient vector. More...
#include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>
Classes | |
class | LocalFunction |
Public Types | |
using | Basis = typename Base::Basis |
using | Vector = typename Base::Vector |
using | Domain = typename Base::Domain |
using | Range = R |
using | Traits = Imp::GridFunctionTraits< Range(Domain), typename Base::EntitySet, DefaultDerivativeTraits, 16 > |
using | Coefficient = Dune::AutonomousValue< decltype(std::declval< Vector >()[std::declval< typename Basis::MultiIndex >()])> |
using | GridView = typename Basis::GridView |
using | EntitySet = GridViewEntitySet< GridView, 0 > |
using | Tree = typename Basis::LocalView::Tree |
using | NodeToRangeEntry = HierarchicNodeToRangeMap |
using | LocalDomain = typename EntitySet::LocalCoordinate |
using | Element = typename EntitySet::Element |
Public Member Functions | |
template<class B_T , class V_T , class NTRE_T > | |
DiscreteGlobalBasisFunction (B_T &&basis, V_T &&coefficients, NTRE_T &&nodeToRangeEntry) | |
Create a grid-function, by wrapping the arguments in std::shared_ptr . More... | |
DiscreteGlobalBasisFunction (std::shared_ptr< const Basis > basis, std::shared_ptr< const V > coefficients, std::shared_ptr< const typename Base::NodeToRangeEntry > nodeToRangeEntry) | |
Create a grid-function, by moving the arguments in std::shared_ptr . More... | |
Range | operator() (const Domain &x) const |
Not implemented. More... | |
const Basis & | basis () const |
Return a const reference to the stored basis. More... | |
const Vector & | dofs () const |
Return the coefficients of this discrete function by reference. More... | |
const NodeToRangeEntry & | nodeToRangeEntry () const |
Return the stored node-to-range map. More... | |
const EntitySet & | entitySet () const |
Get associated set of entities the local-function can be bound to. More... | |
Protected Attributes | |
std::shared_ptr< const Data > | data_ |
Friends | |
DiscreteGlobalBasisFunctionDerivative< DiscreteGlobalBasisFunction > | derivative (const DiscreteGlobalBasisFunction &f) |
Derivative of the DiscreteGlobalBasisFunction More... | |
LocalFunction | localFunction (const DiscreteGlobalBasisFunction &t) |
Construct local function from a DiscreteGlobalBasisFunction. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<typename R , typename B , typename V > | |
auto | makeDiscreteGlobalBasisFunction (B &&basis, V &&vector) |
Generate a DiscreteGlobalBasisFunction. More... | |
A grid function induced by a global basis and a coefficient vector.
This implements the grid function interface by combining a given global basis and a coefficient vector.
This class supports mapping of subtrees to multi-component ranges, vector-valued shape functions, and implicit product spaces given by vector-valued coefficients. The mapping of these to the range type is done via the following multistage procedure:
1.Each leaf node in the local ansatz subtree is associated to an entry RE
of the range-type via the given node-to-range-entry-map. Based on this mapping each node is processed independently in the following way:
2.Now let the coefficients type C
per basis function be dim_C
-dimensional. Then we compute the dim(C) linear combinations (one for each coefficient index) of the shape function values with type V
independently storing them in a std::array<V,dim_C>
.
3.Finally the resulting array of function values is assigned to the nodal range entry RE
. Since both types may be different their entries are mapped to one another via flatVectorView()
. This will recursive enumerate the entries of the types in lexicographic order (unless flatVectorView
is specialized differently for a certain type).
As a consequence the nodal range entry is required to have a total dimension dim_RE = dim_C * dim_V
and to be compatible with flatVectorView()
.
B | Type of global basis |
V | Type of coefficient vectors |
NTRE | Type of node-to-range-entry-map that associates each leaf node in the local ansatz subtree with an entry in the range type |
R | Range type of this function |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Basis = typename Base::Basis |
|
inherited |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Domain = typename Base::Domain |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Range = R |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Traits = Imp::GridFunctionTraits<Range(Domain), typename Base::EntitySet, DefaultDerivativeTraits, 16> |
|
inherited |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Vector = typename Base::Vector |
|
inline |
Create a grid-function, by wrapping the arguments in std::shared_ptr
.
|
inline |
Create a grid-function, by moving the arguments in std::shared_ptr
.
|
inlineinherited |
Return a const reference to the stored basis.
|
inlineinherited |
Return the coefficients of this discrete function by reference.
|
inlineinherited |
Get associated set of entities the local-function can be bound to.
|
inlineinherited |
Return the stored node-to-range map.
|
inline |
Not implemented.
|
friend |
Derivative of the DiscreteGlobalBasisFunction
|
friend |
Construct local function from a DiscreteGlobalBasisFunction.
The obtained a local-function the satisfies the concept Dune::Functions::Concept::LocalFunction
. It must be bound to an entity from the entity set of the DiscreteGlobalBasisFunction before it can be used.
|
protectedinherited |