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

Inherits from Dune::XT::Common::ParametricInterface, Dune::XT::Grid::ElementBoundObject.

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

Interface for a set of globalvalued functions, which can be evaluated locally on one Element.

See in particular RangeTypeSelector and DerivativeRangeTypeSelector for the interpretation of a function and its derivatives.

See also: RangeTypeSelector, DerivativeRangeTypeSelector

Method Dune::XT::Functions::ElementFunctionSetInterface::size

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual size_t Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::size(const Common::Parameter& = {}) const = 0

The number of functions in this set.

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::max_size

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual size_t Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::max_size(const Common::Parameter& = {}) const = 0

The maximum number of functions in this set over all elements. The following has to hold true:

auto local_function_set = ...;
size_t max_set_size = 0;
for (auto&& element : grid_view)
  max_set_size = std::max(max_set_size, local_function_set.bind(element).size(param));
assert(max_set_size <= local_function_set.max_size());

Method Dune::XT::Functions::ElementFunctionSetInterface::order

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual int Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::order(const Common::Parameter& = {}) const = 0

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::evaluate

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::evaluate(const DomainType&, std::vector<RangeType>&, const Common::Parameter& = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::jacobians

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::jacobians(const DomainType&, std::vector<DerivativeRangeType>&, const Common::Parameter& = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::derivatives

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::derivatives(const std::array<size_t, d> &alpha, const DomainType &point_in_reference_element, std::vector<DerivativeRangeType> &result, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::evaluate_set

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual std::vector<RangeType> Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::evaluate_set(const DomainType &point_in_reference_element, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::jacobians_of_set

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual std::vector<DerivativeRangeType> Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::jacobians_of_set(const DomainType &point_in_reference_element, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::derivatives_of_set

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual std::vector<DerivativeRangeType> Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::derivatives_of_set(const std::array<size_t, d> &alpha, const DomainType &point_in_reference_element, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::evaluate

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::evaluate(const DomainType &point_in_reference_element, std::vector<R> &result, const size_t row, const size_t col = 0, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::jacobians

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::jacobians(const DomainType &point_in_reference_element, std::vector<SingleDerivativeRangeType> &result, const size_t row, const size_t col = 0, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::derivatives

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::derivatives(const std::array<size_t, d> &alpha, const DomainType &point_in_reference_element, std::vector<SingleDerivativeRangeType> &result, const size_t row, const size_t col = 0, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::evaluate

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::evaluate(const DomainType &point_in_reference_element, std::vector<DynamicRangeType> &result, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::jacobians

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::jacobians(const DomainType &point_in_reference_element, std::vector<DynamicDerivativeRangeType> &result, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::derivatives

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
virtual void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::derivatives(const std::array<size_t, d> &alpha, const DomainType &point_in_reference_element, std::vector<DynamicDerivativeRangeType> &result, const Common::Parameter &param = {}) const

Note

Will throw Exceptions::not_bound_to_an_element_yet error if not bound yet!

Method Dune::XT::Functions::ElementFunctionSetInterface::assert_inside_reference_element

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::assert_inside_reference_element(const DomainType &point_in_reference_element) const

No documentation provided.

Method Dune::XT::Functions::ElementFunctionSetInterface::assert_correct_dims

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
static void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::assert_correct_dims(const size_t row, const size_t col, const std::string &caller)

No documentation provided.

Constructor Dune::XT::Functions::ElementFunctionSetInterface::ElementFunctionSetInterface

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
explicit Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::ElementFunctionSetInterface(const XT::Common::ParameterType &param_type = {})

\ }

Constructor Dune::XT::Functions::ElementFunctionSetInterface::ElementFunctionSetInterface

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

No documentation provided.

Constructor Dune::XT::Functions::ElementFunctionSetInterface::ElementFunctionSetInterface

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

No documentation provided.

Destructor Dune::XT::Functions::ElementFunctionSetInterface::~ElementFunctionSetInterface

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

No documentation provided.

Variable Dune::XT::Functions::ElementFunctionSetInterface::domain_dim

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

No documentation provided.

Variable Dune::XT::Functions::ElementFunctionSetInterface::range_dim

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

No documentation provided.

Variable Dune::XT::Functions::ElementFunctionSetInterface::range_dim_cols

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

No documentation provided.

Variable Dune::XT::Functions::ElementFunctionSetInterface::d

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

No documentation provided.

Variable Dune::XT::Functions::ElementFunctionSetInterface::r

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

No documentation provided.

Variable Dune::XT::Functions::ElementFunctionSetInterface::rC

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

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::ThisType

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

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::DomainFieldType

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

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::RangeFieldType

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

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::E

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::E = ElementType

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::D

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::D = DomainFieldType

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::R

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::R = RangeFieldType

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::DomainType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::DomainType = Dune::FieldVector<D, d>

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::RangeSelector

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::RangeSelector = RangeTypeSelector<R, r, rC>

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::DerivativeRangeSelector

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::DerivativeRangeSelector = DerivativeRangeTypeSelector<d, R, r, rC>

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::RangeType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::RangeType = typename RangeSelector::type

\ {

``These types are the standard types to be used.‘’

Type alias Dune::XT::Functions::ElementFunctionSetInterface::DerivativeRangeType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::DerivativeRangeType = typename DerivativeRangeSelector::type

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::SingleDerivativeRangeType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::SingleDerivativeRangeType = typename DerivativeRangeSelector::single_type

No documentation provided.

Type alias Dune::XT::Functions::ElementFunctionSetInterface::DynamicRangeType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::DynamicRangeType = typename RangeSelector::dynamic_type

\ }

``These types are used for large dimensions.‘’

\ {

Type alias Dune::XT::Functions::ElementFunctionSetInterface::DynamicDerivativeRangeType

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
using Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::DynamicDerivativeRangeType = typename DerivativeRangeSelector::dynamic_type

No documentation provided.

Function template Dune::XT::Functions::ElementFunctionSetInterface::single_derivative_helper_call

template<class Element, size_t rangeDim = 1, size_t rangeDimCols = 1, class RangeField = double>
template<class FullType, class SingleType>
void Dune::XT::Functions::ElementFunctionSetInterface<Element, rangeDim, rangeDimCols, RangeField>::single_derivative_helper_call(const std::vector<FullType> &val, const size_t row, const size_t col, std::vector<SingleType> &ret) const

No documentation provided.