DUNE-ACFEM (unstable)

All implemented arithmetic operations with models. More...

Modules

 ModelTypeTraits
 

Typedefs

template<class Model , std::size_t tag, std::size_t signature = Get<tag, typename ModelTraits<Model>::MethodCallSignatures>::value>
using Dune::ACFem::ModelMethod = PDEModel::TaggedModelMethod< Model, tag, signature >
 Exports from namespace.
 
template<class Model , std::size_t tag>
using Dune::ACFem::ModelClosureMethod = PDEModel::TaggedModelMethod< Model, tag, ModelIntrospection::MethodSignatureClosure< tag >::value >
 Exports from namespace.
 
template<class F , class Model >
using Dune::ACFem::UnaryModelExpression = PDEModel::UnaryModelExpression< F, Model >
 Exports from namespace.
 

Functions

template<class F , class T , std::enable_if_t< IsPDEModel< T >::value, int > = 0>
auto Dune::ACFem::PDEModel::zero (F &&, T &&)
 Provide the canonical zero object.
 
template<class Model , std::enable_if_t< IsProperPDEModel< Model >::value, int > = 0>
auto Dune::ACFem::PDEModel::operator- (Model &&m)
 Unary minus for models.
 

BulkLoadFunction

Add a function to a model in order to implement a load contribution.

The operations generate a BulkLoadFunctionModel.

Possible optimizations: move constants out of the load-function in front of the resulting model.

template<class Left , class Right , std::enable_if_t<(IsProperPDEModel< Left >::value &&IsProperPDEModel< Right >::value), int > = 0>
auto Dune::ACFem::PDEModel::operator+ (Left &&left, Right &&right)
 Binary plus for models. More...
 
template<class Left , class Right , std::enable_if_t<(IsProperPDEModel< Left >::value &&IsProperPDEModel< Right >::value), int > = 0>
auto Dune::ACFem::PDEModel::operator- (Left &&left, Right &&right)
 Binary minus for models. More...
 

Multiplications

Multiplication by scalar quantities – scalar functions and parameters.

template<class T , class M , std::enable_if_t<(IsProperMultiplicationOperand< T >::value &&IsProperPDEModel< M >::value), int > = 0>
auto Dune::ACFem::PDEModel::operator* (T &&t, M &&m)
 Multiplication by scalars from the left.
 
template<class T , class M , std::enable_if_t<(IsProperMultiplicationOperand< T >::value &&IsProperPDEModel< M >::value), int > = 0>
auto Dune::ACFem::PDEModel::operator* (M &&m, T &&t)
 Multiplication by scalars from the right.
 

Divisions

Division by scalar quantities, i.e.

scalar functions and parameters.

template<class M , class T , std::enable_if_t<(IsProperMultiplicationOperand< T >::value &&IsProperPDEModel< M >::value), int > = 0>
decltype(auto) Dune::ACFem::PDEModel::operator/ (M &&m, T &&t)
 Division by something scalar.
 

Detailed Description

All implemented arithmetic operations with models.

Arithmetic with PDE-models.

Note
We use the std::enable_if_t SFINAE techiques. Unfortunately, operator functions cannot have default arguments. Hence we have to use std::enable_if_t with the return type which means that we cannot use "auto" for the return type. This provides some boiler-plate code. Don't think that this can be helped easily.
the basic expressions are duplicated in the ModelFacade class for technical reasons. See the respective comments on "friend" functions there.

Function Documentation

◆ operator+()

template<class Left , class Right , std::enable_if_t<(IsProperPDEModel< Left >::value &&IsProperPDEModel< Right >::value), int > = 0>
auto Dune::ACFem::PDEModel::operator+ ( Left &&  left,
Right &&  right 
)

Binary plus for models.

Add a function with the "wrong sign" as right-hand-side.

The resulting model will solve A + f = 0.

◆ operator-()

template<class Left , class Right , std::enable_if_t<(IsProperPDEModel< Left >::value &&IsProperPDEModel< Right >::value), int > = 0>
auto Dune::ACFem::PDEModel::operator- ( Left &&  left,
Right &&  right 
)

Binary minus for models.

Add a function as right-hand-side.

Add a function as right-hand-side in order to solve A - f = 0.

The resulting model will solve f - A = 0.

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Mar 28, 23:30, 2024)