diff --git a/dune/gdt/playground/spaces/cg/fem-localfunctions.hh b/dune/gdt/playground/spaces/cg/fem-localfunctions.hh index 43eb0bb4e89d12245775328e9377d8af98ca2bd6..89479f01e701aab16dc0629d13b21454f5e06bb2 100644 --- a/dune/gdt/playground/spaces/cg/fem-localfunctions.hh +++ b/dune/gdt/playground/spaces/cg/fem-localfunctions.hh @@ -32,7 +32,7 @@ #include <dune/gdt/mapper/fem.hh> #include <dune/gdt/basefunctionset/fem-localfunctions.hh> -#include <dune/gdt/spaces/continuouslagrange/base.hh> +#include <dune/gdt/spaces/cg/interface.hh> namespace Dune { namespace GDT { @@ -104,13 +104,11 @@ private: template <class GridPartImp, int polynomialOrder, class RangeFieldImp> class FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> - : public Spaces::ContinuousLagrangeBase<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, - 1>, - GridPartImp::dimension, RangeFieldImp, 1, 1> + : public Spaces::CGInterface<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, + GridPartImp::dimension, RangeFieldImp, 1, 1> { - typedef Spaces::ContinuousLagrangeBase<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, - 1>, - GridPartImp::dimension, RangeFieldImp, 1, 1> BaseType; + typedef Spaces::CGInterface<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, + GridPartImp::dimension, RangeFieldImp, 1, 1> BaseType; typedef FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType; public: @@ -137,6 +135,8 @@ public: typedef typename Traits::EntityType EntityType; typedef Dune::Stuff::LA::SparsityPatternDefault PatternType; + using typename BaseType::DomainType; + using typename BaseType::BoundaryInfoType; private: typedef typename Traits::BaseFunctionSetMapType BaseFunctionSetMapType; @@ -193,6 +193,16 @@ public: return mapper_; } + std::vector<DomainType> lagrange_points(const EntityType& entity) const + { + return BaseType::lagrange_points_order_1(entity); + } + + std::set<size_t> local_dirichlet_DoFs(const EntityType& entity, const BoundaryInfoType& boundaryInfo) const + { + return BaseType::local_dirichlet_DoFs_order_1(entity, boundaryInfo); + } + BaseFunctionSetType base_function_set(const EntityType& entity) const { return BaseFunctionSetType(baseFunctionSetMap_, entity); diff --git a/dune/gdt/spaces/cg/fem.hh b/dune/gdt/spaces/cg/fem.hh index eb1704cd2f811c4dc4026d559f05e6172f300154..f7ba1c58326795f768126e0a28fd597bb64747a8 100644 --- a/dune/gdt/spaces/cg/fem.hh +++ b/dune/gdt/spaces/cg/fem.hh @@ -22,7 +22,7 @@ #include "../../mapper/fem.hh" #include "../../basefunctionset/fem.hh" -#include "base.hh" +#include "interface.hh" #include "../constraints.hh" namespace Dune { @@ -74,14 +74,14 @@ public: }; // class SpaceWrappedFemContinuousLagrangeTraits -// untested for the vector-valued case, especially Spaces::ContinuousLagrangeBase +// untested for the vector-valued case, especially Spaces::CGInterface template <class GridPartImp, int polynomialOrder, class RangeFieldImp> class FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> - : public Spaces::ContinuousLagrangeBase<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, - GridPartImp::dimension, RangeFieldImp, 1, 1> + : public Spaces::CGInterface<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, + GridPartImp::dimension, RangeFieldImp, 1, 1> { - typedef Spaces::ContinuousLagrangeBase<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, - GridPartImp::dimension, RangeFieldImp, 1, 1> BaseType; + typedef Spaces::CGInterface<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, GridPartImp::dimension, + RangeFieldImp, 1, 1> BaseType; typedef FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType; public: @@ -109,6 +109,8 @@ public: typedef typename Traits::CommunicatorType CommunicatorType; typedef Dune::Stuff::LA::SparsityPatternDefault PatternType; + using typename BaseType::DomainType; + using typename BaseType::BoundaryInfoType; explicit FemBased(GridPartType gridP) : gridPart_(new GridPartType(gridP)) @@ -146,6 +148,16 @@ public: return *mapper_; } + std::vector<DomainType> lagrange_points(const EntityType& entity) const + { + return BaseType::lagrange_points_order_1(entity); + } + + std::set<size_t> local_dirichlet_DoFs(const EntityType& entity, const BoundaryInfoType& boundaryInfo) const + { + return BaseType::local_dirichlet_DoFs_order_1(entity, boundaryInfo); + } + BaseFunctionSetType base_function_set(const EntityType& entity) const { return BaseFunctionSetType(*backend_, entity); diff --git a/dune/gdt/spaces/cg/pdelab.hh b/dune/gdt/spaces/cg/pdelab.hh index 706e2a2cb393b16d6b443475b1dbadac20feda5e..19d855e5d7e34f513c162f88bc2f72dc7f2b45d0 100644 --- a/dune/gdt/spaces/cg/pdelab.hh +++ b/dune/gdt/spaces/cg/pdelab.hh @@ -32,7 +32,7 @@ #include "../../mapper/pdelab.hh" #include "../../basefunctionset/pdelab.hh" -#include "base.hh" +#include "interface.hh" namespace Dune { @@ -111,11 +111,11 @@ private: template <class GridViewImp, int polynomialOrder, class RangeFieldImp> class PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1> - : public Spaces::ContinuousLagrangeBase<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>, - GridViewImp::dimension, RangeFieldImp, 1, 1> + : public Spaces::CGInterface<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>, + GridViewImp::dimension, RangeFieldImp, 1, 1> { - typedef Spaces::ContinuousLagrangeBase<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>, - GridViewImp::dimension, RangeFieldImp, 1, 1> BaseType; + typedef Spaces::CGInterface<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>, + GridViewImp::dimension, RangeFieldImp, 1, 1> BaseType; typedef PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType; public: @@ -210,6 +210,16 @@ public: return mapper_; } + std::vector<DomainType> lagrange_points(const EntityType& entity) const + { + return BaseType::lagrange_points_order_1(entity); + } + + std::set<size_t> local_dirichlet_DoFs(const EntityType& entity, const BoundaryInfoType& boundaryInfo) const + { + return BaseType::local_dirichlet_DoFs_order_1(entity, boundaryInfo); + } + BaseFunctionSetType base_function_set(const EntityType& entity) const { return BaseFunctionSetType(backend_, entity);