diff --git a/dune/fem-dg/examples/advdiff/algorithmcreator.hh b/dune/fem-dg/examples/advdiff/algorithmcreator.hh index e5d4ca8e85ddf99138afa50d00fb2199b0c522a3..d42b7eaf119fd43d8c6f8451039540b017ac9c25 100644 --- a/dune/fem-dg/examples/advdiff/algorithmcreator.hh +++ b/dune/fem-dg/examples/advdiff/algorithmcreator.hh @@ -56,7 +56,8 @@ namespace Fem typedef AlgorithmConfigurator< GridSelectorGridType, Galerkin::Enum::default_, Adaptivity::Enum::default_, - DiscreteFunctionSpaces::Enum::default_, //legendre + DiscreteFunctionSpaces::Enum::gausslobatto, //legendre + //DiscreteFunctionSpaces::Enum::default_, Solver::Enum::default_, AdvectionLimiter::Enum::default_, Matrix::Enum::default_, diff --git a/dune/fem-dg/misc/algorithmcreatorenums.hh b/dune/fem-dg/misc/algorithmcreatorenums.hh index e131cc4f0f93291333fb514594fb4e476c1dfc8b..bae2d3f72724c516f44c6a94ec78ef0bd2416502 100644 --- a/dune/fem-dg/misc/algorithmcreatorenums.hh +++ b/dune/fem-dg/misc/algorithmcreatorenums.hh @@ -77,7 +77,11 @@ namespace Fem //! Discrete function space with Lagrange Finite Elements lagrange, //! p-adaptive space from dune-fem, implementing dg and lagrange - padaptive + padaptive, + //! Lagrange space with GaussLobatto interpolation points + gausslobatto, + //! Lagrange space with GaussLegendre interpolation points + gausslegendre }; } diff --git a/dune/fem-dg/misc/algorithmcreatorselector.hh b/dune/fem-dg/misc/algorithmcreatorselector.hh index 7939eb4f5d8782ede372e047e9f9fdc40c4e6caf..945e647b204c49a35b0ff2172823805a87bd407e 100644 --- a/dune/fem-dg/misc/algorithmcreatorselector.hh +++ b/dune/fem-dg/misc/algorithmcreatorselector.hh @@ -51,6 +51,7 @@ #include <dune/fem-dg/assemble/primalmatrix.hh> #include <dune/fem/space/discontinuousgalerkin.hh> +#include <dune/fem/space/lagrange.hh> #include <dune/fem-dg/operator/dg/operatortraits.hh> @@ -537,6 +538,20 @@ namespace Fem typedef HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type; }; +#if HAVE_DUNE_LOCALFUNCTIONS + template< class FunctionSpaceImp, class GridPartImp, int polOrder > + struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::gausslobatto, Galerkin::Enum::dg > + { + typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLobattoPointSet, CachingStorage > type; + }; + + template< class FunctionSpaceImp, class GridPartImp, int polOrder > + struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::gausslegendre, Galerkin::Enum::dg > + { + typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLegendrePointSet, CachingStorage > type; + }; +#endif + template< class ModelImp, class DiscreteFunctionSpaceImp, DiffusionFlux::Enum diffFluxId, Formulation::Enum form > struct DiffusionFluxSelector; diff --git a/dune/fem-dg/misc/configurator.hh b/dune/fem-dg/misc/configurator.hh index f8bdbc553144c7786f3e2a4af9966c38345a2099..71bdf13a7ee58f926b42eb56cac99fdc7a68603a 100644 --- a/dune/fem-dg/misc/configurator.hh +++ b/dune/fem-dg/misc/configurator.hh @@ -75,6 +75,10 @@ namespace Fem DiscreteFunctionSpaces::Enum::lagrange; #elif DISCRETEFUNCTIONSPACESENUM == 5 DiscreteFunctionSpaces::Enum::padaptive; +#elif DISCRETEFUNCTIONSPACESENUM == 6 + DiscreteFunctionSpaces::Enum::gausslobatto; +#elif DISCRETEFUNCTIONSPACESENUM == 7 + DiscreteFunctionSpaces::Enum::gausslegendre; #else // DISCRETEFUNCTIONSPACESENUM == 1 DiscreteFunctionSpaces::Enum::orthonormal; #endif