Dune-Fufem 2.11-git
Loading...
Searching...
No Matches
Dune::Fufem::Forms Namespace Reference

Namespaces

namespace  LocalOperators
 

Classes

class  Boundary
 Class representing the grid view boundary as integration domain. More...
 
class  BoundUnaryOperator
 Wrapper binding a linear operator to a coefficient vector. More...
 
class  Bulk
 Class representing the grid view elements as integration domain. More...
 
class  CacheManager
 A class for managing caches of different types. More...
 
class  Coefficient
 Coefficient function. More...
 
class  FaceNormalOperator
 Operator representing the normal field on intersection. More...
 
class  FEFunctionDivergenceOperator
 Linear map representing the divergenc of the elements of an FE-space. More...
 
class  FEFunctionJacobianOperator
 Linear map representing the jacobians of the elements of an FE-space. More...
 
class  FEFunctionOperator
 Linear map representing the elements of an FE-space. More...
 
class  FEOperatorBase
 Base class of elementary differential operators on an FE-space. More...
 
class  IntegratedBilinearForm
 Local assembler corresponding to a bulk bilinear form. More...
 
class  IntegratedBoundaryBilinearForm
 Local assembler corresponding to a boundary bilinear form. More...
 
class  IntegratedBoundaryLinearForm
 Local assembler corresponding to a boundary linear form. More...
 
class  IntegratedLinearForm
 Local assembler corresponding to a bulk linear form. More...
 
class  IntegratedSkeletonBilinearForm
 Local assembler corresponding to a skeleton bilinear form. More...
 
class  IntegratedSkeletonLinearForm
 Local assembler corresponding to a skeleton linear form. More...
 
struct  IsBoundaryDomain
 Traits class to identify boundary integration domains. More...
 
struct  IsBoundaryDomain< Boundary >
 Tag class Boundary as boundary integration domain. More...
 
struct  IsBoundaryDomain< Dune::Fufem::Boundary< GridView > >
 Tag class template Dune::Fufem::Boundary as boundary integration domain. More...
 
struct  IsBoundaryDomain< Dune::Fufem::BoundaryPatch< GridView > >
 Tag class template Dune::Fufem::BoundaryPatch as boundary integration domain. More...
 
struct  IsBoundaryDomain<::BoundaryPatch< GridView > >
 Tag class template BoundaryPatch as boundary integration domain. More...
 
struct  IsBulkDomain
 Traits class to identify bulk integration domains. More...
 
struct  IsBulkDomain< Bulk >
 Tag class Bulk as bulk integration domain. More...
 
struct  IsDomain
 Traits class to identify integration domains. More...
 
struct  IsLocalAssembler
 
struct  IsLocalAssembler< IntegratedBilinearForm< BilinearOperator, Domain > >
 
struct  IsLocalAssembler< IntegratedBoundaryBilinearForm< BilinearOperator, Domain > >
 
struct  IsLocalAssembler< IntegratedBoundaryLinearForm< LinearOperator, Domain > >
 
struct  IsLocalAssembler< IntegratedLinearForm< LinearOperator, Domain > >
 
struct  IsLocalAssembler< IntegratedSkeletonBilinearForm< BilinearOperator, Patch > >
 
struct  IsLocalAssembler< IntegratedSkeletonLinearForm< LinearOperator, Patch > >
 
struct  IsLocalAssembler< LocalSumAssembler< LocalAssemblers... > >
 
struct  IsSkeletonDomain
 Traits class to identify skeleton integration domains. More...
 
struct  IsSkeletonDomain< Skeleton >
 Tag class Skeleton as skeleton integration domain. More...
 
class  LocalFunctionAdaptor
 Adaptor for turning a Fufem::Forms LocalOperator into a LocalFunction. More...
 
class  LocalSumAssembler
 Sum of local assemblers obtained using Dune::Fufem::Forms::integrate(...) More...
 
class  MeshSizeOperator
 Operator representing the mesh size of entities. More...
 
class  MultilinearOperator
 Base class for multilinear operator implementations. More...
 
class  MultipleQuadratureCache
 A cache providing multiple versions for different quadrature rules. More...
 
class  NonAffineFamily
 Tag type to classify non-affine finite element families. More...
 
class  OutsideOperator
 Operator for switching to the outside entity. More...
 
class  ProductOperator
 Generic product of two multilinear operators. More...
 
class  RangeOperator
 Adaptor for making a callback compatible with Dune::Fufem::Forms. More...
 
class  ShapeFunctionCache
 A hierarchic cache for storing shape function evaluations for a tree. More...
 
class  ShapeFunctionCache< Node, CT, std::enable_if_t< Dune::Fufem::Impl::Concept::LeafTreeNode< Node > > >
 
class  ShapeFunctionCache< Node, CT, std::enable_if_t< Dune::Fufem::Impl::Concept::StaticDegreeInnerTreeNode< Node > and not Dune::Fufem::Impl::Concept::UniformInnerTreeNode< Node > > >
 
class  ShapeFunctionCache< Node, CT, std::enable_if_t< Dune::Fufem::Impl::Concept::UniformInnerTreeNode< Node > > >
 
class  SimpleCache
 A simple cache implementation storing values. More...
 
class  Skeleton
 Class representing the grid view skeleton as integration domain. More...
 
class  SumOperator
 Sum of several multilinear operators. More...
 
class  TransformedOperator
 Pointwise transformation of a multilinear operator. More...
 
class  UnaryOperator
 Base class for unary multilinear operator implementations. More...
 
class  UniqueCacheId
 Objects of this class are used to uniquely identifies a cache. More...
 

Typedefs

template<class Op >
using IsOperator = decltype(Impl::isOperatorHelper(std::declval< const std::decay_t< Op > * >()))
 Traits class for checking if Op is derived from MultilinearOperator<k>
 
template<class Op >
using IsSumOperator = Impl::IsSumOperatorHelper< std::decay_t< Op > >
 Traits class for checking if Op is a SumOperator.
 
template<class Op >
using IsOperatorOrSumOperator = std::disjunction< IsOperator< Op >, IsSumOperator< Op > >
 Traits class for checking if Op is either a SumOperator or derived from MultilinearOperator<k>
 
template<class CT , int dimension>
using MultipleQuadratureCacheManager = MultipleQuadratureCache< CacheManager< CT, dimension > >
 Template alias for MultipleQuadratureCache<CacheManager<CT, dimension>>
 

Functions

template<class MultilinearOperator , class Domain >
requires isOperatorOrSumOperator_v<MultilinearOperator> && IsDomain<Domain>
::value auto integrate (MultilinearOperator op, const Domain &domain)
 Integrate a k-linear operator to obtain a k-linear form.
 
template<class MultilinearOperator , std::enable_if_t< isOperatorOrSumOperator_v< MultilinearOperator >, int > = 0>
auto integrate (MultilinearOperator op)
 Integrate a k-linear operator to obtain a k-linear form.
 
template<class L , class R >
auto 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 operator- (const Op &op)
 Negate an operator.
 
template<class L , class R >
auto 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 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 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 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 compose (const OuterOp &outerOp, const InnerOp &innerOp)
 Generic composition of a multilinear operators with a pointwise outer operator.
 
template<class Op >
auto transpose (const Op &op)
 Transform an operator by pointwise matrix transposition.
 
template<class Op >
auto symmetrize (const Op &op)
 Transform an operator by pointwise matrix symmetrization.
 
template<class Op >
auto trace (const Op &op)
 Transform an operator by pointwise computation of the matrix trace.
 
template<class Op >
auto 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 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 testFunction (const Basis &basis)
 Create unary identity operator on test function space.
 
template<class Basis >
auto 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 testFunction (const Basis &basis, Args &&... args)
 Create unary identity operator on test function space.
 
template<class Basis >
auto trialFunction (const Basis &basis)
 Create unary identity operator on trial function space.
 
template<class Basis >
auto 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 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 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 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 jump (const Op &op)
 Construct intersection jump of a given operator.
 
template<class GridView >
auto meshSize (const GridView &gridView)
 Construct mesh size operator.
 
template<class GridView >
auto meshSize ()
 Construct mesh size operator.
 
template<class GridView >
auto faceNormal (const GridView &gridView)
 Construct operator representing the face normals.
 
template<class GridView >
auto faceNormal ()
 Construct operator representing the face normals.
 
template<class Op , class V , std::enable_if_t< isOperatorOrSumOperator_v< Op >, int > = 0>
auto 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 operator| (const Op &op, V &&v)
 Bind a linear operator to a coefficient vector.
 
template<class B , class TP , std::size_t argIndex>
auto jacobian (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the jacobian of an operator.
 
template<class B , class TP , std::size_t argIndex>
auto divergence (const FEFunctionOperator< B, TP, argIndex > &op)
 Obtain the divergence of an operator.
 
template<class B , class TP , std::size_t argIndex>
auto 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 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 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 curl (const SumOperator< Ops... > &op)
 Obtain the curl of a sum of operators.
 
template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto gradient (const Op &op)
 Obtain the gradient of an operator.
 
template<class Op >
requires requires {Fufem::Forms::transpose(jacobian(op));}
auto grad (const Op &op)
 Obtain the gradient of an operator.
 
template<class Op >
requires requires {divergence(op);}
auto div (const Op &op)
 Obtain the divergence of an operator.
 
template<class Op >
requires requires {curl(op);}
auto rot (const Op &op)
 Obtain the curl of an operator.
 
template<class Op >
requires requires {grad(op);}
auto D (const Op &op, std::size_t k)
 Obtain the i-th partial derivative of an operator.
 

Variables

template<class Op >
constexpr bool isOperator_v = IsOperator<Op>::value
 Short cut for IsOperator<Op>::value.
 
template<class Op >
constexpr bool isSumOperator_v = IsSumOperator<Op>::value
 Short cut for IsSumOperator<Op>::value.
 
template<class Op >
constexpr bool isOperatorOrSumOperator_v = IsOperatorOrSumOperator<Op>::value
 Short cut for IsOperatorOrSumOperator<Op>::value.
 
constexpr Bulk bulk = {}
 Object representing the full grid view as integration domain.
 
constexpr Boundary boundary = {}
 Object representing the full grid view boundary as integration domain.
 
constexpr Skeleton skeleton = {}
 Object representing the full grid view skeleton as integration domain.