Class template Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>

Inherits from Dune::XT::Common::ParametricInterface, Dune::XT::Common::WithLogger.

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
class Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField> : public Common::ParametricInterface, public Common::WithLogger<GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>>

Interface for functions which can be localized to an element.

We follow one strong assumption in dune-xt-functions: after being localized to an element, a local function (or a set of local functions) has to provide the order which is required to integrate it exactly on this element, and it should thus coincide with a polynomial of respective order on an element. While there exists non-polynomial data functions, we only have quadratures of finite order and no way to detect discontinuities of functions (thus the order of the local polynomial approximation must be provided). This encourages the user to really think about the data functions when implementing/using them, but avoids situations which could not be handled generically later on.

Method Dune::XT::Functions::GridFunctionInterface::logging_id

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
std::string Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::logging_id() const

No documentation provided.

Method Dune::XT::Functions::GridFunctionInterface::operator=

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
ThisType &Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::operator=(const ThisType&) = delete

No documentation provided.

Method Dune::XT::Functions::GridFunctionInterface::operator=

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
ThisType &Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::operator=(ThisType&&) = delete

No documentation provided.

Method Dune::XT::Functions::GridFunctionInterface::static_id

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
static std::string Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::static_id()

No documentation provided.

Method Dune::XT::Functions::GridFunctionInterface::copy_as_grid_function

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
std::unique_ptr<ThisType> Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::copy_as_grid_function() const

Returns a (shallow) copy of the function. actual implementation work is delegated to the private copy_as_function_impl combined with hiding copy_as_function in dervived classes, this allows us the a unique_ptr with correct type at all levels of the polymorphic hierarchy

Note

This is intended to be cheap, so make sure to share resources (but in a thread-safe way)!

Method Dune::XT::Functions::GridFunctionInterface::copy_as_grid_function_impl

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual ThisType *Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::copy_as_grid_function_impl() const = 0

No documentation provided.

Method Dune::XT::Functions::GridFunctionInterface::local_function

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual std::unique_ptr<LocalFunctionType> Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::local_function() const = 0

Returns the local function which can be bound to grid elements.

Note

If possible, the returned function should be able to live on its own, e.g. by copying the grid function.

Method Dune::XT::Functions::GridFunctionInterface::name

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual std::string Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::name() const

\ }

´´These methods should be implemented in order to identify the function.‘’

\ {

Method Dune::XT::Functions::GridFunctionInterface::operator-

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
Functions::DifferenceGridFunction<ThisType, ThisType> Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::operator-(const ThisType &other) const

\ {

Operators emulating numeric types.

Method Dune::XT::Functions::GridFunctionInterface::operator+

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
Functions::SumGridFunction<ThisType, ThisType> Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::operator+(const ThisType &other) const

No documentation provided.

Constructor Dune::XT::Functions::GridFunctionInterface::GridFunctionInterface

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
explicit Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::GridFunctionInterface(const Common::ParameterType &param_type = {}, const std::string &logging_prefix = "", const std::array<bool, 3> &logging_state = Common::default_logger_state())

No documentation provided.

Constructor Dune::XT::Functions::GridFunctionInterface::GridFunctionInterface

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::GridFunctionInterface(const ThisType &other)

No documentation provided.

Constructor Dune::XT::Functions::GridFunctionInterface::GridFunctionInterface

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::GridFunctionInterface(ThisType&) = default

No documentation provided.

Destructor Dune::XT::Functions::GridFunctionInterface::~GridFunctionInterface

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::~GridFunctionInterface() override = default

No documentation provided.

Variable Dune::XT::Functions::GridFunctionInterface::domain_dim

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
const size_t Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::domain_dim

No documentation provided.

Variable Dune::XT::Functions::GridFunctionInterface::range_dim

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
const size_t Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::range_dim

No documentation provided.

Variable Dune::XT::Functions::GridFunctionInterface::range_dim_cols

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
const size_t Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::range_dim_cols

No documentation provided.

Variable Dune::XT::Functions::GridFunctionInterface::d

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
const size_t Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::d

No documentation provided.

Variable Dune::XT::Functions::GridFunctionInterface::r

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
const size_t Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::r

No documentation provided.

Variable Dune::XT::Functions::GridFunctionInterface::rC

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
const size_t Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::rC

No documentation provided.

Variable Dune::XT::Functions::GridFunctionInterface::available

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
const bool Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::available

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::ThisType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::ThisType = GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::Logger

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::Logger = Common::WithLogger<GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>>

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::LocalFunctionType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::LocalFunctionType = ElementFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::ElementType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::ElementType = typename LocalFunctionType::ElementType

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::DomainFieldType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::DomainFieldType = typename LocalFunctionType::DomainFieldType

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::RangeFieldType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::RangeFieldType = typename LocalFunctionType::RangeFieldType

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::E

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::E = typename LocalFunctionType::E

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::D

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::D = typename LocalFunctionType::D

No documentation provided.

Type alias Dune::XT::Functions::GridFunctionInterface::R

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::R = typename LocalFunctionType::R

No documentation provided.

Function template Dune::XT::Functions::GridFunctionInterface::operator*

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
template<class OtherType>
std::enable_if_t<is_grid_function<OtherType>::value && internal::CombinedHelper<ThisType, OtherType, CombinationType::product>::available, Functions::ProductGridFunction<ThisType, as_grid_function_interface_t<OtherType>>> Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::operator*(const OtherType &other) const

No documentation provided.

Function template Dune::XT::Functions::GridFunctionInterface::operator/

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
template<class OtherType>
std::enable_if_t<is_grid_function<OtherType>::value && internal::CombinedHelper<ThisType, OtherType, CombinationType::fraction>::available, Functions::FractionGridFunction<ThisType, as_grid_function_interface_t<OtherType>>> Dune::XT::Functions::GridFunctionInterface<Element, rangeDim, rangeDimCols, RangeField>::operator/(const OtherType &other) const

No documentation provided.