KASKADE 7 development version
Public Types | Public Member Functions | Static Public Attributes | List of all members
Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo > Class Template Reference

Defines assembly of hierarchically extended problems for defining DLY style error estimators. More...

#include <hierarchicErrorEstimator.hh>

Detailed Description

template<class LinearFunctional, class ExtensionAnsatzVariables, class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
class Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >

Defines assembly of hierarchically extended problems for defining DLY style error estimators.

This class defines the weak formulation of hierarchical error estimation. It is a model of the LinearVariationalProblem concept.

Assume you have discretized a linear(ized) variational functional using a Galerkin ansatz space \( V_l \). The Hessian is \( A_{ll} \) and the gradient at \(x_0=0 \) is \( b_l \), such that the solution (minimizer) \( x_l \) satisfies \( A_{ll}x_l = -b_l \).

Now we extend the ansatz space by another (probably higher order) ansatz space \( V_h \). The complete system to be solved would be

\[ \begin{bmatrix} A_{ll} & A_{lh} \\ A_{hl} & A_{hh} \end{bmatrix} \begin{bmatrix} x_l \\ x_h \end{bmatrix} = - \begin{bmatrix} b_l \\ b_h \end{bmatrix}. \]

Since the assembly and solution of the large system is quite expensive, we fix \( x_l \) obtained before and solve the defect equation

\[ A_{hh} x_h = -(b_h+A_{hl}x_l) \]

instead. And since the error \( x_h \) is structurally oscillatory, one Jacobi iteration will do for error estimation purposes, such that we only need to assemble the diagonal of \( A_{hh} \) (lumping).

Important things to note:

Template Parameters
LinearFunctionalthe linear variational weak formulation for which the error will be estimated
ExtensionAnsatzVariablesa description of the ansatz variables and hierarchic extension spaces
ExtensionTestVariablesa description of the test variables and hierarchic extension spaces
D2BlockInfoproivdes static block information

D2BlockInfo defines which blocks should be assembled and which ones should be lumped (only diagonal assembled). The default is HierarchicErrorEstimatorDetail::DefaultD2, which takes only the symmetric blocks and lumps all of them.

Definition at line 152 of file fem/hierarchicErrorEstimator.hh.

Public Types

typedef LinearFunctional::Scalar Scalar
 
typedef ExtensionAnsatzVariables AnsatzVars
 
typedef ExtensionTestVariables TestVars
 
typedef FEAnsatzVars::VariableSet FESolution
 

Public Member Functions

 HierarchicErrorEstimator (LinearFunctional const &lf_, FESolution const &ul_)
 
DomainCache createDomainCache (int flags) const
 
BoundaryCache createBoundaryCache (int flags) const
 
int integrationOrder (Cell const &cell, int shapeFunctionOrder, bool boundary) const
 

Static Public Attributes

static ProblemType const type = LinearFunctional::type
 

Member Typedef Documentation

◆ AnsatzVars

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
typedef ExtensionAnsatzVariables Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::AnsatzVars

Definition at line 162 of file fem/hierarchicErrorEstimator.hh.

◆ FESolution

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
typedef FEAnsatzVars::VariableSet Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::FESolution

Definition at line 165 of file fem/hierarchicErrorEstimator.hh.

◆ Scalar

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
typedef LinearFunctional::Scalar Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::Scalar

Definition at line 161 of file fem/hierarchicErrorEstimator.hh.

◆ TestVars

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
typedef ExtensionTestVariables Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::TestVars

Definition at line 163 of file fem/hierarchicErrorEstimator.hh.

Constructor & Destructor Documentation

◆ HierarchicErrorEstimator()

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::HierarchicErrorEstimator ( LinearFunctional const &  lf_,
FESolution const &  ul_ 
)
inline
Parameters
lf_the linear weak formulation for which the error will be estimated. This object can be temporary, since a copy is held internally. Thus, it should not be too large.
ul_the approximate solution of lf_ on the lower order ansatz space.

Definition at line 437 of file fem/hierarchicErrorEstimator.hh.

Member Function Documentation

◆ createBoundaryCache()

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
BoundaryCache Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::createBoundaryCache ( int  flags) const
inline

Definition at line 445 of file fem/hierarchicErrorEstimator.hh.

◆ createDomainCache()

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
DomainCache Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::createDomainCache ( int  flags) const
inline

Definition at line 440 of file fem/hierarchicErrorEstimator.hh.

◆ integrationOrder()

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
int Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::integrationOrder ( Cell const &  cell,
int  shapeFunctionOrder,
bool  boundary 
) const
inline

Definition at line 450 of file fem/hierarchicErrorEstimator.hh.

Member Data Documentation

◆ type

template<class LinearFunctional , class ExtensionAnsatzVariables , class ExtensionTestVariables = ExtensionAnsatzVariables, class D2BlockInfo = HierarchicErrorEstimatorDetail::DefaultD2<LinearFunctional>>
ProblemType const Kaskade::HierarchicErrorEstimator< LinearFunctional, ExtensionAnsatzVariables, ExtensionTestVariables, D2BlockInfo >::type = LinearFunctional::type
static

Definition at line 160 of file fem/hierarchicErrorEstimator.hh.


The documentation for this class was generated from the following file: