1#ifndef DUNE_FEM_LOCALRESTRICTPROLONG_HH
2#define DUNE_FEM_LOCALRESTRICTPROLONG_HH
15 template<
class DiscreteFunctionSpace >
23 template<
class DiscreteFunctionSpace >
49 template<
class LFFather,
class LFSon,
class LocalGeometry >
51 const LocalGeometry &geometryInFather,
bool initialize )
const
55 assert( weight > 0.0 );
58 const int size = lfFather.size();
59 assert( lfFather.size() == lfSon.size() );
62 for(
int i = 0; i < size; ++i )
63 lfFather[ i ] = weight * lfSon[ i ];
67 for(
int i = 0; i < size; ++i )
68 lfFather[ i ] += weight * lfSon[ i ];
71 template<
class LFFather >
76 template<
class LFFather,
class LFSon,
class LocalGeometry >
78 const LocalGeometry &geometryInFather,
bool initialize )
const
80 const int size = lfFather.size();
81 assert( lfFather.size() == lfSon.size() );
82 for(
int i = 0; i < size; ++i )
83 lfSon[ i ] = lfFather[ i ];
90 template<
class Entity >
93 return son.geometry().volume() / father.geometry().volume();
105 template<
class DiscreteFunctionSpace >
124 template<
class LFFather,
class LFSon,
class LocalGeometry >
126 const LocalGeometry &geometryInFather,
bool initialize )
const
128 template<
class LFFather >
133 template<
class LFFather,
class LFSon,
class LocalGeometry >
135 const LocalGeometry &geometryInFather,
bool initialize )
const
Definition: bindguard.hh:11
Definition: common/localrestrictprolong.hh:16
Definition: common/localrestrictprolong.hh:25
bool needCommunication() const
do discrete functions need a communication after restriction / prolongation?
Definition: common/localrestrictprolong.hh:87
static DomainFieldType calcWeight(const Entity &father, const Entity &son)
Definition: common/localrestrictprolong.hh:91
DiscreteFunctionSpace DiscreteFunctionSpaceType
Definition: common/localrestrictprolong.hh:29
void restrictFinalize(LFFather &lfFather) const
Definition: common/localrestrictprolong.hh:72
DiscreteFunctionSpaceType::DomainFieldType DomainFieldType
Definition: common/localrestrictprolong.hh:31
void setFatherChildWeight(const DomainFieldType &weight)
explicit set volume ratio of son and father
Definition: common/localrestrictprolong.hh:43
void prolongLocal(const LFFather &lfFather, LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
prolong data to children
Definition: common/localrestrictprolong.hh:77
void restrictLocal(LFFather &lfFather, const LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
restrict data to father
Definition: common/localrestrictprolong.hh:50
DomainFieldType weight_
Definition: common/localrestrictprolong.hh:97
ConstantLocalRestrictProlong()
Definition: common/localrestrictprolong.hh:33
Definition: common/localrestrictprolong.hh:107
DiscreteFunctionSpace DiscreteFunctionSpaceType
Definition: common/localrestrictprolong.hh:111
void setFatherChildWeight(const DomainFieldType &weight)
explicit set volume ratio of son and father
Definition: common/localrestrictprolong.hh:121
bool needCommunication() const
do discrete functions need a communication after restriction / prolongation?
Definition: common/localrestrictprolong.hh:139
void restrictLocal(LFFather &lfFather, const LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
restrict data to father
Definition: common/localrestrictprolong.hh:125
DiscreteFunctionSpaceType::DomainFieldType DomainFieldType
Definition: common/localrestrictprolong.hh:113
void restrictFinalize(LFFather &lfFather) const
Definition: common/localrestrictprolong.hh:129
void prolongLocal(const LFFather &lfFather, LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
prolong data to children
Definition: common/localrestrictprolong.hh:134