1 #ifndef DUNE_FEM_DGMASSPASS_HH
2 #define DUNE_FEM_DGMASSPASS_HH
4 #include <dune/geometry/referenceelements.hh>
28 template<
class DiscreteModelImp,
class PreviousPassImp >
30 :
public LocalDGPass< DiscreteModelImp, PreviousPassImp >
78 int volumeQuadOrd = -1,
int faceQuadOrd=-1) :
82 communicationManager_( space() ),
98 if(problem_.hasMass())
101 for (
IteratorType it = space().begin(); it != endit; ++it)
119 const int updEn_numDofs = updEn.numDofs();
125 const double massVolElinv = massVolInv(geo);
127 if((
int)massMatrix_.size() != updEn_numDofs)
129 massMatrix_.resize(updEn_numDofs);
133 for (
int i = 0; i < updEn_numDofs; ++i)
135 massMatrix_[i] = 0.0;
142 const int volQuad_nop = volQuad.nop();
143 for (
int l = 0; l < volQuad_nop; ++l)
145 const double intel = geo.integrationElement(volQuad.point(l))
146 * massVolElinv * volQuad.weight(l);
151 for (
int i = 0; i < updEn_numDofs; ++i)
154 bsetEn.evaluate(i, volQuad[l], tau_ );
157 massVal_.mv(tau_,tauTmp_);
159 massMatrix_[i] += bsetEn.evaluateSingle(i, volQuad[l], tauTmp_ ) * intel;
164 for(
int i=0; i<updEn_numDofs; ++i)
166 updEn[i] *= factor_ * massMatrix_[i];
180 double volume = geo.volume();
182 typedef typename GeometryType :: ctype coordType;
183 enum { dim = GridType :: dimension };
184 const Dune::ReferenceElement< coordType, dim > & refElem =
185 Dune::ReferenceElements< coordType, dim >::general(geo.type());
187 double volRef = refElem.volume();
188 return volRef/volume;
194 std::shared_ptr< const DiscreteFunctionSpaceType > spc_;
200 const double factor_;
202 mutable std::vector<RangeFieldType> massMatrix_;
Definition: bindguard.hh:11
static std::shared_ptr< T > referenceToSharedPtr(T &t)
Definition: memory.hh:19
Implementation of operator to calculate gradient of a given discrete function using the pass concept.
Definition: dgmasspass.hh:31
BaseType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
Definition: dgmasspass.hh:42
BaseType::RangeType RangeType
Definition: dgmasspass.hh:54
BaseType::IntersectionIteratorType IntersectionIteratorType
Definition: dgmasspass.hh:51
BaseType::LocalFunctionType LocalFunctionType
Definition: dgmasspass.hh:44
BaseType::GridPartType GridPartType
Definition: dgmasspass.hh:46
BaseType::DiscreteModelType DiscreteModelType
Definition: dgmasspass.hh:36
RangeType::value_type RangeFieldType
Definition: dgmasspass.hh:55
BaseType::Geometry GeometryType
Definition: dgmasspass.hh:50
DiscreteModelType::MassFactorType MassFactorType
Definition: dgmasspass.hh:61
BaseType::Entity EntityType
Definition: dgmasspass.hh:49
LocalDGMassPass(DiscreteModelType &problem, PreviousPassType &pass, const DiscreteFunctionSpaceType &spc, double factor=-1.0, int volumeQuadOrd=-1, int faceQuadOrd=-1)
Definition: dgmasspass.hh:74
@ dimRange
Definition: dgmasspass.hh:63
BaseType::BasisFunctionSetType BasisFunctionSetType
Definition: dgmasspass.hh:43
BaseType::VolumeQuadratureType VolumeQuadratureType
Definition: dgmasspass.hh:57
BaseType::IteratorType IteratorType
Definition: dgmasspass.hh:48
BaseType::ArgumentType ArgumentType
Definition: dgmasspass.hh:39
BaseType::PreviousPassType PreviousPassType
Definition: dgmasspass.hh:37
virtual ~LocalDGMassPass()
Destructor.
Definition: dgmasspass.hh:91
BaseType::DestinationType DestinationType
Definition: dgmasspass.hh:41
CommunicationManager< DiscreteFunctionSpaceType > CommunicationManagerType
Definition: dgmasspass.hh:59
BaseType::GridType GridType
Definition: dgmasspass.hh:47
void pass(const GlobalArgumentType &arg) const
Definition: common/pass.hh:263
void setEntity(const EntityType &entity)
Definition: modelcaller.hh:97
void mass(const EntityType &entity, const VolumeQuadratureType &quadrature, const int qp, MassFactorType &massFactor)
Definition: modelcaller.hh:199
Definition: localdg/pass.hh:42
virtual void finalize(const ArgumentType &arg, DestinationType &dest) const
Some timestep size management.
Definition: localdg/pass.hh:193
DiscreteModelType::Traits::DestinationType DestinationType
Definition: localdg/pass.hh:63
BaseType::ArgumentType ArgumentType
Definition: localdg/pass.hh:60
DiscreteModelType::Traits::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
Definition: localdg/pass.hh:66
GridPartType::IntersectionIteratorType IntersectionIteratorType
Definition: localdg/pass.hh:79
DestinationType * dest_
Definition: localdg/pass.hh:581
PreviousPassImp PreviousPassType
Repetition of template arguments.
Definition: localdg/pass.hh:56
const int volumeQuadOrd_
Definition: localdg/pass.hh:600
DiscreteModelImp DiscreteModelType
Repetition of template arguments.
Definition: localdg/pass.hh:54
DiscreteFunctionSpaceType::IteratorType IteratorType
Iterator over the space.
Definition: localdg/pass.hh:68
DestinationType::LocalFunctionType LocalFunctionType
Definition: localdg/pass.hh:85
DiscreteFunctionSpaceType::GridType GridType
Definition: localdg/pass.hh:71
@ dimRange
Definition: localdg/pass.hh:90
DiscreteModelCallerType * caller_
Definition: localdg/pass.hh:577
GridType::template Codim< 0 >::Geometry Geometry
Definition: localdg/pass.hh:81
DiscreteModelType::Traits::VolumeQuadratureType VolumeQuadratureType
Definition: localdg/pass.hh:64
DiscreteFunctionSpaceType::GridPartType GridPartType
Definition: localdg/pass.hh:72
DiscreteFunctionSpaceType::BasisFunctionSetType BasisFunctionSetType
Definition: localdg/pass.hh:76
DiscreteFunctionSpaceType::RangeType RangeType
Definition: localdg/pass.hh:74