DUNE-ACFEM (unstable)

Dune::ACFem::PDEModel::ModelMethod< Model, F, source, IndexSequence<>, IndexSequence< OuterArgsIdx... >, IndexSequence< InnerArgsIdx... >, std::enable_if_t<!Traits< Model >::template HasMethod< source >::value > > Class Template Reference

Implement the method specified by tag with the signature defined by OuterArgSeq. More...

#include <dune/acfem/models/unaryexpression.hh>

Public Member Functions

auto source (const TupleElement< OuterArgsIdx, AllArgs< Model > > &... args) const
 The proper method inherited by the derived model.
 
auto operator() (const TupleElement< OuterArgsIdx, AllArgs< Model > > &... args) const
 Helper in order to use parametrized expression templates.
 

Detailed Description

template<class Model, class F, std::size_t... OuterArgsIdx, std::size_t... InnerArgsIdx>
class Dune::ACFem::PDEModel::ModelMethod< Model, F, source, IndexSequence<>, IndexSequence< OuterArgsIdx... >, IndexSequence< InnerArgsIdx... >, std::enable_if_t<!Traits< Model >::template HasMethod< source >::value > >

Implement the method specified by tag with the signature defined by OuterArgSeq.

If Model defines the corresponding method then forward to the method defined by the model with the call-signature defined by InnerArgSeq. Otherwise forward to the linearized method or implement a dummy method with the requested call-signature which returns 0.

Note
Unfortunately, the quadrature point comes as a free template. This again doubles the number of specializations: if the point is omitted, then the method is a non-template method. Also: at least gcc fails to deduce the correct call pattern when not specializing the quad-point/no quad-point case.
Parameters
[in]ModelThe model class.
[in]ReturnValueFunctorA function-like object (e.g. a lambda) which is applied to the return value of the respective model method in order to implement unary model operations.
[in]tagThe "name" of the requested method.
[in]LinArgSeqIndices into to closure argument tuple to get the point of linearization.
[in]OuterArgSeqIndices into the closure argument tuple.
[in]InnerArgSeqIndices into the sub-tuple of the closure argument tuple defined by OuterArgSeq.
[in]DisableDummy template parameter in order to disable template instantiation using the usual std::enable_if_t technique.

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.80.0 (May 16, 22:29, 2024)