DUNE-ACFEM (2.5.1)

Dune::ACFem::BoundarySupportedFunction< GridFunction, Indicator > Class Template Reference

A function with potentially partial support on the boundary. More...

#include <dune/acfem/functions/boundarysupportedfunction.hh>

+ Collaboration diagram for Dune::ACFem::BoundarySupportedFunction< GridFunction, Indicator >:

Classes

class  LocalFunction
 LocalFunction object which takes the value of a indicator into account. More...
 

Public Types

typedef LocalFunction LocalFunctionType
 Type of local function to export.
 
typedef std::decay< decltype(*std::declval< Indicator >) &&*std::declval< InnerIndicatorType >))>::type IndicatorType
 Resulting Boundary indicator type.
 
typedef GridFunction GridFunctionType
 Type of wrapped grid-function.
 
typedef DiscreteFunctionSpaceType::GridType GridType
 type of grid
 
typedef DiscreteFunctionSpaceType::DomainFieldType DomainFieldType
 domain type (from function space)
 
typedef DiscreteFunctionSpaceType::RangeFieldType RangeFieldType
 range type (from function space)
 
typedef DiscreteFunctionSpaceType::DomainType DomainType
 domain type (from function space)
 
typedef DiscreteFunctionSpaceType::RangeType RangeType
 range type (from function space)
 
typedef DiscreteFunctionSpaceType::JacobianRangeType JacobianRangeType
 jacobian type (from function space)
 
typedef DiscreteFunctionSpaceType::HessianRangeType HessianRangeType
 hessian type (from function space)
 

Public Member Functions

void evaluate (const DomainType &global, RangeType &result) const
 evaluate function on local coordinate local
 
void jacobian (const DomainType &global, JacobianRangeType &result) const
 evaluate function on local coordinate local
 
void hessian (const DomainType &global, HessianRangeType &result) const
 evaluate function on local coordinate local
 
const LocalFunctionType localFunction (const EntityType &entity) const
 Generate an ordinary local-function object which is ignorant of the value of the boundary-indicator, but supplies an init() method which can be used to make it indicator aware. More...
 
LocalFunctionType localFunction (const EntityType &entity)
 Generate an ordinary local-function object which is ignorant of the value of the boundary-indicator, but supplies an init() method which can be used to make it indicator aware. More...
 
const LocalFunctionType localFunction (const EntityType &entity, const IntersectionType &intersection) const
 Initialize a wrapped local function object for the given intersection. More...
 
LocalFunctionType localFunction (const EntityType &entity, const IntersectionType &intersection)
 Initialize a wrapped local function object for the given intersection. More...
 

Detailed Description

template<class GridFunction, class Indicator>
class Dune::ACFem::BoundarySupportedFunction< GridFunction, Indicator >

A function with potentially partial support on the boundary.

A boundary-supported function models a function with potentially partial support on the boundary of the discrete domain. Normally it only wraps an existing grid-function (that is a Fem::Function with additional Fem::LocalFunction property) and augments it with a boundary indicator. The global evaluate() and jacobian() methods remain unchanged, but the associated LocalFunction object is instrumented with additional constructors in order to be constructed from a Dune::Intersection object. The thus generated LocalFunction object evaluates to zero where BoundaryIndicatorInterface<Indicator>::applies() returns false. In principle this is the ExpressionTemplate for the product of the indicator function for a part of the boundary with some existing function. Consequently wrapping a function which already implements a BoundarySupportedFunction again results into restricting the support of that function further.

Note
This is somewhat inefficient, as it potentially implies if-clauses at every quadrature point. OTOH, this is a lower-dimensional issue. Also, the EntireBoundaryIndicatorType and EmptyBoundaryIndicatorType cases are handled efficiently. Problems which need differing kinds of boundary conditions on different parts of the boundary will need some overhead anyway (but please FIXME).

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)