Dune-Fufem 2.11-git
Loading...
Searching...
No Matches
Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits > Class Template Reference

A wrapper representing the pullback of a grid function wrt a grid morphism. More...

#include <dune/fufem/functions/pullbackfunction.hh>

Public Types

using GridView = typename GridMorphism::Inverse::GridView< RawGridView >
 
using EntitySet = Dune::Functions::GridViewEntitySet< GridView, 0 >
 
using Element = typename EntitySet::Element
 
using Domain = typename EntitySet::GlobalCoordinate
 
using LocalDomain = typename EntitySet::LocalCoordinate
 
using Range = std::decay_t< decltype(std::declval< RawGridFunction >()(std::declval< RawDomain >()))>
 
using LocalFunction = PullBackLocalFunction
 

Public Member Functions

 PullBackFunction (GridFunction function, GridMorphism morphism)
 Create PullBackFunction from GridFunction and GridMorphism.
 
Range operator() (const Domain &x) const
 Evaluate function in global coordinates.
 
const EntitySetentitySet () const
 Return the EntitySet associated to this GridViewFunction.
 

Friends

auto derivative (const PullBackFunction &f)
 Obtain global derivative of this function.
 
LocalFunction localFunction (const PullBackFunction &f)
 Create a LocalFunction for evaluation in local coordinates.
 

Detailed Description

template<class GridFunction, class GridMorphism, template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
class Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >

A wrapper representing the pullback of a grid function wrt a grid morphism.

Template Parameters
GridFunctionType of the wrapped grid function
GridMorphismThe morphism from source grid to target grid

Let \( M : G_S \to G_T \) be a morphism between a source grid \(G_S\) and a target grid \(G_T\), i.e., \(M\) translates entities and gridviews of the source grid \(G_S\) to entities and gridviews of the target grid \(G_T\). Furthermore let \(f_T:G_T \to R\) be a grid function on the target grid \(G_T\) with some range \(R\). Then the morphism induces a grid function \(f_S = M^*f_T = f_T\circ M :G_S \to R\) which is denoted the pullback (in the sense of precomposition) of \(f_T\) with respect to \(M\). This class implements \(f_S\) for given \(f_T\) and \(M\).

A GridMorphism object morphism has to support the following operations to translate from source grid to target grid:

GridMorphism::Grid // Type of target grid
GridMorphism::GridView<SourceGridView> // Type of target gridview corresponding to source gridview
GridMorphism::Inverse // Type of inverse morphism
morphism.gridView(sourceGridView) // Obtain target gridview from source gridview
morphism.entity(sourceEntity) // Obtain target grid entity from source grid entity
morphism.inverse() // Obtain inverse morphism
Note
In case that the domains of \(G_S\) and \(G_T\) are smooth manifolds and that \(M\) corresponds to a diffeomorphism between these manifolds, the function \(f_S\) is denoted the pullback of \(f_T\) with respect to the diffeomorphism. Here we generalize this notation to the potentially nonsmooth case.
Note
While we consider abstract morphisms between grid objects, this should not be confused with the fiber product in category theory which is also denoted as pullback.

Member Typedef Documentation

◆ Domain

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
using Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::Domain = typename EntitySet::GlobalCoordinate

◆ Element

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
using Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::Element = typename EntitySet::Element

◆ EntitySet

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
using Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::EntitySet = Dune::Functions::GridViewEntitySet<GridView, 0>

◆ GridView

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
using Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::GridView = typename GridMorphism::Inverse::GridView<RawGridView>

◆ LocalDomain

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
using Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::LocalDomain = typename EntitySet::LocalCoordinate

◆ LocalFunction

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
using Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::LocalFunction = PullBackLocalFunction

◆ Range

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
using Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::Range = std::decay_t<decltype(std::declval<RawGridFunction>()(std::declval<RawDomain>()))>

Constructor & Destructor Documentation

◆ PullBackFunction()

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::PullBackFunction ( GridFunction  function,
GridMorphism  morphism 
)
inline

Create PullBackFunction from GridFunction and GridMorphism.

Parameters
functionThe GridFunction that should be represented on gridView
morphismThe GridMorphism translating grid quantities

Notice that both arguments are stored by value.

Member Function Documentation

◆ entitySet()

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
const EntitySet & Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::entitySet ( ) const
inline

Return the EntitySet associated to this GridViewFunction.

◆ operator()()

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
Range Dune::Fufem::Experimental::PullBackFunction< GridFunction, GridMorphism, DerivativeTraits >::operator() ( const Domain x) const
inline

Evaluate function in global coordinates.

Note
This is not implemented and will throw an exception.

Friends And Related Symbol Documentation

◆ derivative

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
auto derivative ( const PullBackFunction< GridFunction, GridMorphism, DerivativeTraits > &  f)
friend

Obtain global derivative of this function.

◆ localFunction

template<class GridFunction , class GridMorphism , template< class > class DerivativeTraits = Dune::Functions::DefaultDerivativeTraits>
LocalFunction localFunction ( const PullBackFunction< GridFunction, GridMorphism, DerivativeTraits > &  f)
friend

Create a LocalFunction for evaluation in local coordinates.


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