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

[spaces.cg] derive from CGInterface, refs #14

parent a85232e8
No related branches found
No related tags found
No related merge requests found
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#include <dune/gdt/mapper/fem.hh> #include <dune/gdt/mapper/fem.hh>
#include <dune/gdt/basefunctionset/fem-localfunctions.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 Dune {
namespace GDT { namespace GDT {
...@@ -104,13 +104,11 @@ private: ...@@ -104,13 +104,11 @@ private:
template <class GridPartImp, int polynomialOrder, class RangeFieldImp> template <class GridPartImp, int polynomialOrder, class RangeFieldImp>
class FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> class FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>
: public Spaces::ContinuousLagrangeBase<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, : public Spaces::CGInterface<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>,
1>, GridPartImp::dimension, RangeFieldImp, 1, 1>
GridPartImp::dimension, RangeFieldImp, 1, 1>
{ {
typedef Spaces::ContinuousLagrangeBase<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, typedef Spaces::CGInterface<FemLocalfunctionsBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>,
1>, GridPartImp::dimension, RangeFieldImp, 1, 1> BaseType;
GridPartImp::dimension, RangeFieldImp, 1, 1> BaseType;
typedef FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType; typedef FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType;
public: public:
...@@ -137,6 +135,8 @@ public: ...@@ -137,6 +135,8 @@ public:
typedef typename Traits::EntityType EntityType; typedef typename Traits::EntityType EntityType;
typedef Dune::Stuff::LA::SparsityPatternDefault PatternType; typedef Dune::Stuff::LA::SparsityPatternDefault PatternType;
using typename BaseType::DomainType;
using typename BaseType::BoundaryInfoType;
private: private:
typedef typename Traits::BaseFunctionSetMapType BaseFunctionSetMapType; typedef typename Traits::BaseFunctionSetMapType BaseFunctionSetMapType;
...@@ -193,6 +193,16 @@ public: ...@@ -193,6 +193,16 @@ public:
return mapper_; 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 BaseFunctionSetType base_function_set(const EntityType& entity) const
{ {
return BaseFunctionSetType(baseFunctionSetMap_, entity); return BaseFunctionSetType(baseFunctionSetMap_, entity);
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "../../mapper/fem.hh" #include "../../mapper/fem.hh"
#include "../../basefunctionset/fem.hh" #include "../../basefunctionset/fem.hh"
#include "base.hh" #include "interface.hh"
#include "../constraints.hh" #include "../constraints.hh"
namespace Dune { namespace Dune {
...@@ -74,14 +74,14 @@ public: ...@@ -74,14 +74,14 @@ public:
}; // class SpaceWrappedFemContinuousLagrangeTraits }; // 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> template <class GridPartImp, int polynomialOrder, class RangeFieldImp>
class FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> class FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>
: public Spaces::ContinuousLagrangeBase<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, : public Spaces::CGInterface<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>,
GridPartImp::dimension, RangeFieldImp, 1, 1> GridPartImp::dimension, RangeFieldImp, 1, 1>
{ {
typedef Spaces::ContinuousLagrangeBase<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, typedef Spaces::CGInterface<FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>, GridPartImp::dimension,
GridPartImp::dimension, RangeFieldImp, 1, 1> BaseType; RangeFieldImp, 1, 1> BaseType;
typedef FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType; typedef FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType;
public: public:
...@@ -109,6 +109,8 @@ public: ...@@ -109,6 +109,8 @@ public:
typedef typename Traits::CommunicatorType CommunicatorType; typedef typename Traits::CommunicatorType CommunicatorType;
typedef Dune::Stuff::LA::SparsityPatternDefault PatternType; typedef Dune::Stuff::LA::SparsityPatternDefault PatternType;
using typename BaseType::DomainType;
using typename BaseType::BoundaryInfoType;
explicit FemBased(GridPartType gridP) explicit FemBased(GridPartType gridP)
: gridPart_(new GridPartType(gridP)) : gridPart_(new GridPartType(gridP))
...@@ -146,6 +148,16 @@ public: ...@@ -146,6 +148,16 @@ public:
return *mapper_; 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 BaseFunctionSetType base_function_set(const EntityType& entity) const
{ {
return BaseFunctionSetType(*backend_, entity); return BaseFunctionSetType(*backend_, entity);
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#include "../../mapper/pdelab.hh" #include "../../mapper/pdelab.hh"
#include "../../basefunctionset/pdelab.hh" #include "../../basefunctionset/pdelab.hh"
#include "base.hh" #include "interface.hh"
namespace Dune { namespace Dune {
...@@ -111,11 +111,11 @@ private: ...@@ -111,11 +111,11 @@ private:
template <class GridViewImp, int polynomialOrder, class RangeFieldImp> template <class GridViewImp, int polynomialOrder, class RangeFieldImp>
class PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1> class PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>
: public Spaces::ContinuousLagrangeBase<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>, : public Spaces::CGInterface<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>,
GridViewImp::dimension, RangeFieldImp, 1, 1> GridViewImp::dimension, RangeFieldImp, 1, 1>
{ {
typedef Spaces::ContinuousLagrangeBase<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>, typedef Spaces::CGInterface<PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>,
GridViewImp::dimension, RangeFieldImp, 1, 1> BaseType; GridViewImp::dimension, RangeFieldImp, 1, 1> BaseType;
typedef PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType; typedef PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1> ThisType;
public: public:
...@@ -210,6 +210,16 @@ public: ...@@ -210,6 +210,16 @@ public:
return mapper_; 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 BaseFunctionSetType base_function_set(const EntityType& entity) const
{ {
return BaseFunctionSetType(backend_, entity); return BaseFunctionSetType(backend_, entity);
......
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