KASKADE 7 development version
Public Types | Public Member Functions | List of all members
Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType > Class Template Reference

Dirichlet boundary conditions by the penalty approach. More...

#include <boundaryConditions.hh>

Detailed Description

template<class GridView, int components, class ScalarType = typename GridView::ctype>
class Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType >

Dirichlet boundary conditions by the penalty approach.

For the Dirichlet boundary condition \( u|_{\partial \Omega} = u_D \), this defines the term \( \frac{\gamma}{2} h_F^{-2} |u-u_D|^2 \) (and its derivatives), which can be added to the variational functional. The scaling by the face diameter \( h_F \) is supposed to provide nearly optimal convergence rates for linear finite elements.

The dependence on \( h_F^{-2} \) can lead to ill-conditioned stiffness matrices on mesh refinement. Consider using DirichletNitscheBoundary instead.

Definition at line 88 of file boundaryConditions.hh.

Public Types

using Vector = Dune::FieldVector< Scalar, components >
 

Public Member Functions

void moveTo (typename GridView::IntersectionIterator const &fi)
 Moves the boundary condition to a new face. More...
 
void setBoundaryData (Scalar gamma_, Vector const &u_, Vector const &ud)
 Defines the data for the boundary condition. More...
 
Scalar d0 () const
 
Vector d1 (VariationalArg< Scalar, dim > const &argT) const
 
Dune::FieldMatrix< Scalar, components, components > d2 (VariationalArg< Scalar, dim > const &argTest, VariationalArg< Scalar, dim > const &argAnsatz) const
 

Member Typedef Documentation

◆ Vector

template<class GridView , int components, class ScalarType = typename GridView::ctype>
using Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType >::Vector = Dune::FieldVector<Scalar,components>

Definition at line 96 of file boundaryConditions.hh.

Member Function Documentation

◆ d0()

template<class GridView , int components, class ScalarType = typename GridView::ctype>
Scalar Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType >::d0 ( ) const
inline

Definition at line 129 of file boundaryConditions.hh.

◆ d1()

template<class GridView , int components, class ScalarType = typename GridView::ctype>
Vector Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType >::d1 ( VariationalArg< Scalar, dim > const &  argT) const
inline

Definition at line 131 of file boundaryConditions.hh.

◆ d2()

template<class GridView , int components, class ScalarType = typename GridView::ctype>
Dune::FieldMatrix< Scalar, components, components > Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType >::d2 ( VariationalArg< Scalar, dim > const &  argTest,
VariationalArg< Scalar, dim > const &  argAnsatz 
) const
inline

Definition at line 137 of file boundaryConditions.hh.

◆ moveTo()

template<class GridView , int components, class ScalarType = typename GridView::ctype>
void Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType >::moveTo ( typename GridView::IntersectionIterator const &  fi)
inline

Moves the boundary condition to a new face.

This is called before calling d0,d1,d2 on a new face, and here the weight \( h_F^{-2} \) is computed once.

Definition at line 104 of file boundaryConditions.hh.

◆ setBoundaryData()

template<class GridView , int components, class ScalarType = typename GridView::ctype>
void Kaskade::DirichletPenaltyBoundary< GridView, components, ScalarType >::setBoundaryData ( Scalar  gamma_,
Vector const &  u_,
Vector const &  ud 
)
inline

Defines the data for the boundary condition.

Call this from the evaluateAt method in the derived class.

Parameters
gammathe nominal penalty factor (which is internally multiplied by h^{-2} to ensure convergence).
uthe displacement around which is linearized
udthe given Dirichlet boundary value

Definition at line 121 of file boundaryConditions.hh.


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