DUNE-ACFEM (unstable)

Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId > Class Template Reference

Wrap a tensor into a Fem::BindableGridFunction. More...

#include <dune/acfem/functions/bindabletensorfunction.hh>

+ Collaboration diagram for Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >:

Public Member Functions

 BindableTensorFunction (Expr &&t, const GridPart &gridPart)
 Standard constructor from tensor expression and GridPart.
 
 BindableTensorFunction (const BindableTensorFunction &other)
 Copy CTOR. More...
 
 BindableTensorFunction (BindableTensorFunction &&other)
 Move CTOR. More...
 
void bind (const EntityType &entity)
 Bind ourselves and all placeholders contained in the value expression. More...
 
template<class Point , std::enable_if_t<(IsQuadraturePoint< Point >::value||IsFieldVector< Point >::value), int > = 0>
const auto & operator() (const Point &point) const
 Function call.
 
template<class Point , std::enable_if_t<(IsQuadraturePoint< Point >::value||IsFieldVector< Point >::value), int > = 0>
void evaluate (const Point &point, RangeType &result) const
 Dune::Fem::BindableGridFunction::evaluate()
 
template<class Point , std::enable_if_t<(IsQuadraturePoint< Point >::value||IsFieldVector< Point >::value), int > = 0>
void jacobian (const Point &point, JacobianRangeType &result) const
 Dune::Fem::BindableGridFunction::jacobian()
 
template<class Point , std::enable_if_t<(IsQuadraturePoint< Point >::value||IsFieldVector< Point >::value), int > = 0>
void hessian (const Point &point, HessianRangeType &result) const
 Dune::Fem::BindableGridFunction::hessian()
 
template<std::size_t I>
auto operator[] (const IndexConstant< I >) &
 Compile-time constant access to the given component. More...
 
template<std::size_t I>
auto operator[] (const IndexConstant< I >) const &
 Compile-time constant access to the given access. More...
 
template<std::size_t I>
auto operator[] (const IndexConstant< I >) const &&
 Compile-time constant access to the given access. More...
 

Static Public Attributes

static constexpr std::size_t indeterminateId_ = IndeterminateId
 Id of the indeterminate.
 
static constexpr std::size_t requestedADOrder_ = AutoDiffOrder
 Max. order of AD differentiation.
 

Detailed Description

template<class Expr, class GridPart, std::size_t AutoDiffOrder = Policy::autoDiffLimit(), std::size_t IndeterminateId = Policy::indeterminateId()>
class Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >

Wrap a tensor into a Fem::BindableGridFunction.

Constructor & Destructor Documentation

◆ BindableTensorFunction() [1/2]

template<class Expr , class GridPart , std::size_t AutoDiffOrder = Policy::autoDiffLimit(), std::size_t IndeterminateId = Policy::indeterminateId()>
Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >::BindableTensorFunction ( const BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId > &  other)
inline

Copy CTOR.

It is vital as the stored tensor expression contain reference to the indeterminate which is maintained in this class as real object providing storage for the local -> global operation.

◆ BindableTensorFunction() [2/2]

template<class Expr , class GridPart , std::size_t AutoDiffOrder = Policy::autoDiffLimit(), std::size_t IndeterminateId = Policy::indeterminateId()>
Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >::BindableTensorFunction ( BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId > &&  other)
inline

Move CTOR.

Could probably be omitted ...

Member Function Documentation

◆ bind()

template<class Expr , class GridPart , std::size_t AutoDiffOrder = Policy::autoDiffLimit(), std::size_t IndeterminateId = Policy::indeterminateId()>
void Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >::bind ( const EntityType &  entity)
inline

Bind ourselves and all placeholders contained in the value expression.

The placeholders contained in the tensor expressions for the derivatives must maintain reference to the value-placeholders, otherwise something is wrong.

◆ operator[]() [1/3]

template<class Expr , class GridPart , std::size_t AutoDiffOrder = Policy::autoDiffLimit(), std::size_t IndeterminateId = Policy::indeterminateId()>
template<std::size_t I>
auto Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >::operator[] ( const IndexConstant< I >  ) &
inline

Compile-time constant access to the given component.

Calling this functions generates a BindableTensorFunction which wraps the restriction tensor w.r.t. to the given component.

References Dune::ACFem::GridFunction::gridFunction().

◆ operator[]() [2/3]

template<class Expr , class GridPart , std::size_t AutoDiffOrder = Policy::autoDiffLimit(), std::size_t IndeterminateId = Policy::indeterminateId()>
template<std::size_t I>
auto Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >::operator[] ( const IndexConstant< I >  ) const &
inline

Compile-time constant access to the given access.

Calling this functions generates a BindableTensorFunction which wraps the restriction tensor w.r.t. to the given component.

References Dune::ACFem::GridFunction::gridFunction().

◆ operator[]() [3/3]

template<class Expr , class GridPart , std::size_t AutoDiffOrder = Policy::autoDiffLimit(), std::size_t IndeterminateId = Policy::indeterminateId()>
template<std::size_t I>
auto Dune::ACFem::GridFunction::BindableTensorFunction< Expr, GridPart, AutoDiffOrder, IndeterminateId >::operator[] ( const IndexConstant< I >  ) const &&
inline

Compile-time constant access to the given access.

Calling this functions generates a BindableTensorFunction which wraps the restriction tensor w.r.t. to the given component.

References Dune::ACFem::GridFunction::gridFunction().


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 15, 22:36, 2024)