1#ifndef DUNE_FEMPY_FUNCTION_GRIDFUNCTIONVIEW_HH
2#define DUNE_FEMPY_FUNCTION_GRIDFUNCTIONVIEW_HH
19 template< class GF, bool isDiscreteFunction = std::is_base_of< Fem::IsDiscreteFunction, GF >::value >
28 typedef typename GF::EntityType
Entity;
29 typedef typename GF::RangeType
Value;
35 , localFunction_( gf ) {}
44 void bind (
const Entity &entity ) { localFunction_.bind( entity ); }
46 template <
class IntersectionType>
48 { localFunction_.bind(intersection, side); }
60 typedef typename GF::EntityType
Entity;
61 typedef typename GF::RangeType
Value;
67 typedef typename DiscreteFunctionSpace::BasisFunctionSetType BasisFunctionSet;
71 :
Base(gf.gridPart(), gf.name(), gf.order())
74 localDofVector_.reserve( DiscreteFunctionSpace::localBlockSize * space().blockMapper().maxNumDofs() );
80 basisFunctionSet_.evaluateAll( x, localDofVector_, value );
86 basisFunctionSet_ = space().basisFunctionSet( entity );
87 localDofVector_.resize( basisFunctionSet_.size() );
88 gf_.getLocalDofs( entity, localDofVector_ );
93 basisFunctionSet_ = BasisFunctionSet();
94 localDofVector_.resize( 0u );
97 template <
class IntersectionType>
105 BasisFunctionSet basisFunctionSet_;
106 DynamicVector< typename GF::DofType > localDofVector_;
115 std::enable_if_t< !std::is_base_of< Fem::IsGridFunctionView, GF >::value &&
116 std::is_base_of< Fem::HasLocalFunction, GF >::value,
int > = 0
Definition: bindguard.hh:11
static GridFunctionView< GF > localFunction(const GF &gf)
Definition: gridfunctionview.hh:118
void defaultIntersectionBind(GF &gf, const Intersection &intersection, IntersectionSide side)
Definition: intersectionside.hh:25
typename Impl::ConstLocalFunction< GridFunction >::Type ConstLocalFunction
Definition: const.hh:604
IntersectionSide
Definition: intersectionside.hh:10
Definition: bindable.hh:18
GridPart::IntersectionType IntersectionType
Definition: bindable.hh:21
void evaluate(const Point &x, RangeType &ret) const
Definition: bindable.hh:116
Definition: gridfunctionview.hh:17
Definition: gridfunctionview.hh:20
GF::EntityType Entity
Definition: gridfunctionview.hh:28
GridFunctionView(const GF &gf)
Definition: gridfunctionview.hh:33
void bind(const Entity &entity)
Definition: gridfunctionview.hh:44
void bind(const IntersectionType &intersection, IntersectionSide side)
Definition: gridfunctionview.hh:47
Entity::Geometry::LocalCoordinate LocalCoordinate
Definition: gridfunctionview.hh:31
GF::RangeType Value
Definition: gridfunctionview.hh:29
void unbind()
Definition: gridfunctionview.hh:45
Entity::Geometry::LocalCoordinate LocalCoordinate
Definition: gridfunctionview.hh:63
void bind(const Entity &entity)
Definition: gridfunctionview.hh:84
void unbind()
Definition: gridfunctionview.hh:91
GF::RangeType Value
Definition: gridfunctionview.hh:61
GridFunctionView(const GF &gf)
Definition: gridfunctionview.hh:70
GF::EntityType Entity
Definition: gridfunctionview.hh:60
void bind(const IntersectionType &intersection, IntersectionSide side)
Definition: gridfunctionview.hh:98