1 #ifndef DUNE_FEM_SPACE_DISCONTINUOUSGALERKIN_LOCALRESTRICTPROLONG_HH_ 2 #define DUNE_FEM_SPACE_DISCONTINUOUSGALERKIN_LOCALRESTRICTPROLONG_HH_ 29 template<
class DiscreteFunctionSpace,
bool applyInverse >
59 template<
class LFFather,
class LFSon,
class LocalGeometry >
61 const LocalGeometry &geometryInFather,
bool initialize )
const 64 const DomainFieldType weight = (
weight_ <
DomainFieldType( 0 ) ? ConstantLocalRestrictProlongType::calcWeight( lfFather.entity(), lfSon.entity() ) :
weight_);
66 assert( weight > 0.0 );
77 typedef typename LFSon :: EntityType EntityType ;
78 typedef typename EntityType :: Geometry Geometry;
79 const EntityType& sonEntity = lfSon.entity();
80 const Geometry sonGeo = sonEntity.geometry();
82 QuadratureType quad( sonEntity, 2*lfFather.order()+1 );
83 const int nop = quad.nop();
84 for(
int qp = 0; qp < nop; ++qp )
86 RangeFieldType quadWeight = quad.weight( qp );
93 quadWeight *= sonGeo.integrationElement( quad.point(qp) );
96 quadWeight *= weight ;
99 lfSon.evaluate( quad[ qp ], value );
103 temp_.
axpy( geometryInFather.global( quad.point( qp ) ), value );
105 lfFather.axpy( geometryInFather.global( quad.point( qp ) ), value );
115 template<
class LFFather,
class LFSon,
class LocalGeometry >
117 const LocalGeometry &geometryInFather,
bool initialize )
const 121 typedef typename LFSon :: EntityType EntityType ;
122 typedef typename EntityType :: Geometry Geometry;
123 const EntityType& sonEntity = lfSon.entity();
124 const Geometry sonGeo = sonEntity.geometry();
126 QuadratureType quad( sonEntity, 2*lfSon.order()+1 );
127 const int nop = quad.nop();
128 for(
int qp = 0; qp < nop; ++qp )
130 RangeFieldType quadWeight = quad.weight( qp );
137 quadWeight *= sonGeo.integrationElement( quad.point(qp) );
141 lfFather.evaluate( geometryInFather.global( quad.point( qp ) ), value );
143 lfSon.axpy( quad[ qp ], value );
165 template<
class FunctionSpaceImp,
class Gr
idPartImp,
int polOrd,
template<
class >
class StorageImp >
171 FunctionSpaceImp, GridPartImp, polOrd, StorageImp >,
false >
BaseType;
177 template<
class FunctionSpaceImp,
class Gr
idPartImp,
template<
class >
class StorageImp >
191 template<
class FunctionSpaceImp,
class Gr
idPartImp,
int polOrd,
template<
class >
class StorageImp >
203 template<
class FunctionSpaceImp,
class Gr
idPartImp,
template<
class >
class StorageImp >
217 template<
class FunctionSpaceImp,
class Gr
idPartImp,
int polOrd,
template<
class >
class StorageImp >
229 template<
class FunctionSpaceImp,
class Gr
idPartImp,
template<
class >
class StorageImp >
243 template<
class FunctionSpaceImp,
class Gr
idPartImp,
int polOrd,
template<
class >
class StorageImp >
254 template<
class FunctionSpaceImp,
class Gr
idPartImp,
template<
class >
class StorageImp >
269 #endif // #ifndef DUNE_FEM_SPACE_DISCONTINUOUSGALERKIN_LOCALRESTRICTPROLONG_HH_ DiscontinuousGalerkinLocalRestrictProlong< LagrangeDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp >, true > BaseType
Definition: discontinuousgalerkin/localrestrictprolong.hh:248
DiscontinuousGalerkinLocalRestrictProlong< LegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp >, false > BaseType
Definition: discontinuousgalerkin/localrestrictprolong.hh:197
VectorSpaceTraits< DomainField, RangeField, dimD, dimR >::RangeFieldType RangeFieldType
Intrinsic type used for values in the range field (usually a double)
Definition: functionspaceinterface.hh:62
Definition: space/discontinuousgalerkin/declaration.hh:15
DiscreteFunctionSpace DiscreteFunctionSpaceType
Definition: discontinuousgalerkin/localrestrictprolong.hh:35
DefaultLocalRestrictProlong(const LegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp > &space)
Definition: discontinuousgalerkin/localrestrictprolong.hh:198
Definition: space/discontinuousgalerkin/declaration.hh:22
BaseType::GridPartType GridPartType
Definition: hierarchiclegendre.hh:102
void prolongLocal(const LFFather &lfFather, LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
Definition: discontinuousgalerkin/localrestrictprolong.hh:116
DiscreteFunctionSpaceType::RangeFieldType RangeFieldType
Definition: discontinuousgalerkin/localrestrictprolong.hh:38
DefaultLocalRestrictProlong(const LagrangeDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, 0, StorageImp > &)
Definition: discontinuousgalerkin/localrestrictprolong.hh:259
DiscontinuousGalerkinLocalRestrictProlong(const DiscreteFunctionSpaceType &space)
Definition: discontinuousgalerkin/localrestrictprolong.hh:47
CachingQuadrature< GridPartType, 0 > QuadratureType
Definition: discontinuousgalerkin/localrestrictprolong.hh:43
DiscreteFunctionSpaceType::GridPartType GridPartType
Definition: discontinuousgalerkin/localrestrictprolong.hh:41
Definition: discontinuousgalerkin/localrestrictprolong.hh:30
LocalMassMatrixType localMassMatrix_
Definition: discontinuousgalerkin/localrestrictprolong.hh:155
void restrictLocal(LFFather &lfFather, const LFSon &lfSon, const LocalGeometry &geometryInFather, bool initialize) const
restrict data to father
Definition: discontinuousgalerkin/localrestrictprolong.hh:60
void applyInverse(MassCaller &caller, const EntityType &entity, LocalFunction &lf) const
Definition: localmassmatrix.hh:231
bool needCommunication() const
Definition: discontinuousgalerkin/localrestrictprolong.hh:152
void init(const EntityType &entity)
initialize the local function for an entity
Definition: temporary.hh:115
DiscontinuousGalerkinLocalRestrictProlong< DiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp >, false > BaseType
Definition: discontinuousgalerkin/localrestrictprolong.hh:171
Definition: common/localrestrictprolong.hh:24
DefaultLocalRestrictProlong(const LagrangeDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp > &space)
Definition: discontinuousgalerkin/localrestrictprolong.hh:249
Definition: space/discontinuousgalerkin/declaration.hh:36
DefaultLocalRestrictProlong(const HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, 0, StorageImp > &)
Definition: discontinuousgalerkin/localrestrictprolong.hh:234
Definition: coordinate.hh:4
DefaultLocalRestrictProlong(const DiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, 0, StorageImp > &)
Definition: discontinuousgalerkin/localrestrictprolong.hh:182
Definition: space/discontinuousgalerkin/declaration.hh:29
void clear()
set all DoFs to zero
Definition: localfunction.hh:170
LocalMassMatrix< DiscreteFunctionSpaceType, QuadratureType > LocalMassMatrixType
Definition: discontinuousgalerkin/localrestrictprolong.hh:45
DiscontinuousGalerkinLocalRestrictProlong< HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp >, false > BaseType
Definition: discontinuousgalerkin/localrestrictprolong.hh:223
DefaultLocalRestrictProlong(const LegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, 0, StorageImp > &)
Definition: discontinuousgalerkin/localrestrictprolong.hh:208
TemporaryLocalFunction< DiscreteFunctionSpace > temp_
Definition: discontinuousgalerkin/localrestrictprolong.hh:157
void setFatherChildWeight(const DomainFieldType &weight)
Definition: discontinuousgalerkin/localrestrictprolong.hh:53
DomainFieldType weight_
Definition: discontinuousgalerkin/localrestrictprolong.hh:156
DiscreteFunctionSpaceType::DomainFieldType DomainFieldType
Definition: discontinuousgalerkin/localrestrictprolong.hh:37
DefaultLocalRestrictProlong(const HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp > &space)
Definition: discontinuousgalerkin/localrestrictprolong.hh:224
DefaultLocalRestrictProlong(const DiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrd, StorageImp > &space)
Definition: discontinuousgalerkin/localrestrictprolong.hh:172
VectorSpaceTraits< DomainField, RangeField, dimD, dimR >::RangeType RangeType
Type of range vector (using type of range field) has a Dune::FieldVector type interface.
Definition: functionspaceinterface.hh:70
Definition: common/localrestrictprolong.hh:16
ThisType & axpy(const RangeFieldType s, const LocalFunction< BasisFunctionSet, T > &other)
add a multiple of another local function to this one
Definition: localfunction.hh:202
DiscreteFunctionSpaceType::RangeType RangeType
Definition: discontinuousgalerkin/localrestrictprolong.hh:39