3 #ifndef DUNE_PDELAB_LOCALOPERATOR_BLOCKOFFDIAGONALWRAPPER_HH
4 #define DUNE_PDELAB_LOCALOPERATOR_BLOCKOFFDIAGONALWRAPPER_HH
14 template <
typename View>
35 : _view(view), _zero(zero), _zeroCoefficient(0.0)
38 template <
typename LFS>
42 return _zeroCoefficient;
44 return _view.container()(lfs, i);
54 template <
typename Container,
typename LocalFunctionSpaceCache>
63 : _view(view), _zero(zero), _zeroCoefficient(0.0)
66 template <
typename LFS>
70 return _zeroCoefficient;
82 DUNE_THROW(Dune::Exception,
"So far the ZeroViewWrapper does not support fast DG local operators using the data() method to access coefficients. .");
109 template <
typename LocalOperator>
122 static constexpr
bool isLinear = LocalOperator::isLinear;
136 : _localOperator(localOperator)
141 : _localOperator(other._localOperator)
145 template<
typename LFSU,
typename LFSV,
typename LocalPattern>
146 void pattern_skeleton (
const LFSU& lfsu_s,
const LFSV& lfsv_s,
const LFSU& lfsu_n,
const LFSV& lfsv_n,
147 LocalPattern& pattern_sn,
148 LocalPattern& pattern_ns)
const
150 _localOperator.pattern_skeleton (lfsu_s, lfsv_s, lfsu_n, lfsv_n, pattern_sn, pattern_ns);
153 template<
typename IG,
typename LFSU,
typename X,
typename LFSV,
typename MAT>
155 const LFSU& lfsu_s,
const X& x_s,
const LFSV& lfsv_s,
156 const LFSU& lfsu_n,
const X& x_n,
const LFSV& lfsv_n,
157 MAT& mat_ss, MAT& mat_sn,
158 MAT& mat_ns, MAT& mat_nn)
const
166 _localOperator.jacobian_skeleton(
ig, lfsu_s, x_s, lfsv_s, lfsu_n, x_n, lfsv_n, view_other, view_other, view_ns, view_other);
169 template<
typename IG,
typename LFSU,
typename Z,
typename LFSV,
typename Y>
171 const LFSU& lfsu_s,
const Z& z_s,
const LFSV& lfsv_s,
172 const LFSU& lfsu_n,
const Z& z_n,
const LFSV& lfsv_n,
173 Y& y_s, Y& y_n)
const
202 template<
typename IG,
typename LFSU,
typename X,
typename Z,
typename LFSV,
typename Y>
204 const LFSU& lfsu_s,
const X& x_s,
const Z& z_s,
const LFSV& lfsv_s,
205 const LFSU& lfsu_n,
const X& x_n,
const Z& z_n,
const LFSV& lfsv_n,
206 Y& y_s, Y& y_n)
const
232 Dune::PDELab::impl::jacobianApplySkeleton(_localOperator,
ig, lfsu_s, x_s, z_zero, lfsv_s, lfsu_n, x_n, z_neigh, lfsv_n, view_s_on, view_n_off);
237 const LocalOperator& _localOperator;
const IG & ig
Definition: constraints.hh:149
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
std::enable_if_t< LOP::isLinear > jacobianApplySkeleton(const LOP &lop, const IG &ig, const LFSU &lfsu_s, const X &z_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &z_n, const LFSV &lfsv_n, Y &y_s, Y &y_n)
Definition: jacobianapplyhelper.hh:64
Definition: aliasedvectorview.hh:18
Container::size_type size_type
Definition: aliasedvectorview.hh:24
Container::E ElementType
Definition: aliasedvectorview.hh:23
Definition: aliasedvectorview.hh:128
Definition: blockdiagonalwrapper.hh:19
Definition: blockoffdiagonalwrapper.hh:16
ZeroViewWrapper(const View &view, bool zero)
Definition: blockoffdiagonalwrapper.hh:34
typename View::Container Container
Definition: blockoffdiagonalwrapper.hh:18
typename View::value_type ElementType
Definition: blockoffdiagonalwrapper.hh:19
const ElementType & operator()(const LFS &lfs, SizeType i) const
Definition: blockoffdiagonalwrapper.hh:39
typename View::size_type SizeType
Definition: blockoffdiagonalwrapper.hh:20
typename View::size_type SizeType
Definition: blockoffdiagonalwrapper.hh:60
ZeroViewWrapper(const View &view, bool zero)
Definition: blockoffdiagonalwrapper.hh:62
typename View::ElementType ElementType
Definition: blockoffdiagonalwrapper.hh:59
const ElementType & operator()(const LFS &lfs, SizeType i) const
Definition: blockoffdiagonalwrapper.hh:67
const ElementType * data() const
Definition: blockoffdiagonalwrapper.hh:75
A local operator that accumulates the off block diagonal.
Definition: blockoffdiagonalwrapper.hh:112
static constexpr bool doSkeletonTwoSided
Definition: blockoffdiagonalwrapper.hh:129
static constexpr bool isLinear
Definition: blockoffdiagonalwrapper.hh:122
static constexpr bool doAlphaSkeleton
Definition: blockoffdiagonalwrapper.hh:119
BlockOffDiagonalLocalOperatorWrapper(const LocalOperator &localOperator)
Construct new instance of class.
Definition: blockoffdiagonalwrapper.hh:135
void jacobian_apply_skeleton(const IG &ig, const LFSU &lfsu_s, const X &x_s, const Z &z_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &x_n, const Z &z_n, const LFSV &lfsv_n, Y &y_s, Y &y_n) const
Definition: blockoffdiagonalwrapper.hh:203
static constexpr bool doPatternSkeleton
Definition: blockoffdiagonalwrapper.hh:116
void jacobian_apply_skeleton(const IG &ig, const LFSU &lfsu_s, const Z &z_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const Z &z_n, const LFSV &lfsv_n, Y &y_s, Y &y_n) const
Definition: blockoffdiagonalwrapper.hh:170
void jacobian_skeleton(const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &x_n, const LFSV &lfsv_n, MAT &mat_ss, MAT &mat_sn, MAT &mat_ns, MAT &mat_nn) const
Definition: blockoffdiagonalwrapper.hh:154
BlockOffDiagonalLocalOperatorWrapper(const BlockOffDiagonalLocalOperatorWrapper &other)
Copy constructor.
Definition: blockoffdiagonalwrapper.hh:140
void pattern_skeleton(const LFSU &lfsu_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const LFSV &lfsv_n, LocalPattern &pattern_sn, LocalPattern &pattern_ns) const
Definition: blockoffdiagonalwrapper.hh:146
Default flags for all local operators.
Definition: flags.hh:19