DUNE-ACFEM (unstable)
Index-pack expansion helper and actual implementation. More...
#include <dune/acfem/models/unaryexpression.hh>
Public Member Functions | |
template<class ModelArg , class FArg , std::enable_if_t< std::is_constructible< StorageType, FArg, ModelArg >::value, int > = 0> | |
UnaryModelExpression (ModelArg &&model, FArg &&f) | |
Constructor from given model and operation. More... | |
UnaryModelExpression (const UnaryModelExpression &other) | |
Copy constructor. More... | |
UnaryModelExpression (UnaryModelExpression &&other) | |
Move constructor. More... | |
template<class T , std::enable_if_t<(Expressions::EmitByValueV< T > &&std::is_same< T, ModelDecay >::value &&(IsIdentityOperation< OperationType >::value||IsClosureOperation< OperationType >::value)), int > = 0> | |
operator T () const | |
Type-cast to underlying model. | |
template<class T , std::enable_if_t<(!Expressions::EmitByValueV< T > &&std::is_same< T, ModelDecay >::value &&(IsIdentityOperation< OperationType >::value||IsClosureOperation< OperationType >::value)), int > = 0> | |
operator T () && | |
Type-cast to underlying model. | |
template<class T , std::enable_if_t<(!Expressions::EmitByValueV< T > &&std::is_same< T, ModelDecay >::value &&(IsIdentityOperation< OperationType >::value||IsClosureOperation< OperationType >::value)), int > = 0> | |
operator T& () & | |
Type-cast to underlying model. | |
template<class T , std::enable_if_t<(!Expressions::EmitByValueV< T > &&std::is_same< T, ModelDecay >::value &&(IsIdentityOperation< OperationType >::value||IsClosureOperation< OperationType >::value)), int > = 0> | |
operator const T & () const & | |
Type-cast to underlying model. | |
template<std::size_t I, std::enable_if_t<!emitByValue_< I >, int > = 0> | |
OperandType< I > && | operand (IndexConstant< I >=IndexConstant< I >{}) && |
Return one of the stored operands in an rvalue context. More... | |
template<std::size_t I, std::enable_if_t<!emitByValue_< I >, int > = 0> | |
decltype(auto) | operand (IndexConstant< I >=IndexConstant< I >{}) & |
Return one of the stored operands in a mutable reference context. More... | |
template<std::size_t I, std::enable_if_t<!emitByValue_< I >, int > = 0> | |
decltype(auto) | operand (IndexConstant< I >=IndexConstant< I >{}) const & |
Return one of the stored operands in a const reference context. More... | |
Static Public Attributes | |
template<std::size_t I> | |
static constexpr bool | emitByValue_ = EmitByValueV<OperandType<I> > |
Force some things to always be emitted as non-references. | |
FunctionSpaceTypes | |
Forward some basic type from the supplied function-spaces to the model class. Note that FunctionSpace is defined as a shortcut for RangeFunctionSpace in order to simplify the common case DomainFunctionSpace == RangeFunctionSpace. | |
using | HessianRangeSelector = typename std::conditional< std::is_convertible< typename FunctionSpace::RangeType, typename FunctionSpace::HessianRangeType >::value, Fem::ExplicitFieldVector< typename FunctionSpace::HessianRangeType::value_type, FunctionSpace::dimRange >, typename FunctionSpace::HessianRangeType >::type |
The type returned by classifyBoundary(). | |
using | RangeFunctionSpaceType = std::decay_t< Model >::RangeFunctionSpaceType |
The type returned by classifyBoundary(). | |
using | DomainFunctionSpaceType = std::decay_t< Model >::DomainFunctionSpaceType |
The type returned by classifyBoundary(). | |
using | FunctionSpaceType = RangeFunctionSpaceType |
The type returned by classifyBoundary(). | |
using | DomainType = typename FunctionSpaceType::DomainType |
The type returned by classifyBoundary(). | |
using | RangeType = typename FunctionSpaceType::RangeType |
The type returned by classifyBoundary(). | |
using | JacobianRangeType = typename FunctionSpaceType::JacobianRangeType |
The type returned by classifyBoundary(). | |
using | HessianRangeType = HessianRangeSelector< FunctionSpaceType > |
The type returned by classifyBoundary(). | |
using | DomainFieldType = typename FunctionSpaceType::DomainFieldType |
The type returned by classifyBoundary(). | |
using | RangeFieldType = typename FunctionSpaceType::RangeFieldType |
The type returned by classifyBoundary(). | |
using | DomainRangeType = typename DomainFunctionSpaceType::RangeType |
The type returned by classifyBoundary(). | |
using | DomainDomainType = typename DomainFunctionSpaceType::DomainType |
The type returned by classifyBoundary(). | |
using | DomainJacobianRangeType = typename DomainFunctionSpaceType::JacobianRangeType |
The type returned by classifyBoundary(). | |
using | DomainHessianRangeType = HessianRangeSelector< DomainFunctionSpaceType > |
The type returned by classifyBoundary(). | |
using | DomainDomainFieldType = typename DomainFunctionSpaceType::DomainFieldType |
The type returned by classifyBoundary(). | |
using | DomainRangeFieldType = typename DomainFunctionSpaceType::RangeFieldType |
The type returned by classifyBoundary(). | |
using | RangeRangeType = typename RangeFunctionSpaceType::RangeType |
The type returned by classifyBoundary(). | |
using | RangeDomainType = typename RangeFunctionSpaceType::DomainType |
The type returned by classifyBoundary(). | |
using | RangeJacobianRangeType = typename RangeFunctionSpaceType::JacobianRangeType |
The type returned by classifyBoundary(). | |
using | RangeHessianRangeType = HessianRangeSelector< RangeFunctionSpaceType > |
The type returned by classifyBoundary(). | |
using | RangeDomainFieldType = typename RangeFunctionSpaceType::DomainFieldType |
The type returned by classifyBoundary(). | |
using | RangeRangeFieldType = typename RangeFunctionSpaceType::RangeFieldType |
The type returned by classifyBoundary(). | |
using | BoundaryConditionsType = std::pair< bool, std::bitset< dimRange > > |
The type returned by classifyBoundary(). | |
static constexpr int | dimDomain |
The type returned by classifyBoundary(). | |
static constexpr int | dimRange |
The type returned by classifyBoundary(). | |
static constexpr int | domainDimDomain |
The type returned by classifyBoundary(). | |
static constexpr int | domainDimRange |
static constexpr int | rangeDimDomain |
The type returned by classifyBoundary(). | |
static constexpr int | rangeDimRange |
Detailed Description
template<class F, class Model, std::size_t... tag, class Signatures>
class Dune::ACFem::PDEModel::UnaryModelExpression< F, Model, IndexSequence< tag... >, Signatures >
Index-pack expansion helper and actual implementation.
Constructor & Destructor Documentation
◆ UnaryModelExpression() [1/3]
|
inline |
Constructor from given model and operation.
- Parameters
-
[in] model The model to operator on. [in] f The functor to apply to the model. The functor type defaults to OperationTraits<IdentityOperation> and the value for f defaults to the default-construction of the functor which need not exist. In the latter case a properly constructed functor object has to be passed to the constructor.
◆ UnaryModelExpression() [2/3]
|
inline |
Copy constructor.
Copy model and functor from other and reconstruct the "method-providers".
◆ UnaryModelExpression() [3/3]
|
inline |
Move constructor.
Move model and functor from other and reconstruct the "method-providers".
Member Function Documentation
◆ operand() [1/3]
|
inlineinherited |
Return one of the stored operands in a mutable reference context.
In this case we assume that it is safe to return a reference as the storage container should be alive in a real object.
As a special exception operands for which IsTypedValue evaluates to std::true_type are always returned as copy. It is assumed that those do not contain any runtime information.
◆ operand() [2/3]
|
inlineinherited |
Return one of the stored operands in an rvalue context.
In this case exactly the contained type is returned, i.e. a copy for objects or a reference for references.
As a special exception operands for which IsTypedValue evaluates to std::true_type are always returned as copy. It is assumed that those do not contain any runtime information.
◆ operand() [3/3]
|
inlineinherited |
Return one of the stored operands in a const reference context.
In this case we assume that it is safe to return a reference as the storage container should be alive in a real object.
As a special exception operands for which IsTypedValue evaluates to std::true_type are always returned as copy. It is assumed that those do not contain any runtime information.
Member Data Documentation
◆ domainDimRange
|
staticconstexprinherited |
◆ rangeDimRange
|
staticconstexprinherited |
The documentation for this class was generated from the following file:
- dune/acfem/models/unaryexpression.hh