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¶
Method Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::order¶
Method Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::evaluate¶
Method Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::jacobian¶
Constructor Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::TransformedLocalFunction¶
Field Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::function_¶
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¶
Type alias Dune::XT::Functions::TransformedGridFunction::TransformedLocalFunction::UntransformedLocalFunctionType¶
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¶
Method Dune::XT::Functions::TransformedGridFunction::copy_as_grid_function¶
Method Dune::XT::Functions::TransformedGridFunction::name¶
Method Dune::XT::Functions::TransformedGridFunction::local_function¶
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¶
Constructor Dune::XT::Functions::TransformedGridFunction::TransformedGridFunction¶
Field Dune::XT::Functions::TransformedGridFunction::function_¶
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_¶
Type alias Dune::XT::Functions::TransformedGridFunction::ThisType¶
Type alias Dune::XT::Functions::TransformedGridFunction::BaseType¶
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.