DUNE-ACFEM (unstable)
Residual estimator for the heat equation. More...
#include <dune/acfem/estimators/parabolicestimator.hh>
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) |
caclulate error on element intersections | |
void | communicateJumpContributions () |
Helper function in order to add the jump contributions on inter-process boundaries. | |
template<class LocalFunctionType > | |
void | estimateProcessBoundary (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 | estimateProcessBoundary (const IntersectionType &intersection, const ElementType &inside, const LocalFunctionType &uInside) |
Helper function for estimateProcessBoundary() 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, const BoundaryConditionsType &active) |
caclulate error over a boundary segment; yields zero for Dirichlet boundary values, otherwise computes More... | |
Detailed Description
class Dune::ACFem::ParabolicEulerEstimator< OldSolutionFunction, TimeProvider, ImplicitModel, ExplicitModel, Norm >
Residual estimator for the heat equation.
For the moment we clone the code from ellipticestimator.hh because this is easier at the moment. To re-use the elliptic estimator we would have to wrap explicitModel.fluxDivergence() into a grid-function and use that to define a modified RHS.
The code is somewhat inefficient in order to arrive at some working code. The code complete ignores any boundary information which might be present in the explicitModel. Neumann and Robin boundary contributions are only computed with the implicit model.
Also: the old and current discrete solutions are (at least ...) evaluated twice.
This is an L2-error-estimator, just like implemented in ALBERTA. Note that the estimator will only work for the implicit Euler scheme, it will not be efficient for higher order time discretizations.
- Bug:
- The estimator reuses code from the EllipticErrorEstimator. We should somehow try to find some common base class for this.
Member Function Documentation
◆ estimateBoundary()
|
inlineprotected |
caclulate 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::Tensor::contractInner(), Dune::ACFem::PDEModel::ModelFacade< ModelImpl >::flux(), Dune::ACFem::Tensor::pow(), and Dune::ACFem::PDEModel::ModelFacade< ModelImpl >::robinFlux().
Referenced by Dune::ACFem::ParabolicEulerEstimator< OldSolutionFunction, TimeProvider, ImplicitModel, ExplicitModel, Norm >::estimateLocal().
◆ estimateProcessBoundary()
|
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::ParabolicEulerEstimator< OldSolutionFunction, TimeProvider, ImplicitModel, ExplicitModel, Norm >::estimateLocal().
The documentation for this class was generated from the following file:
- dune/acfem/estimators/parabolicestimator.hh