3 #ifndef DUNE_FUNCTIONS_GRIDFUNCTIONS_DISCRETESCALARGLOBALBASISFUNCTIONS_HH 4 #define DUNE_FUNCTIONS_GRIDFUNCTIONS_DISCRETESCALARGLOBALBASISFUNCTIONS_HH 8 #include <dune/common/shared_ptr.hh> 9 #include <dune/common/deprecated.hh> 24 template<
typename Basis,
typename V>
32 using Range =
typename V::value_type;
33 using LocalBasisRange =
typename Basis::LocalView::Tree::FiniteElement::Traits::LocalBasisType::Traits::RangeType;
42 using LocalBasisView =
typename Basis::LocalView;
43 using LocalIndexSet =
typename Basis::LocalIndexSet;
44 using size_type =
typename LocalBasisView::Tree::size_type;
54 : globalFunction_(&globalFunction)
55 , localBasisView_(globalFunction.basis().localView())
56 , localIndexSet_(globalFunction.basis().localIndexSet())
58 localDoFs_.reserve(localBasisView_.maxSize());
59 shapeFunctionValues_.reserve(localBasisView_.maxSize());
70 localBasisView_.bind(element);
71 localIndexSet_.bind(localBasisView_);
74 localDoFs_.resize(localIndexSet_.size());
75 for (size_type i = 0; i < localIndexSet_.size(); ++i)
76 localDoFs_[i] = globalFunction_->dofs()[localIndexSet_.index(i)[0]];
79 shapeFunctionValues_.resize(localIndexSet_.size());
84 localIndexSet_.unbind();
85 localBasisView_.unbind();
100 auto& basis = localBasisView_.tree().finiteElement().localBasis();
101 basis.evaluateFunction(x, shapeFunctionValues_);
102 for (size_type i = 0; i < basis.size(); ++i)
112 auto yy = localDoFs_[i];
113 yy *= shapeFunctionValues_[i];
121 return localBasisView_.element();
126 DUNE_THROW(NotImplemented,
"not implemented");
132 LocalBasisView localBasisView_;
133 LocalIndexSet localIndexSet_;
134 std::vector<typename V::value_type> localDoFs_;
135 mutable std::vector<LocalBasisRange> shapeFunctionValues_;
139 : entitySet_(basis.gridView())
140 , basis_(stackobject_to_shared_ptr(basis))
141 , dofs_(stackobject_to_shared_ptr(dofs))
145 : entitySet_(basis.gridView())
163 DUNE_THROW(NotImplemented,
"not implemented");
168 DUNE_THROW(NotImplemented,
"not implemented");
187 std::shared_ptr<const Basis> basis_;
188 std::shared_ptr<const V> dofs_;
194 #endif // DUNE_FUNCTIONS_GRIDFUNCTIONS_DISCRETESCALARGLOBALBASISFUNCTIONS_HH const Element & localContext() const
Definition: discretescalarglobalbasisfunction.hh:119
typename Basis::GridView GridView
Definition: discretescalarglobalbasisfunction.hh:28
void bind(const Element &element)
Bind LocalFunction to grid element.
Definition: discretescalarglobalbasisfunction.hh:68
const Basis & basis() const
Definition: discretescalarglobalbasisfunction.hh:150
const EntitySet & entitySet() const
Get associated EntitySet.
Definition: discretescalarglobalbasisfunction.hh:179
friend Traits::LocalFunctionTraits::DerivativeInterface derivative(const LocalFunction &t)
Definition: discretescalarglobalbasisfunction.hh:124
typename Basis::LocalView::Tree::FiniteElement::Traits::LocalBasisType::Traits::RangeType LocalBasisRange
Definition: discretescalarglobalbasisfunction.hh:33
typename V::value_type Range
Definition: discretescalarglobalbasisfunction.hh:32
GridView::template Codim< codim >::Entity Element
Type of Elements contained in this EntitySet.
Definition: gridviewentityset.hh:32
Definition: discretescalarglobalbasisfunction.hh:40
Definition: polynomial.hh:7
void unbind()
Definition: discretescalarglobalbasisfunction.hh:82
Traits class providing type information for DifferentiableFunction.
Definition: gridfunction.hh:41
A grid function induced by a global basis and a coefficient vector.
Definition: discretescalarglobalbasisfunction.hh:25
DiscreteScalarGlobalBasisFunction(std::shared_ptr< Basis > basis, std::shared_ptr< V > dofs)
Definition: discretescalarglobalbasisfunction.hh:144
Element::Geometry::LocalCoordinate LocalCoordinate
Type of local coordinates with respect to the Element.
Definition: gridviewentityset.hh:35
typename EntitySet::LocalCoordinate LocalDomain
Definition: discretescalarglobalbasisfunction.hh:35
typename EntitySet::Element Element
Definition: discretescalarglobalbasisfunction.hh:36
typename EntitySet::GlobalCoordinate Domain
Definition: discretescalarglobalbasisfunction.hh:31
friend LocalFunction localFunction(const DiscreteScalarGlobalBasisFunction &t)
Definition: discretescalarglobalbasisfunction.hh:171
friend Traits::DerivativeInterface derivative(const DiscreteScalarGlobalBasisFunction &t)
Definition: discretescalarglobalbasisfunction.hh:166
const V & dofs() const
Definition: discretescalarglobalbasisfunction.hh:155
LocalFunction(const DiscreteScalarGlobalBasisFunction &globalFunction)
Definition: discretescalarglobalbasisfunction.hh:53
GlobalFunction::Element Element
Definition: discretescalarglobalbasisfunction.hh:51
Range operator()(const Domain &x) const
Evaluate LocalFunction at bound element.
Definition: discretescalarglobalbasisfunction.hh:97
GlobalFunction::Range Range
Definition: discretescalarglobalbasisfunction.hh:50
DiscreteScalarGlobalBasisFunction(const Basis &basis, const V &dofs)
Definition: discretescalarglobalbasisfunction.hh:138
A grid function induced by a global basis and a coefficient vector.
Definition: discreteglobalbasisfunction.hh:69
Element::Geometry::GlobalCoordinate GlobalCoordinate
Definition: gridviewentityset.hh:36
Definition: gridfunction.hh:31
LocalDomain Domain
Definition: discretescalarglobalbasisfunction.hh:49