dune-functions
2.7.1
|
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 | Vector = V |
using | Coefficient = std::decay_t< 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 = 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 | |
template<class B_T , class V_T , class NTRE_T > | |
DiscreteGlobalBasisFunction (B_T &&basis, V_T &&coefficients, NTRE_T &&nodeToRangeEntry) | |
DiscreteGlobalBasisFunction (std::shared_ptr< const Basis > basis, std::shared_ptr< const V > coefficients, std::shared_ptr< const NodeToRangeEntry > nodeToRangeEntry) | |
const Basis & | basis () const |
const V & | dofs () const |
const NodeToRangeEntry & | nodeToRangeEntry () const |
Range | operator() (const Domain &x) const |
const EntitySet & | entitySet () const |
Get associated EntitySet. 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 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 flatVectorView. 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 flatVectorView. 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 flatVectorView. 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 |
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 = B |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Coefficient = std::decay_t<decltype(std::declval<Vector>()[std::declval<typename Basis::MultiIndex>()])> |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Domain = typename EntitySet::GlobalCoordinate |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Element = typename EntitySet::Element |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::EntitySet = GridViewEntitySet<GridView, 0> |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::GridView = typename Basis::GridView |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::LocalDomain = typename EntitySet::LocalCoordinate |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::NodeToRangeEntry = NTRE |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Range = R |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Traits = Imp::GridFunctionTraits<Range(Domain), EntitySet, DefaultDerivativeTraits, 16> |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Tree = typename Basis::LocalView::Tree |
using Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >::Vector = V |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Get associated EntitySet.
|
inline |
|
inline |