DUNE-ACFEM (unstable)
ModelExpressions
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... | |
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.
