1#ifndef DUNE_FEM_DIRICHLETWRAPPER_HH
2#define DUNE_FEM_DIRICHLETWRAPPER_HH
6#include <dune/common/fmatrix.hh>
22template<
class Operator,
39 template <
class... Args>
58 constraints()( u, w, ConstraintsType::Operation::set );
64 constraints()( u, w, ConstraintsType::Operation::sub );
79 -> Dune::void_t<decltype(std::declval<const Operator&>()(u,w))>
91 template <
class Gr
idFunctionType>
93 -> Dune::void_t<decltype(std::declval<const Operator&>().jacobian(u,jOp))>
102 return op_.domainSpace();
106 return op_.rangeSpace();
111 return op_.gridSizeInterior();
114 template <
typename O = Operator>
116 -> Dune::void_t< decltype( std::declval< O >().setCommunicate(
true) ) >
118 op_.setCommunicate(commuicate);
121 template <
typename O = Operator>
123 -> Dune::void_t< decltype( std::declval< O >().setQuadratureOrders(0,0) ) >
125 return op_.setQuadratureOrders(interior,surface);
abstract differentiable operator
Definition: differentiableoperator.hh:29
Definition: dirichletwrapper.hh:27
void setConstraints(const GF &u, RangeFunctionType &w) const
Definition: dirichletwrapper.hh:55
DirichletWrapperOperator(Args &... args)
Definition: dirichletwrapper.hh:40
auto operator()(const GF &u, RangeFunctionType &w) const -> Dune::void_t< decltype(std::declval< const Operator & >()(u, w))>
Definition: dirichletwrapper.hh:78
auto jacobian(const GridFunctionType &u, JacobianOperatorType &jOp) const -> Dune::void_t< decltype(std::declval< const Operator & >().jacobian(u, jOp))>
Definition: dirichletwrapper.hh:92
Operator::JacobianOperatorType JacobianOperatorType
Definition: dirichletwrapper.hh:34
void subConstraints(const GF &u, RangeFunctionType &w) const
Definition: dirichletwrapper.hh:61
Operator::DirichletModelType DirichletModelType
Definition: dirichletwrapper.hh:31
RangeFunctionType::DiscreteFunctionSpaceType RangeDiscreteFunctionSpaceType
Definition: dirichletwrapper.hh:33
std::size_t gridSizeInterior() const
Definition: dirichletwrapper.hh:109
const RangeDiscreteFunctionSpaceType & rangeSpace() const
Definition: dirichletwrapper.hh:104
void setConstraints(const DomainRangeType &value, DomainFunctionType &u) const
Definition: dirichletwrapper.hh:49
auto setCommunicate(const bool commuicate) -> Dune::void_t< decltype(std::declval< O >().setCommunicate(true)) >
Definition: dirichletwrapper.hh:115
Operator::RangeFunctionType RangeFunctionType
Definition: dirichletwrapper.hh:29
const ConstraintsType & constraints() const
Definition: dirichletwrapper.hh:129
const DomainDiscreteFunctionSpaceType & domainSpace() const
Definition: dirichletwrapper.hh:100
virtual void operator()(const DomainFunctionType &u, RangeFunctionType &w) const
application operator
Definition: dirichletwrapper.hh:72
RangeDiscreteFunctionSpaceType::RangeType DomainRangeType
Definition: dirichletwrapper.hh:35
ConstraintsType::DirichletBlockVector DirichletBlockVector
Definition: dirichletwrapper.hh:37
auto setQuadratureOrders(unsigned int interior, unsigned int surface) -> Dune::void_t< decltype(std::declval< O >().setQuadratureOrders(0, 0)) >
Definition: dirichletwrapper.hh:122
ModelType & model() const
Definition: dirichletwrapper.hh:128
DomainFunctionType::DiscreteFunctionSpaceType DomainDiscreteFunctionSpaceType
Definition: dirichletwrapper.hh:32
Operator::ModelType ModelType
Definition: dirichletwrapper.hh:30
void setConstraints(DomainFunctionType &u) const
Definition: dirichletwrapper.hh:44
Constraints ConstraintsType
Definition: dirichletwrapper.hh:36
void jacobian(const DomainFunctionType &u, JacobianOperatorType &jOp) const
Definition: dirichletwrapper.hh:85
Operator::DomainFunctionType DomainFunctionType
Definition: dirichletwrapper.hh:28
const auto & dirichletBlocks() const
Definition: dirichletwrapper.hh:66