|
dune-functions
2.6-dev
|
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 = B |
| using | TreePath = TP |
| using | Vector = V |
| using | GridView = typename Basis::GridView |
| using | EntitySet = GridViewEntitySet< GridView, 0 > |
| using | Tree = typename Basis::LocalView::Tree |
| using | SubTree = typename TypeTree::ChildForTreePath< Tree, TreePath > |
| using | NodeToRangeEntry = NTRE |
| using | Domain = typename EntitySet::GlobalCoordinate |
| using | Range = R |
| using | LocalDomain = typename EntitySet::LocalCoordinate |
| using | Element = typename EntitySet::Element |
| using | Traits = Imp::GridFunctionTraits< Range(Domain), EntitySet, DefaultDerivativeTraits, 16 > |
Public Member Functions | |
| DiscreteGlobalBasisFunction (const Basis &basis, const TreePath &treePath, const V &coefficients, const NodeToRangeEntry &nodeToRangeEntry) | |
| DiscreteGlobalBasisFunction (std::shared_ptr< const Basis > basis, const TreePath &treePath, std::shared_ptr< const V > coefficients, std::shared_ptr< const NodeToRangeEntry > nodeToRangeEntry) | |
| const Basis & | basis () const |
| const TreePath & | treePath () const |
| const V & | dofs () const |
| const NodeToRangeEntry & | nodeToRangeEntry () const |
| Range | operator() (const Domain &x) const |
| const EntitySet & | entitySet () const |
| Get associated EntitySet. More... | |
Friends | |
| Traits::DerivativeInterface | derivative (const DiscreteGlobalBasisFunction &t) |
| LocalFunction | localFunction (const DiscreteGlobalBasisFunction &t) |
| Construct local function from 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. The part of the spanned space that should be covered by the function is determined by a tree path that specifies the corresponding local ansatz tree.
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 N in the local ansatz subtree is associated to an entry RE of the range-type via the given node-to-range-entry-map.
Now let C be the coefficient block for a single basis function and V the value of this basis function at the evaluation point. Notice that both may be scalar, vector, matrix, or general container valued.
2.Each entry of C is associated with a flat index j via FlatVectorBackend. This is normally a lexicographic index. The total scalar dimension according to those flat indices is dim(C). 3.Each entry of V is associated with a flat index k via FlatVectorBackend. This is normally a lexicographic index. The total scalar dimension according to those flat indices dim(V). 4.Each entry of RE is associated with a flat index k via FlatVectorBackend. This is normally a lexicographic index. The total scalar dimension according to those flat indices dim(RE). 5.Via those flat indices we now interpret C,V, and RE as vectors and compute the diadic product (C x V). The entries of this product are mapped to the flat indices for RE lexicographically. I.e. we set
RE[j*dim(V)+k] = C[j] * V[k]
Hence the range entry RE must have dim(RE) = dim(C)*dim(V).
| B | Type of lobal basis |
| TP | Type of tree path specifying the requested subtree of ansatz functions |
| 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, TP, V, NTRE, R >::Basis = B |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::Domain = typename EntitySet::GlobalCoordinate |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::Element = typename EntitySet::Element |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::EntitySet = GridViewEntitySet<GridView, 0> |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::GridView = typename Basis::GridView |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::LocalDomain = typename EntitySet::LocalCoordinate |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::NodeToRangeEntry = NTRE |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::Range = R |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::SubTree = typename TypeTree::ChildForTreePath<Tree, TreePath> |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::Traits = Imp::GridFunctionTraits<Range(Domain), EntitySet, DefaultDerivativeTraits, 16> |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::Tree = typename Basis::LocalView::Tree |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::TreePath = TP |
| using Dune::Functions::DiscreteGlobalBasisFunction< B, TP, V, NTRE, R >::Vector = V |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Get associated EntitySet.
|
inline |
|
inline |
|
inline |
|
friend |
1.8.13