12#ifndef DUMUX_DISCRETIZATION_NONCONFORMING_FECACHE_HH
13#define DUMUX_DISCRETIZATION_NONCONFORMING_FECACHE_HH
17#include <dune/common/exceptions.hh>
18#include <dune/geometry/type.hh>
20#include <dune/localfunctions/crouzeixraviart.hh>
21#include <dune/localfunctions/rannacherturek.hh>
22#include <dune/localfunctions/common/virtualinterface.hh>
23#include <dune/localfunctions/common/virtualwrappers.hh>
27template<
class CoordScalar,
class Scalar,
unsigned int dim>
30 static_assert(dim == 2 || dim == 3,
"Non-conforming FE spaces only implemented for 2D and 3D grids");
34 using RT = Dune::RannacherTurekLocalFiniteElement<CoordScalar, Scalar, dim>;
35 using CR = Dune::CrouzeixRaviartLocalFiniteElement<CoordScalar, Scalar, dim>;
38 using FiniteElementType = Dune::LocalFiniteElementVirtualInterface<typename RT::Traits::LocalBasisType::Traits>;
41 : rtBasis_(std::make_unique<
Dune::LocalFiniteElementVirtualImp<RT>>(RT{}))
42 , crBasis_(std::make_unique<
Dune::LocalFiniteElementVirtualImp<CR>>(CR{}))
53 DUNE_THROW(Dune::NotImplemented,
54 "Non-conforming local finite element for geometry type " << gt
59 std::unique_ptr<FiniteElementType> rtBasis_;
60 std::unique_ptr<FiniteElementType> crBasis_;
Definition: common/pdesolver.hh:24