2 #ifndef DUNE_PDELAB_CG_TO_DG_PROLONGATION_HH
3 #define DUNE_PDELAB_CG_TO_DG_PROLONGATION_HH
5 #include <dune/common/exceptions.hh>
6 #include <dune/common/fvector.hh>
7 #include <dune/common/static_assert.hh>
9 #include <dune/geometry/quadraturerules.hh>
11 #include <dune/localfunctions/common/interfaceswitch.hh>
13 #include <dune/typetree/pairtraversal.hh>
14 #include <dune/typetree/transformation.hh>
15 #include <dune/typetree/visitor.hh>
30 namespace CG2DGHelper {
32 template <
typename Imp>
34 typedef typename Imp::Traits::FiniteElementType::
35 Traits::LocalBasisType::Traits::RangeType
RangeType;
36 typedef typename Imp::Traits::FiniteElementType::
41 template<
typename Imp>
47 typedef typename Imp::Traits::FiniteElementType FEM;
48 typedef FiniteElementInterfaceSwitch<FEM> FESwitch;
49 typedef BasisInterfaceSwitch<typename FESwitch::Basis > BasisSwitch;
50 typedef typename BasisSwitch::DomainField DF;
51 typedef typename BasisSwitch::Range RT;
52 enum { dim = BasisSwitch::dimDomainLocal };
56 _imp(imp), _comp(comp) {}
58 void evaluate(
const Dune::FieldVector<DF,dim> & x,
59 Dune::FieldVector<DF,1> & y)
const
62 _imp.finiteElement().localBasis().evaluateFunction(x,v);
69 public TypeTree::DefaultPairVisitor,
70 public TypeTree::DynamicTraversal,
71 public TypeTree::VisitTree
80 template<
typename LFSU,
typename LFSV,
typename TreePath>
81 void leaf(
const LFSU& lfsu,
const LFSV& lfsv, TreePath treePath)
const
84 typedef typename LFSV::Traits::FiniteElementType DG_FEM;
85 typedef FiniteElementInterfaceSwitch<DG_FEM> FESwitch;
86 typedef BasisInterfaceSwitch<typename FESwitch::Basis > BasisSwitch;
87 typedef typename BasisSwitch::DomainField DF;
89 for (
unsigned int i=0; i<lfsu.size(); i++)
94 FESwitch::interpolation(lfsv.finiteElement()).
97 for (
unsigned int j=0; j<lfsv.size(); j++)
99 _mat(lfsv,j,lfsu,i) = v[j];
113 template<
typename LFSU,
typename LFSV,
typename R>
114 void computeCG2DG(
const LFSU & lfsu,
const LFSV & lfsv,
120 Dune::TypeTree::applyToTreePair(lfsu, lfsv, cg2dg);
136 template<
typename EG,
typename LFSU,
typename X,
typename LFSV,
typename M>
140 computeCG2DG(lfsu, lfsv, mat.container());
CG2DGProlongation()
Definition: cg_to_dg_prolongation.hh:129
void evaluate(const Dune::FieldVector< DF, dim > &x, Dune::FieldVector< DF, 1 > &y) const
Definition: cg_to_dg_prolongation.hh:58
Default flags for all local operators.
Definition: flags.hh:18
Imp::Traits::FiniteElementType::Traits::LocalBasisType::Traits::DomainType DomainType
Definition: cg_to_dg_prolongation.hh:37
Definition: cg_to_dg_prolongation.hh:108
ComputeCG2DGVisitor(LocalMatrix< R > &mat)
Definition: cg_to_dg_prolongation.hh:76
Definition: cg_to_dg_prolongation.hh:124
Definition: cg_to_dg_prolongation.hh:68
Definition: cg_to_dg_prolongation.hh:127
void leaf(const LFSU &lfsu, const LFSV &lfsv, TreePath treePath) const
Definition: cg_to_dg_prolongation.hh:81
Definition: cg_to_dg_prolongation.hh:33
Default class for additional methods in instationary local operators.
Definition: idefault.hh:89
const F & f
Definition: common/constraints.hh:145
void jacobian_volume(const EG &, const LFSU &lfsu, const X &, const LFSV &lfsv, M &mat) const
Definition: cg_to_dg_prolongation.hh:137
sparsity pattern generator
Definition: pattern.hh:14
Imp::Traits::FiniteElementType::Traits::LocalBasisType::Traits::RangeType RangeType
Definition: cg_to_dg_prolongation.hh:35
Definition: cg_to_dg_prolongation.hh:42
void interpolate(const F &f, const GFS &gfs, XG &xg)
interpolation from a given grid function
Definition: interpolate.hh:191
WrappedLocalShapeFunction(const Imp &imp, int comp)
Definition: cg_to_dg_prolongation.hh:55
WrappedLocalShapeFunction< Imp > Traits
Definition: cg_to_dg_prolongation.hh:54