dune-pdelab 2.8
Loading...
Searching...
No Matches
raviartthomas0.hh
Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2#ifndef DUNE_PDELAB_CONSTRAINTS_RAVIARTTHOMAS0_HH
3#define DUNE_PDELAB_CONSTRAINTS_RAVIARTTHOMAS0_HH
4
6
11
13
14namespace Dune {
15 namespace PDELab {
16
19 : public TypeTree::LeafNode
20 {
21 public:
22 enum{doBoundary=true};
23 enum{doProcessor=false};
24 enum{doSkeleton=false};
25 enum{doVolume=false};
26
27
29
35 template<typename P, typename IG, typename LFS, typename T>
36 void boundary (const P& p, const IG& ig, const LFS& lfs, T& trafo) const
37 {
38 const int face = ig.indexInInside();
39 auto face_refelem = referenceElement(ig.geometry());
40 const auto ip = face_refelem.position(0,0);
41 if (p.isNeumann(ig,ip)) {
42 typename T::RowType empty; // need not interpolate
43 trafo[lfs.dofIndex(face)]=empty;
44 }
45 }
46 };
47
48 }
49}
50
51#endif // DUNE_PDELAB_CONSTRAINTS_RAVIARTTHOMAS0_HH
unspecified value type referenceElement(T &&... t)
bool empty() const
const P & p
Definition constraints.hh:148
const IG & ig
Definition constraints.hh:149
For backward compatibility – Do not use this!
Neumann Constraints construction, as needed for RT0.
Definition raviartthomas0.hh:20
@ doProcessor
Definition raviartthomas0.hh:23
@ doSkeleton
Definition raviartthomas0.hh:24
void boundary(const P &p, const IG &ig, const LFS &lfs, T &trafo) const
boundary constraints
Definition raviartthomas0.hh:36
@ doVolume
Definition raviartthomas0.hh:25
@ doBoundary
Definition raviartthomas0.hh:22