1 #ifndef DUNE_FEM_DIRICHLETWRAPPER_HH
2 #define DUNE_FEM_DIRICHLETWRAPPER_HH
6 #include <dune/common/fmatrix.hh>
22 template<
class Operator,
39 template <
class... Args>
41 : op_( std::forward<Args&>(args)... ) , constraints_( op_.
model(), op_.
rangeSpace() )
58 constraints()( u, w, ConstraintsType::Operation::set );
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();
109 template <
typename O = Operator>
111 -> Dune::void_t< decltype( std::declval< O >().setCommunicate(
true) ) >
113 op_.setCommunicate(commuicate);
116 template <
typename O = Operator>
118 -> Dune::void_t< decltype( std::declval< O >().setQuadratureOrders(0,0) ) >
120 return op_.setQuadratureOrders(interior,surface);
static constexpr T sub(T a)
Definition: utility.hh:61
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
ModelType & model() const
Definition: dirichletwrapper.hh:123
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
const RangeDiscreteFunctionSpaceType & rangeSpace() const
Definition: dirichletwrapper.hh:104
void setConstraints(const DomainRangeType &value, DomainFunctionType &u) const
Definition: dirichletwrapper.hh:49
const auto & dirichletBlocks() const
Definition: dirichletwrapper.hh:66
auto setCommunicate(const bool commuicate) -> Dune::void_t< decltype(std::declval< O >().setCommunicate(true)) >
Definition: dirichletwrapper.hh:110
const ConstraintsType & constraints() const
Definition: dirichletwrapper.hh:124
Operator::RangeFunctionType RangeFunctionType
Definition: dirichletwrapper.hh:29
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:117
DomainFunctionType::DiscreteFunctionSpaceType DomainDiscreteFunctionSpaceType
Definition: dirichletwrapper.hh:32
Operator::ModelType ModelType
Definition: dirichletwrapper.hh:30
const DomainDiscreteFunctionSpaceType & domainSpace() const
Definition: dirichletwrapper.hh:100
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