DUNE-ACFEM (2.5.1)

Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm > Class Template Reference

An standard residual estimator for elliptic problems. More...

#include <dune/acfem/estimators/ellipticestimator.hh>

+ Collaboration diagram for Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm >:

Public Member Functions

template<class DiscreteFunctionType >
RangeFieldType estimate (const DiscreteFunctionType &uh)
 calculate estimator
 

Protected Member Functions

template<class DiscreteFunctionType >
void estimateLocal (const ElementType &entity, const DiscreteFunctionType &uh)
 caclulate error on element
 
template<class DiscreteFunctionType >
void estimateIntersection (const IntersectionType &intersection, const ElementType &inside, const DiscreteFunctionType &uh, const typename DiscreteFunctionType::LocalFunctionType &uInside)
 caclulate error on element boundary intersections
 
template<bool conforming, class LocalFunctionType >
RangeFieldType estimateIntersection (const IntersectionType &intersection, const ElementType &inside, const LocalFunctionType &uInside, const ElementType &outside, const LocalFunctionType &uOutside) const
 caclulate error on element intersections More...
 
void communicateJumpContributions ()
 Helper function in order to add the jump contributions on inter-process boundaries.
 
template<class LocalFunctionType >
void estimateProcessorBoundary (const IntersectionType &intersection, const ElementType &inside, const LocalFunctionType &uInside)
 Compute the jump contribution to the estimator on process-boundaries. More...
 
template<bool conforming, class LocalFunctionType >
void estimateProcessorBoundary (const IntersectionType &intersection, const ElementType &inside, const LocalFunctionType &uInside)
 Helper function for estimateProcessorBoundary() in order to distinguish between conforming and non-conforming intersection (only that we could not use non-conforming intersection anyway).
 
template<class LocalFunctionType >
void estimateBoundary (const IntersectionType &intersection, const ElementType &inside, const LocalFunctionType &uLocal, bool isNeumann, bool isRobin)
 calculate error over a boundary segment; yields zero for Dirichlet boundary values, otherwise computes More...
 

Detailed Description

template<class DiscreteFunctionSpace, class Model, enum FunctionSpaceNorm Norm = H1Norm>
class Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm >

An standard residual estimator for elliptic problems.

Member Function Documentation

◆ estimateBoundary()

template<class DiscreteFunctionSpace , class Model , enum FunctionSpaceNorm Norm = H1Norm>
template<class LocalFunctionType >
void Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm >::estimateBoundary ( const IntersectionType &  intersection,
const ElementType &  inside,
const LocalFunctionType &  uLocal,
bool  isNeumann,
bool  isRobin 
)
inlineprotected

calculate error over a boundary segment; yields zero for Dirichlet boundary values, otherwise computes

\[ h\,||\nu\cdot(A\,\nabla u) + \alpha\,u - g_N||ˆ2 \]

References Dune::ACFem::max().

Referenced by Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm >::estimateLocal().

◆ estimateIntersection()

template<class DiscreteFunctionSpace , class Model , enum FunctionSpaceNorm Norm = H1Norm>
template<bool conforming, class LocalFunctionType >
RangeFieldType Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm >::estimateIntersection ( const IntersectionType &  intersection,
const ElementType &  inside,
const LocalFunctionType &  uInside,
const ElementType &  outside,
const LocalFunctionType &  uOutside 
) const
inlineprotected

caclulate error on element intersections

Bug:
Rather a bug of the ModelInterface: ModelInterface.setEntity() should be replaced by a proper local operator-germ. Otherwise computing jump-residuals is too costly because we have to flip between inside and outside all the time.

◆ estimateProcessorBoundary()

template<class DiscreteFunctionSpace , class Model , enum FunctionSpaceNorm Norm = H1Norm>
template<class LocalFunctionType >
void Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm >::estimateProcessorBoundary ( const IntersectionType &  intersection,
const ElementType &  inside,
const LocalFunctionType &  uInside 
)
inlineprotected

Compute the jump contribution to the estimator on process-boundaries.

Note
This is like estimateIntersection but can only compute one half of the estimate as
  • we currently only live on the InteriorBorderPartition
  • according to Robert K. ghost entities are still buggy for conforming meshes

In principle this is quite crappy in terms of code maintainabilitz because we have to duplicate the code for the computation of the jumps. Sad story.

Referenced by Dune::ACFem::EllipticEstimator< DiscreteFunctionSpace, Model, Norm >::estimateLocal().


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 29, 22:29, 2024)