3#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH
4#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH
23 for (std::size_t i=0; i<sign_.size(); i++)
24 sign_[i] = (s[i]) ? -1.0 : 1.0;
26 m_[0] = {1/3.0, 1/3.0, 0.0};
27 m_[1] = {1/3.0, 0.0, 1/3.0};
28 m_[2] = { 0.0, 1/3.0, 1/3.0};
29 m_[3] = {1/3.0, 1/3.0, 1/3.0};
30 n_[0] = { 0.0, 0.0, -1.0};
31 n_[1] = { 0.0, -1.0, 0.0};
32 n_[2] = { -1.0, 0.0, 0.0};
33 n_[3] = {1.0/sqrt(3.0), 1.0/sqrt(3.0), 1.0/sqrt(3.0)};
37 c_[3] = sqrt(2.0)/sqrt(3.0);
40 template<
typename F,
typename C>
44 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
48 for (
int i=0; i<4; i++)
51 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1]+y[2]*n_[i][2])*sign_[i]/c_[i];
57 std::array<typename LB::Traits::RangeFieldType,4> sign_;
59 std::array<typename LB::Traits::DomainType,4> m_;
61 std::array<typename LB::Traits::DomainType,4> n_;
63 std::array<typename LB::Traits::RangeFieldType,4> c_;
Definition: bdfmcube.hh:16
Definition: raviartthomas03dlocalinterpolation.hh:16
void interpolate(const F &ff, std::vector< C > &out) const
Definition: raviartthomas03dlocalinterpolation.hh:41
RT03DLocalInterpolation(std::bitset< 4 > s=0)
Constructor with given set of face orientations.
Definition: raviartthomas03dlocalinterpolation.hh:20