# Dune Core Modules (2.9.0)

Function implementations

Concrete function implementations. More...

## Classes

class  Dune::Functions::Polynomial< K >
A scalar polynomial implementation. More...

class  Dune::Functions::TrigonometricFunction< K, sinFactor, cosFactor >
A linear combination of trigonomic functions. More...

class  Dune::Functions::CallableFunctionWrapper< F >
Wrap a Dune::VirtualFunction into a callable object. More...

class  Dune::Functions::DifferentiableFunctionFromCallables< Range(Domain), DerivativeTraits, F >
Wrap a list of callable objects as derivative sequence modelling Concept::DifferentiableFunction<Range(Domain), DerivativeTraits> More...

class  Dune::Functions::DifferentiableFunctionFromCallables< Range(Domain), DerivativeTraits, F, DF, Derivatives... >
Wrap a list of callable objects as derivative sequence modelling Concept::DifferentiableFunction<Range(Domain), DerivativeTraits> More...

class  Dune::Functions::AnalyticGridViewFunction< Range(Domain), GV, F, DerivativeTraits >
Class wrapping any differentiable function as grid function. More...

class  Dune::Functions::ComposedGridFunction< OF, IF >
Composition of grid functions with another function. More...

class  Dune::Functions::DiscreteGlobalBasisFunction< B, V, NTRE, R >
A grid function induced by a global basis and a coefficient vector. More...

class  Dune::Functions::DiscreteGlobalBasisFunctionDerivative< DGBF >
Derivative of a DiscreteGlobalBasisFunction More...

class  Dune::Functions::FaceNormalGridFunction< GV >
Grid function implementing the piecewise element face normal. More...

## Functions

template<class K , int sinFactor, int cosFactor>
TrigonometricFunction< K, -cosFactor, sinFactor > Dune::Functions::derivative (const TrigonometricFunction< K, sinFactor, cosFactor > &f)
Obtain derivative of TrigonometricFunction function.

template<class F >
CallableFunctionWrapper< F > Dune::Functions::callable (const F &f)
Create a callable object from some Dune::VirtualFunction. More...

template<class F >
CallableFunctionWrapper< F > Dune::Functions::callable (const std::shared_ptr< F > &fp)
Create a callable object from std::shared_ptr<F> More...

template<class Signature , template< class > class DerivativeTraits, class... F>
DifferentiableFunctionFromCallables< Signature, DerivativeTraits, F... > Dune::Functions::makeDifferentiableFunctionFromCallables (const SignatureTag< Signature, DerivativeTraits > &signatureTag, F &&... f)
Create a DifferentiableFunction from callables. More...

template<class F , class GridView >
AnalyticGridViewFunction< typename std::invoke_result< F, typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate >::type(typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate), GridView, typename std::decay< F >::type > Dune::Functions::makeAnalyticGridViewFunction (F &&f, const GridView &gridView)
Create an AnalyticGridViewFunction from a function and a grid view. More...

template<class OF , class... IF>
auto Dune::Functions::makeComposedGridFunction (OF &&outerFunction, IF &&... innerFunction)
Create a ComposedGridFunction that composes grid-functions with another function. More...

template<typename R , typename B , typename V >
auto Dune::Functions::makeDiscreteGlobalBasisFunction (B &&basis, V &&vector)
Generate a DiscreteGlobalBasisFunction. More...

template<class F , class GridView >
AnalyticGridViewFunction< typename std::invoke_result< F, typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate >::type(typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate), GridView, typename std::decay< F >::type > makeAnalyticGridViewFunction (F &&f, const GridView &gridView)
Create an AnalyticGridViewFunction from a function and a grid view. More...

template<class OF , class... IF>
auto makeComposedGridFunction (OF &&outerFunction, IF &&... innerFunction)
Create a ComposedGridFunction that composes grid-functions with another function. More...

template<typename R , typename B , typename V >
auto makeDiscreteGlobalBasisFunction (B &&basis, V &&vector)
Generate a DiscreteGlobalBasisFunction. More...

## Friends

Polynomial Dune::Functions::Polynomial< K >::derivative (const Polynomial &p)
Obtain derivative of Polynomial function. More...

Derivative Dune::Functions::DifferentiableFunctionFromCallables< Range(Domain), DerivativeTraits, F >::derivative (const DifferentiableFunctionFromCallables &t)
Get derivative of DifferentiableFunctionFromCallables.

Derivative Dune::Functions::DifferentiableFunctionFromCallables< Range(Domain), DerivativeTraits, F, DF, Derivatives... >::derivative (const DifferentiableFunctionFromCallables &t)
Get derivative of DifferentiableFunctionFromCallables.

## Detailed Description

Concrete function implementations.

## ◆ callable() [1/2]

template<class F >
 CallableFunctionWrapper Dune::Functions::callable ( const F & f )

Create a callable object from some Dune::VirtualFunction.

Template Parameters
 F Function type derived from Dune::VirtualFunction
Parameters
 f The function to be wrapper

The returned object will only be valid as long f is valid. You can e.g. do the following:

// Create some F derived from VirtualFunction<D,R>
F f;
// store callable directly
auto fc = callable(f);
// store callable through default wrapper
std::function<R(D)> stdF = callable(f)
CallableFunctionWrapper< F > callable(const F &f)
Create a callable object from some Dune::VirtualFunction.
Definition: callable.hh:105

## ◆ callable() [2/2]

template<class F >
 CallableFunctionWrapper Dune::Functions::callable ( const std::shared_ptr< F > & fp )

Create a callable object from std::shared_ptr<F>

Template Parameters
 F Function type derived from Dune::VirtualFunction
Parameters
 fp std::shared_ptr to the function to be wrapper

The returned object will share ownership of fp using a std::shared_ptr. You can e.g. do the following:

// Create some F derived from VirtualFunction<D,R>
auto f = make_shared<F>();
// store callable directly
auto f1 = callable(f);
// store callable through default wrapper
std::function<R(D)> f2 = callable(f)
// Create some F derived from VirtualFunction<D,R> and only store
// it in the callable wrapper
auto f3 = callable(make_shared<F>());

## ◆ makeAnalyticGridViewFunction() [1/2]

template<class F , class GridView >
 AnalyticGridViewFunction< typename std::invoke_result< F, typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate >::type(typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate), GridView, typename std::decay< F >::type > makeAnalyticGridViewFunction ( F && f, const GridView & gridView )
related

Create an AnalyticGridViewFunction from a function and a grid view.

The returned function supports localFunction() and stores a copy of the original function.

Parameters
 f A function object supporting evaluation with global coordinates of the passed gridView. gridView The GridView the function should act on.
Returns
A function that models the GridFunction interface.

## ◆ makeAnalyticGridViewFunction() [2/2]

template<class F , class GridView >
 AnalyticGridViewFunction< typename std::invoke_result< F, typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate >::type(typename GridView::template Codim< 0 >::Geometry::GlobalCoordinate), GridView, typename std::decay< F >::type > makeAnalyticGridViewFunction ( F && f, const GridView & gridView )

Create an AnalyticGridViewFunction from a function and a grid view.

The returned function supports localFunction() and stores a copy of the original function.

Parameters
 f A function object supporting evaluation with global coordinates of the passed gridView. gridView The GridView the function should act on.
Returns
A function that models the GridFunction interface.

## ◆ makeComposedGridFunction() [1/2]

template<class OF , class... IF>
 auto makeComposedGridFunction ( OF && outerFunction, IF &&... innerFunction )
related

Create a ComposedGridFunction that composes grid-functions with another function.

For given inner grid-functions g0, ..., gn and an outer-function f this creates a grid-function representing f(g0(x), ..., gn(x)). The only assumption made, is that the range types of the inner-functions can be passed to the outer ones, and that all grid-functions are defined on the same EntitySet.

Notice that all functions are captured by value. To store references you can pass std::ref().

Parameters
 outerFunction The outer-function to be composed with the grid-functions. innerFunctions The inner grid-functions
Returns
A grid-function defined on the same EntitySet as the input-functions.

## ◆ makeComposedGridFunction() [2/2]

template<class OF , class... IF>
 auto makeComposedGridFunction ( OF && outerFunction, IF &&... innerFunction )

Create a ComposedGridFunction that composes grid-functions with another function.

For given inner grid-functions g0, ..., gn and an outer-function f this creates a grid-function representing f(g0(x), ..., gn(x)). The only assumption made, is that the range types of the inner-functions can be passed to the outer ones, and that all grid-functions are defined on the same EntitySet.

Notice that all functions are captured by value. To store references you can pass std::ref().

Parameters
 outerFunction The outer-function to be composed with the grid-functions. innerFunctions The inner grid-functions
Returns
A grid-function defined on the same EntitySet as the input-functions.

## ◆ makeDifferentiableFunctionFromCallables()

template<class Signature , template< class > class DerivativeTraits, class... F>
 DifferentiableFunctionFromCallables Dune::Functions::makeDifferentiableFunctionFromCallables ( const SignatureTag< Signature, DerivativeTraits > & signatureTag, F &&... f )

Create a DifferentiableFunction from callables.

This will return a wrapper modelling the DifferentiableFunction interface where the evaluation of the function and its derivatives are implemented by the given callable objects.

Parameters
 signatureTag A dummy parameter to pass the signature and derivative traits f Callable objects implementing the evaluation of the function and its derivatives
Returns
Object modelling DifferentiableFunction interface

## ◆ makeDiscreteGlobalBasisFunction() [1/2]

template<typename R , typename B , typename V >
 auto makeDiscreteGlobalBasisFunction ( B && basis, V && vector )
related

Generate a DiscreteGlobalBasisFunction.

Create a new DiscreteGlobalBasisFunction by wrapping the vector in a VectorBackend that allows the hierarchic resize and multi-index access in the DiscreteGlobalBasisFunction, if the vector does not yet fulfill the ConstVectorBackend concept.

Template Parameters
 R The range type this grid-function should represent when seen as a mapping R(Domain) with Domain the global coordinates of the associated GridView. This must be compatible with the basis and coefficients. See the documentation of DiscreteGlobalBasisFunction for more details.
Parameters
 basis The global basis or subspace basis associated with this grid-function vector The coefficient vector to use in combination with the basis.

References Dune::Functions::istlVectorBackend(), and Dune::models().

## ◆ makeDiscreteGlobalBasisFunction() [2/2]

template<typename R , typename B , typename V >
 auto makeDiscreteGlobalBasisFunction ( B && basis, V && vector )

Generate a DiscreteGlobalBasisFunction.

Create a new DiscreteGlobalBasisFunction by wrapping the vector in a VectorBackend that allows the hierarchic resize and multi-index access in the DiscreteGlobalBasisFunction, if the vector does not yet fulfill the ConstVectorBackend concept.

Template Parameters
 R The range type this grid-function should represent when seen as a mapping R(Domain) with Domain the global coordinates of the associated GridView. This must be compatible with the basis and coefficients. See the documentation of DiscreteGlobalBasisFunction for more details.
Parameters
 basis The global basis or subspace basis associated with this grid-function vector The coefficient vector to use in combination with the basis.

## ◆ derivative

template<class K >
 Polynomial derivative ( const Polynomial< K > & p )
friend

Obtain derivative of Polynomial function.

The derivative contains its own coefficient list and is not updated if the original function is changed. |  Legal Statements / Impressum  |  generated with Hugo v0.80.0 (Mar 19, 23:30, 2023)