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

[spaces] adapt to ProductSpaceInterface changes

parent c590bd3f
No related branches found
No related tags found
No related merge requests found
......@@ -110,6 +110,11 @@ struct static_for_loop<last_factor_index, last_factor_index>
}
};
template <bool /*is_product_space*/>
struct ChooseVisualize
{
};
} // namespace internal
......@@ -196,8 +201,7 @@ public:
* \brief Visualizes the function using Dune::Stuff::LocalizableFunctionInterface::visualize on the grid view
* associated with the space.
* \sa Dune::Stuff::LocalizableFunctionInterface::visualize
* \note Subsampling is disabled for Finite Volume functions and enabled by default for functions of order higher
* than one.
* \note Subsampling is enabled by default for functions of order greater than one.
*/
void visualize(const std::string filename, const bool subsampling = (SpaceType::polOrder > 1),
const VTK::OutputType vtk_output_type = VTK::appendedraw) const
......@@ -209,7 +213,12 @@ public:
const bool subsampling = (SpaceType::polOrder > 1),
const VTK::OutputType vtk_output_type = VTK::appendedraw) const
{
redirect_visualize(space(), filename_prefix, filename_suffix, subsampling, vtk_output_type);
redirect_visualize(space(),
filename_prefix,
filename_suffix,
subsampling,
vtk_output_type,
internal::ChooseVisualize<is_product_space<SpaceType>::value>());
}
template <size_t ii>
......@@ -230,16 +239,16 @@ protected:
template <class S, size_t d, size_t r, size_t rC>
void redirect_visualize(const SpaceInterface<S, d, r, rC>& space, const std::string filename_prefix,
const std::string filename_suffix, const bool subsampling,
const VTK::OutputType vtk_output_type) const
const VTK::OutputType vtk_output_type, const internal::ChooseVisualize<false>&) const
{
BaseType::template visualize<typename SpaceType::GridViewType>(
space.grid_view(), filename_prefix + filename_suffix, subsampling, vtk_output_type);
} // ... redirect_visualize(...)
template <class S, size_t d, size_t r, size_t rC>
void redirect_visualize(const ProductSpaceInterface<S, d, r, rC>& /*space*/, const std::string filename_prefix,
void redirect_visualize(const SpaceInterface<S, d, r, rC>& /*space*/, const std::string filename_prefix,
const std::string filename_suffix, const bool subsampling,
const VTK::OutputType vtk_output_type) const
const VTK::OutputType vtk_output_type, const internal::ChooseVisualize<true>&) const
{
internal::static_for_loop<0, ProductSpaceInterface<S, d, r, rC>::num_factors>::visualize(
filename_prefix, filename_suffix, subsampling, vtk_output_type, *this);
......
......@@ -66,17 +66,20 @@ public:
template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim>
class PdelabBasedProduct<GridViewImp, polynomialOrder, RangeFieldImp, rangeDim, 1>
: public Dune::GDT::ProductSpaceInterface<internal::PdelabBasedProductTraits<GridViewImp, polynomialOrder,
: public Dune::GDT::SpaceInterface<internal::PdelabBasedProductTraits<GridViewImp, polynomialOrder, RangeFieldImp,
rangeDim, 1>,
GridViewImp::dimension, rangeDim, 1>,
public Dune::GDT::ProductSpaceInterface<internal::PdelabBasedProductTraits<GridViewImp, polynomialOrder,
RangeFieldImp, rangeDim, 1>,
GridViewImp::dimension, rangeDim, 1>
{
typedef PdelabBasedProduct<GridViewImp, polynomialOrder, RangeFieldImp, rangeDim, 1> ThisType;
typedef typename Dune::GDT::ProductSpaceInterface<internal::PdelabBasedProductTraits<GridViewImp, polynomialOrder,
RangeFieldImp, rangeDim, 1>,
GridViewImp::dimension, rangeDim, 1> BaseType;
typedef typename Dune::GDT::SpaceInterface<internal::PdelabBasedProductTraits<GridViewImp, polynomialOrder,
RangeFieldImp, rangeDim, 1>,
GridViewImp::dimension, rangeDim, 1> BaseType;
public:
using typename BaseType::Traits;
typedef typename internal::PdelabBasedProductTraits<GridViewImp, polynomialOrder, RangeFieldImp, rangeDim, 1> Traits;
using typename BaseType::GridViewType;
using typename BaseType::EntityType;
using typename BaseType::BaseFunctionSetType;
......
......@@ -53,13 +53,15 @@ public:
template <class GridViewImp, class RangeFieldImp, size_t rangeDim>
class DefaultProduct<GridViewImp, RangeFieldImp, rangeDim, 1>
: public Dune::GDT::Spaces::ProductFVInterface<internal::DefaultProductTraits<GridViewImp, RangeFieldImp, rangeDim,
: public Dune::GDT::Spaces::FVInterface<internal::DefaultProductTraits<GridViewImp, RangeFieldImp, rangeDim, 1>,
GridViewImp::dimension, rangeDim, 1>,
public Dune::GDT::Spaces::ProductFVInterface<internal::DefaultProductTraits<GridViewImp, RangeFieldImp, rangeDim,
1>,
GridViewImp::dimension, rangeDim, 1>
{
typedef DefaultProduct<GridViewImp, RangeFieldImp, rangeDim, 1> ThisType;
typedef Dune::GDT::Spaces::ProductFVInterface<internal::DefaultProductTraits<GridViewImp, RangeFieldImp, rangeDim, 1>,
GridViewImp::dimension, rangeDim, 1> BaseType;
typedef Dune::GDT::Spaces::FVInterface<internal::DefaultProductTraits<GridViewImp, RangeFieldImp, rangeDim, 1>,
GridViewImp::dimension, rangeDim, 1> BaseType;
typedef Default<GridViewImp, RangeFieldImp, rangeDim, 1> DefaultFVSpaceType;
public:
......@@ -88,7 +90,7 @@ public:
// These methods are required by ProductSpaceInterface
template <size_t ii>
const FactorSpaceType factor() const
const FactorSpaceType& factor() const
{
return factor_space_;
}
......
......@@ -47,12 +47,6 @@ public:
template <class ImpTraits, size_t domainDim, size_t rangeDim, size_t rangeDimCols = 1>
class ProductFVInterface : public ProductSpaceInterface<ImpTraits, domainDim, rangeDim, rangeDimCols>
{
typedef ProductSpaceInterface<ImpTraits, domainDim, rangeDim, rangeDimCols> BaseType;
public:
using typename BaseType::RangeFieldType;
using BaseType::compute_pattern;
using BaseType::local_constraints;
}; // class ProductFVInterface
......
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