2#ifndef DUNE_PDELAB_BACKEND_ISTL_CG_TO_DG_PROLONGATION_HH
3#define DUNE_PDELAB_BACKEND_ISTL_CG_TO_DG_PROLONGATION_HH
5#include <dune/common/exceptions.hh>
6#include <dune/common/fvector.hh>
8#include <dune/geometry/quadraturerules.hh>
10#include <dune/localfunctions/common/interfaceswitch.hh>
12#include <dune/typetree/pairtraversal.hh>
13#include <dune/typetree/transformation.hh>
14#include <dune/typetree/visitor.hh>
29 namespace CG2DGHelper {
31 template <
typename Imp>
33 typedef typename Imp::Traits::FiniteElementType::
34 Traits::LocalBasisType::Traits::RangeType
RangeType;
35 typedef typename Imp::Traits::FiniteElementType::
40 template<
typename Imp>
46 typedef typename Imp::Traits::FiniteElementType FEM;
47 typedef FiniteElementInterfaceSwitch<FEM> FESwitch;
48 typedef BasisInterfaceSwitch<typename FESwitch::Basis > BasisSwitch;
49 typedef typename BasisSwitch::DomainField DF;
50 typedef typename BasisSwitch::Range RT;
51 enum { dim = BasisSwitch::dimDomainLocal };
55 _imp(imp), _comp(comp) {}
57 Dune::FieldVector<DF,1>
operator()(
const Dune::FieldVector<DF,dim> & x)
const
60 _imp.finiteElement().localBasis().evaluateFunction(x,v);
67 public TypeTree::DefaultPairVisitor,
68 public TypeTree::DynamicTraversal,
69 public TypeTree::VisitTree
78 template<
typename LFSU,
typename LFSV,
typename TreePath>
79 void leaf(
const LFSU& lfsu,
const LFSV& lfsv, TreePath treePath)
const
82 typedef typename LFSV::Traits::FiniteElementType DG_FEM;
83 typedef FiniteElementInterfaceSwitch<DG_FEM> FESwitch;
84 typedef BasisInterfaceSwitch<typename FESwitch::Basis > BasisSwitch;
85 typedef typename BasisSwitch::DomainField DF;
87 for (
unsigned int i=0; i<lfsu.size(); i++)
92 FESwitch::interpolation(lfsv.finiteElement()).
95 for (
unsigned int j=0; j<lfsv.size(); j++)
97 _mat(lfsv,j,lfsu,i) = v[j];
111 template<
typename LFSU,
typename LFSV,
typename R>
112 void computeCG2DG(
const LFSU & lfsu,
const LFSV & lfsv,
118 TypeTree::applyToTreePair(lfsu, lfsv, cg2dg);
134 template<
typename EG,
typename LFSU,
typename X,
typename LFSV,
typename M>
138 computeCG2DG(lfsu, lfsv, mat.container());
void interpolate(const F &f, const GFS &gfs, XG &xg)
interpolation from a given grid function
Definition interpolate.hh:177
For backward compatibility – Do not use this!
Definition adaptivity.hh:28
Definition cg_to_dg_prolongation.hh:32
Imp::Traits::FiniteElementType::Traits::LocalBasisType::Traits::DomainType DomainType
Definition cg_to_dg_prolongation.hh:36
Imp::Traits::FiniteElementType::Traits::LocalBasisType::Traits::RangeType RangeType
Definition cg_to_dg_prolongation.hh:34
Definition cg_to_dg_prolongation.hh:42
WrappedLocalShapeFunction(const Imp &imp, int comp)
Definition cg_to_dg_prolongation.hh:54
WrappedLocalShapeFunctionTraits< Imp > Traits
Definition cg_to_dg_prolongation.hh:53
Dune::FieldVector< DF, 1 > operator()(const Dune::FieldVector< DF, dim > &x) const
Definition cg_to_dg_prolongation.hh:57
Definition cg_to_dg_prolongation.hh:70
void leaf(const LFSU &lfsu, const LFSV &lfsv, TreePath treePath) const
Definition cg_to_dg_prolongation.hh:79
ComputeCG2DGVisitor(LocalMatrix< R > &mat)
Definition cg_to_dg_prolongation.hh:74
Definition cg_to_dg_prolongation.hh:110
void jacobian_volume(const EG &, const LFSU &lfsu, const X &, const LFSV &lfsv, M &mat) const
Definition cg_to_dg_prolongation.hh:135
@ doAlphaVolume
Definition cg_to_dg_prolongation.hh:125
CG2DGProlongation()
Definition cg_to_dg_prolongation.hh:127
@ doPatternVolume
Definition cg_to_dg_prolongation.hh:122
A dense matrix for storing data associated with the degrees of freedom of a pair of LocalFunctionSpac...
Definition localmatrix.hh:184
Default flags for all local operators.
Definition flags.hh:19
Default class for additional methods in instationary local operators.
Definition idefault.hh:90
sparsity pattern generator
Definition pattern.hh:14