1#ifndef COMP_PROP_LOP_HH
2#define COMP_PROP_LOP_HH
4#include <dune/geometry/type.hh>
5#include <dune/geometry/referenceelements.hh>
6#include <dune/geometry/quadraturerules.hh>
11 template<
typename GV,
typename MODEL>
12 class composite_properties :
14 public NumericalJacobianApplyVolume<composite_properties<GV,MODEL> >,
15 public FullVolumePattern,
16 public LocalOperatorDefaultFlags,
17 public InstationaryLocalOperatorDefaultMethods<double>,
18 public NumericalJacobianVolume<composite_properties<GV,MODEL> >
22 enum { doPatternVolume =
false };
25 enum { doAlphaVolume =
true };
28 composite_properties (
const GV& gv_,
const MODEL& model_) : model(model_), gv(gv_) {}
33 template<
typename EG,
typename LFSU,
typename X,
typename LFSV,
typename R>
34 void alpha_volume (
const EG& eg,
const LFSU& lfsu,
const X& x,
const LFSV& lfsv, R& r)
const
37 const auto& lfsv1 = lfsv.template child<0>();
38 const auto& lfsv2 = lfsv.template child<1>();
40 int id = gv.indexSet().index(eg.entity());
42 int materialType = model.getMaterialTypeFromElement(
id);
44 int orientation = model.getOrientation(
id);
46 r.accumulate(lfsv1, 0, materialType);
47 r.accumulate(lfsv2, 0, orientation);