1#ifndef DUNE_FEM_SPACE_PADAPTIVE_RESTRICTPROLONG_HH
2#define DUNE_FEM_SPACE_PADAPTIVE_RESTRICTPROLONG_HH
4#include <dune/geometry/referenceelements.hh>
19 template<
class G,
class LagrangePo
intSetProv
ider >
24 typedef typename Grid::ctype
ctype;
28 typedef typename Grid::template Codim< 0 >::Entity
Entity;
33 typedef typename Entity::LocalGeometry LocalGeometry;
35 typedef typename LagrangePointSet::template Codim< 0 >::SubEntityIteratorType
43 template<
class DomainField >
46 template<
class LFFather,
class LFSon,
class LocalGeometry >
48 const LocalGeometry &geometryInFather,
bool initialize )
const
50 static const int dimRange = LFSon::dimRange;
52 const Entity &father = lfFather.entity();
53 const Entity &son = lfSon.entity();
55 auto refSon = referenceElement< ctype, dimension >( son.type() );
59 const EntityDofIterator send = pointSet.template endSubEntity< 0 >( 0 );
60 for( EntityDofIterator sit = pointSet.template beginSubEntity< 0 >( 0 ); sit != send; ++sit )
62 const unsigned int dof = *sit;
63 const DomainVector &pointInFather = pointSet.point( dof );
64 const DomainVector pointInSon = geometryInFather.local( pointInFather );
65 if( refSon.checkInside( pointInSon ) )
67 typename LFSon::RangeType phi;
68 lfSon.evaluate( pointInSon, phi );
74 template<
class LFFather >
79 template<
class LFFather,
class LFSon,
class LocalGeometry >
81 const LocalGeometry &geometryInFather,
bool initialize )
const
83 static const int dimRange = LFFather::dimRange;
85 const Entity &son = lfSon.entity();
89 const EntityDofIterator send = pointSet.template endSubEntity< 0 >( 0 );
90 for( EntityDofIterator sit = pointSet.template beginSubEntity< 0 >( 0 ); sit != send; ++sit )
92 const unsigned int dof = *sit;
94 const DomainVector pointInFather = geometryInFather.global( pointInSon );
96 typename LFFather::RangeType phi;
97 lfFather.evaluate( pointInFather, phi );
106 template<
class ArgLocal,
class DestLocal >
108 DestLocal &destLocal )
const
110 static const int dimRange = DestLocal::dimRange;
112 const Entity &entity = destLocal.entity();
116 const EntityDofIterator send = pointSet.template endSubEntity< 0 >( 0 );
117 for( EntityDofIterator sit = pointSet.template beginSubEntity< 0 >( 0 ); sit != send; ++sit )
119 const unsigned int dof = *sit;
122 typename ArgLocal::RangeType phi;
123 argLocal.evaluate( localPoint, phi );
Definition: bindguard.hh:11
static const Point & coordinate(const Point &x)
Definition: coordinate.hh:14
Definition: padaptivespace/restrictprolong.hh:21
const LagrangePointSet & lagrangePointSet(const Entity &entity) const
Definition: padaptivespace/restrictprolong.hh:134
Grid::ctype ctype
Definition: padaptivespace/restrictprolong.hh:24
PLagrangeLocalRestrictProlong(const LagrangePointSetProvider &lpsProvider)
Definition: padaptivespace/restrictprolong.hh:39
void prolongLocal(const LFFather &lfFather, LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
Definition: padaptivespace/restrictprolong.hh:80
Grid::template Codim< 0 >::Entity Entity
Definition: padaptivespace/restrictprolong.hh:28
bool needCommunication() const
Definition: padaptivespace/restrictprolong.hh:132
const LagrangePointSetProvider & lpsProvider_
Definition: padaptivespace/restrictprolong.hh:140
void restrictFinalize(LFFather &lfFather) const
Definition: padaptivespace/restrictprolong.hh:75
FieldVector< ctype, dimension > DomainVector
Definition: padaptivespace/restrictprolong.hh:26
LagrangePointSetProvider::LagrangePointSetType LagrangePointSet
Definition: padaptivespace/restrictprolong.hh:30
void localInterpolation(const ArgLocal &argLocal, DestLocal &destLocal) const
Definition: padaptivespace/restrictprolong.hh:107
void restrictLocal(LFFather &lfFather, const LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
Definition: padaptivespace/restrictprolong.hh:47
void setFatherChildWeight(const DomainField &weight)
Definition: padaptivespace/restrictprolong.hh:44
static const int dimension
Definition: padaptivespace/restrictprolong.hh:25
G Grid
Definition: padaptivespace/restrictprolong.hh:22