Skip to content
Snippets Groups Projects
Commit e425aa18 authored by Tobias Leibner's avatar Tobias Leibner
Browse files

[operators.projections/prolongations] add apply methods for ProductFV space

parent bb5ae569
No related branches found
No related tags found
No related merge requests found
...@@ -264,6 +264,15 @@ private: ...@@ -264,6 +264,15 @@ private:
apply_local_l2_projection(source, range); apply_local_l2_projection(source, range);
} }
template <class T, class R, size_t dimRange, class S, class V>
void redirect_apply(
const Spaces::ProductFVInterface<T, dimDomain, dimRange, 1>& /*space*/,
const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, R, dimRange, 1>& source,
DiscreteFunction<S, V>& range) const
{
apply_local_l2_projection(source, range);
}
template <class T, class R, size_t dimRange, class S, class V> template <class T, class R, size_t dimRange, class S, class V>
void redirect_apply( void redirect_apply(
const Spaces::RTInterface<T, dimDomain, dimRange, 1>& /*space*/, const Spaces::RTInterface<T, dimDomain, dimRange, 1>& /*space*/,
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include <dune/gdt/discretefunction/default.hh> #include <dune/gdt/discretefunction/default.hh>
#include <dune/gdt/spaces/cg/fem.hh> #include <dune/gdt/spaces/cg/fem.hh>
#include <dune/gdt/spaces/cg/pdelab.hh> #include <dune/gdt/spaces/cg/pdelab.hh>
#include <dune/gdt/spaces/fv/defaultproduct.hh>
namespace Dune { namespace Dune {
...@@ -125,6 +126,13 @@ public: ...@@ -125,6 +126,13 @@ public:
prolong_onto_dg_fem_localfunctions_wrapper(source, range); prolong_onto_dg_fem_localfunctions_wrapper(source, range);
} }
template <class GVS, class RS, size_t rS, size_t rCS, class VS, class GVR, class RR, size_t rR, size_t rCR, class VR>
inline void apply(const ConstDiscreteFunction<Spaces::FV::DefaultProduct<GVS, RS, rS, rCS>, VS>& source,
DiscreteFunction<Spaces::FV::DefaultProduct<GVR, RR, rR, rCR>, VR>& range) const
{
prolong_onto_dg_fem_localfunctions_wrapper(source, range);
}
private: private:
template <class SourceFunctionType, class RangeFunctionType> template <class SourceFunctionType, class RangeFunctionType>
void prolong_onto_dg_fem_localfunctions_wrapper(const SourceFunctionType& source, RangeFunctionType& range) const void prolong_onto_dg_fem_localfunctions_wrapper(const SourceFunctionType& source, RangeFunctionType& range) const
...@@ -440,6 +448,14 @@ private: ...@@ -440,6 +448,14 @@ private:
lagrange_prolongation_operator_.apply(source, range); lagrange_prolongation_operator_.apply(source, range);
} }
template <class GVS, class RS, size_t rS, size_t rCS, class VS, class GVR, class RR, size_t rR, size_t rCR, class VR>
inline void redirect_to_appropriate_operator(
const ConstDiscreteFunction<Spaces::FV::DefaultProduct<GVS, RS, rS, rCS>, VS>& source,
DiscreteFunction<Spaces::FV::DefaultProduct<GVR, RR, rR, rCR>, VR>& range) const
{
l2_prolongation_operator_.apply(source, range);
}
const L2Prolongation<GridViewType> l2_prolongation_operator_; const L2Prolongation<GridViewType> l2_prolongation_operator_;
const LagrangeProlongation<GridViewType> lagrange_prolongation_operator_; const LagrangeProlongation<GridViewType> lagrange_prolongation_operator_;
}; // class Prolongation }; // class Prolongation
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment