Class template Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>

Inherits from Dune::XT::Functions::GridFunctionInterface.

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
class Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R> : public XT::Functions::GridFunctionInterface<typename GF::E, r, rC, R>

Can be used to apply a transformation to the evaluation of a given function.

Consider a given function u: R^d -> R^{d+2}, i.e. modeling the conservative variables [density (scalar), density*velocity (d-dimensional), energy (scalar)] in the context of the euler equations and one wishes to obtain a function modeling the primitive variables [density (scalar), velocity (d-dimensional), pressure (scalar)], the following code would achieve just that (with u_conservative already given):

const double gamma = 1.4;
const auto to_primitive = [&](const auto& conservative_variables) {
  const auto& density = conservative_variables[0];
  DomainType velocity;
  for (size_t ii = 0; ii < d; ++ii)
    velocity = conservative_variables[ii + 1] / density;
  const auto& energy = conservative_variables[m - 1];
  FieldVector<R, d + 2> primitive_variables;
  primitive_variables[0] = density;
  for (size_t ii = 0; ii < d; ++ii)
    primitive_variables[ii + 1] = velocity[ii];
  primitive_variables[m - 1] = (gamma - 1.) * (energy - 0.5 * density * velocity.two_norm2());
  return primitive_variables;
};
auto u_primitive = XT::Functions::make_transformed_function<d + 2, 1, R>(u_conservative, to_primitive);

To do

In general, it would be nicer to have a concatenation of two functions with matching dimensions.

Class Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction

Inherits from Dune::XT::Functions::ElementFunctionInterface.

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
class Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction : public XT::Functions::ElementFunctionInterface<typename GF::E, r, rC, R>

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::post_bind

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
void Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::post_bind(const ElementType &element) final

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::order

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
int Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::order(const XT::Common::Parameter &param = {}) const final

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::evaluate

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
RangeReturnType Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::evaluate(const DomainType &xx, const XT::Common::Parameter &param = {}) const final

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::jacobian

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
DerivativeRangeReturnType Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::jacobian(const DomainType&, const XT::Common::Parameter& = {}) const final

No documentation provided.

Constructor Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::TransformedLocalFunction

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::TransformedLocalFunction(const GF &function, const Transformation &transformation)

No documentation provided.

Field Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::function_

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
std::unique_ptr<GridFunctionInterface<typename GF::E, GF::r, GF::rC, typename GF::R>> Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::function_

No documentation provided.

Field Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::local_function_

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
std::unique_ptr<UntransformedLocalFunctionType> Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::local_function_

No documentation provided.

Field Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::transformation_

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
const Transformation &Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::transformation_

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::BaseType

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::BaseType = XT::Functions::ElementFunctionInterface<typename GF::E, r, rC, R>

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::UntransformedLocalFunctionType

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::UntransformedLocalFunctionType = typename GF::LocalFunctionType

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::UntransformedRangeType

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::UntransformedRangeType = typename UntransformedLocalFunctionType::RangeType

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::Transformation

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedLocalFunction::Transformation = std::function<RangeType(const UntransformedRangeType&)>

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::copy_as_grid_function_impl

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
ThisType *Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::copy_as_grid_function_impl() const override

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::copy_as_grid_function

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
std::unique_ptr<ThisType> Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::copy_as_grid_function() const

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::name

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
std::string Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::name() const final

No documentation provided.

Method Dune::XT::Functions::TransformedGridFunction::local_function

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
std::unique_ptr<LocalFunctionType> Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::local_function() const final

No documentation provided.

Constructor Dune::XT::Functions::TransformedGridFunction::TransformedGridFunction

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedGridFunction(const GF &func, std::function<TransformedRangeType(const UntransformedRangeType&)> transformation, const std::string &nm = "")

No documentation provided.

Constructor Dune::XT::Functions::TransformedGridFunction::TransformedGridFunction

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedGridFunction(const ThisType &other)

No documentation provided.

Constructor Dune::XT::Functions::TransformedGridFunction::TransformedGridFunction

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedGridFunction(ThisType&&) noexcept = default

No documentation provided.

Field Dune::XT::Functions::TransformedGridFunction::function_

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
std::unique_ptr<GridFunctionInterface<typename GF::E, GF::r, GF::rC, typename GF::R>> Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::function_

No documentation provided.

Field Dune::XT::Functions::TransformedGridFunction::transformation_

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
const typename TransformedLocalFunction::Transformation Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::transformation_

No documentation provided.

Field Dune::XT::Functions::TransformedGridFunction::name_

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
const std::string Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::name_

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::ThisType

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::ThisType = TransformedGridFunction<GF, r, rC, R>

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::BaseType

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::BaseType = XT::Functions::GridFunctionInterface<typename GF::E, r, rC, R>

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::UntransformedRangeType

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::UntransformedRangeType = typename TransformedLocalFunction::UntransformedRangeType

No documentation provided.

Type alias Dune::XT::Functions::TransformedGridFunction::TransformedRangeType

template<class GF, size_t r = GF::r, size_t rC = GF::rC, class R = typename GF::R>
using Dune::XT::Functions::TransformedGridFunction<GF, r, rC, R>::TransformedRangeType = typename TransformedLocalFunction::RangeType

No documentation provided.