Dune-Fufem 2.11-git
Loading...
Searching...
No Matches
userfunctions.hh File Reference

Go to the source code of this file.

Classes

class  Dune::Fufem::Forms::RangeOperator< OuterOp >
 Adaptor for making a callback compatible with Dune::Fufem::Forms. More...
 
class  Dune::Fufem::Forms::NonAffineFamily
 Tag type to classify non-affine finite element families. More...
 

Namespaces

namespace  Dune
 
namespace  Dune::Fufem
 
namespace  Dune::Fufem::Forms
 

Functions

template<class L , class R >
auto Dune::Fufem::Forms::operator+ (const L &l, const R &r)
 Create the sum of two operators.
 
template<class Op , std::enable_if_t< isOperatorOrSumOperator_v< Op >, int > = 0>
auto Dune::Fufem::Forms::operator- (const Op &op)
 Negate an operator.
 
template<class L , class R >
auto Dune::Fufem::Forms::operator- (const L &l, const R &r)
 Create the difference of two operators.
 
template<class Op , class L , class R , std::enable_if_t< isOperatorOrSumOperator_v< L > or isOperatorOrSumOperator_v< R >, int > = 0, class = std::void_t<decltype(Impl::productImpl(std::declval<Op>(), std::declval<L>(), std::declval<R>()))>>
auto Dune::Fufem::Forms::product (const Op &op, const L &l, const R &r)
 Generic exterior product of two multilinear operators.
 
template<class L , class R , std::enable_if_t< isOperatorOrSumOperator_v< L > or isOperatorOrSumOperator_v< R >, int > = 0, class = std::void_t<decltype(product(std::declval<LocalOperators::MultOp>(), std::declval<L>(), std::declval<R>()))>>
auto Dune::Fufem::Forms::operator* (const L &l, const R &r)
 Exterior product of two multilinear operators based on pointwise multiplication.
 
template<class L , class R , std::enable_if_t< isOperatorOrSumOperator_v< L > or isOperatorOrSumOperator_v< R >, int > = 0, class = std::void_t<decltype(product(std::declval<LocalOperators::DotOp>(), std::declval<L>(), std::declval<R>()))>>
auto Dune::Fufem::Forms::dot (const L &l, const R &r)
 Exterior product of two multilinear operators based on pointwise dot-product.
 
template<class OuterOp , class InnerOp , std::enable_if_t< isOperatorOrSumOperator_v< InnerOp >, int > = 0, std::enable_if_t< Dune::IsCallable< OuterOp(typename InnerOp::Range)>::value, int > = 0>
auto Dune::Fufem::Forms::compose (const OuterOp &outerOp, const InnerOp &innerOp)
 Generic composition of a multilinear operators with a pointwise outer operator.
 
template<class Op >
auto Dune::Fufem::Forms::transpose (const Op &op)
 Transform an operator by pointwise matrix transposition.
 
template<class Op >
auto Dune::Fufem::Forms::symmetrize (const Op &op)
 Transform an operator by pointwise matrix symmetrization.
 
template<class Op >
auto Dune::Fufem::Forms::trace (const Op &op)
 Transform an operator by pointwise computation of the matrix trace.
 
template<class Op >
auto Dune::Fufem::Forms::inv (const Op &op)
 Transform an operator by pointwise computation of the matrix inverse.
 
template<class L , class R , std::enable_if_t< isOperatorOrSumOperator_v< L > or isOperatorOrSumOperator_v< R >, int > = 0, class = std::void_t<decltype(product(std::declval<LocalOperators::MultOp>(), std::declval<L>(), inv(std::declval<R>())))>>
auto Dune::Fufem::Forms::operator/ (const L &l, const R &r)
 Exterior product of a multilinear operator with the pointwise inverse of 0-linear operator.
 
template<class Basis >
auto Dune::Fufem::Forms::testFunction (const Basis &basis)
 Create unary identity operator on test function space.
 
template<class Basis >
auto Dune::Fufem::Forms::testFunction (const Basis &basis, NonAffineFamily tag)
 Create unary identity operator on test function space.
 
template<class Basis , class... Args, std::enable_if_t<(sizeof...(Args)>0), int > = 0>
auto Dune::Fufem::Forms::testFunction (const Basis &basis, Args &&... args)
 Create unary identity operator on test function space.
 
template<class Basis >
auto Dune::Fufem::Forms::trialFunction (const Basis &basis)
 Create unary identity operator on trial function space.
 
template<class Basis >
auto Dune::Fufem::Forms::trialFunction (const Basis &basis, NonAffineFamily tag)
 Create unary identity operator on trial function space.
 
template<class Basis , class... Args, std::enable_if_t<(sizeof...(Args)>0), int > = 0>
auto Dune::Fufem::Forms::trialFunction (const Basis &basis, Args &&... args)
 Create unary identity operator on trial function space.
 
template<class Op , std::enable_if_t< isOperatorOrSumOperator_v< Op > and(Op::arity<=1), int > = 0>
auto Dune::Fufem::Forms::outside (const Op &op)
 Construct outside version of a given operator.
 
template<class Op , std::enable_if_t< isOperatorOrSumOperator_v< Op > and(Op::arity<=1), int > = 0>
auto Dune::Fufem::Forms::avg (const Op &op)
 Construct intersection average of a given operator.
 
template<class Op , std::enable_if_t< isOperatorOrSumOperator_v< Op > and(Op::arity<=1), int > = 0>
auto Dune::Fufem::Forms::jump (const Op &op)
 Construct intersection jump of a given operator.
 
template<class GridView >
auto Dune::Fufem::Forms::meshSize (const GridView &gridView)
 Construct mesh size operator.
 
template<class GridView >
auto Dune::Fufem::Forms::meshSize ()
 Construct mesh size operator.
 
template<class GridView >
auto Dune::Fufem::Forms::faceNormal (const GridView &gridView)
 Construct operator representing the face normals.
 
template<class GridView >
auto Dune::Fufem::Forms::faceNormal ()
 Construct operator representing the face normals.
 
template<class Op , class V , std::enable_if_t< isOperatorOrSumOperator_v< Op >, int > = 0>
auto Dune::Fufem::Forms::bindToCoefficients (const Op &op, V &&vector)
 Bind a linear operator to a coefficient vector.
 
template<class Op , class V , std::enable_if_t< isOperatorOrSumOperator_v< Op >, int > = 0, std::enable_if_t< not isOperatorOrSumOperator_v< std::decay_t< V > >, int > = 0>
auto Dune::Fufem::Forms::operator| (const Op &op, V &&v)
 Bind a linear operator to a coefficient vector.
 
template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::jacobian (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the jacobian of an operator.
 
template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::divergence (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the divergence of an operator.
 
template<class B , class TP , std::size_t argIndex>
auto Dune::Fufem::Forms::curl (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the curl of an operator.
 
template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(jacobian(ops)...); }
auto Dune::Fufem::Forms::jacobian (const SumOperator< Ops... > &op)
 Obtain the jacobian of a sum of operators.
 
template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(jacobian(ops)...); }
auto Dune::Fufem::Forms::divergence (const SumOperator< Ops... > &op)
 Obtain the divergence of a sum of operators.
 
template<class... Ops>
requires requires(const Ops&... ops) { SumOperator(curl(ops)...); }
auto Dune::Fufem::Forms::curl (const SumOperator< Ops... > &op)
 Obtain the curl of a sum of operators.
 
template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto Dune::Fufem::Forms::gradient (const Op &op)
 Obtain the gradient of an operator.
 
template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto Dune::Fufem::Forms::grad (const Op &op)
 Obtain the gradient of an operator.
 
template<class Op >
requires requires {divergence(op);}
auto Dune::Fufem::Forms::div (const Op &op)
 Obtain the divergence of an operator.
 
template<class Op >
requires requires {curl(op);}
auto Dune::Fufem::Forms::rot (const Op &op)
 Obtain the curl of an operator.
 
template<class Op >
requires requires {grad(op);}
auto Dune::Fufem::Forms::D (const Op &op, std::size_t k)
 Obtain the i-th partial derivative of an operator.