CRTP mixin class for finite elements with additional skills. More...
#include <ikarus/finiteelements/mixin.hh>
Public Types | |
| using | SupportedResultTypes = decltype(std::tuple_cat(computeSupportedResultTypes< Skills< PreFE, typename PreFE::template FE< Skills... > > >()...)) |
| Type alias for the supported result types by the mixin. More... | |
| using | Traits = PreFE::Traits |
| using | FERequirementType = typename Traits::FERequirementType |
| using | LocalView = typename Traits::LocalView |
| using | Args = std::tuple< ARGS... > |
Public Member Functions | |
| FEMixin (typename Skills< PreFE, typename PreFE::template FE< Skills... > >::Pre &&... skillsArgs) | |
| Constructor for the FEMixin class. More... | |
| template<template< typename, int, int > class RT> requires requires(FEMixin m, const FERequirementType& req, const Dune::FieldVector<double, Traits::mydim>& local) { m.template calculateAtImpl<RT>(req, local, Dune::PriorityTag<10>()); } | |
| auto | calculateAt (const FERequirementType &req, const Dune::FieldVector< double, Traits::mydim > &local) const |
| Calculate the element values at a specific location for a given ResultType. More... | |
| void | bind () |
| Call all bind functions if the skill implements it. More... | |
| template<typename ScalarType = double> requires implementsCalculateScalarImpl | |
| auto | calculateScalarImpl (const FERequirementType &par, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const |
Calculate the scalar value in each skill and joins them by +. More... | |
| template<typename ScalarType > requires implementsCalculateVectorImpl | |
| void | calculateVectorImpl (const FERequirementType &par, typename Traits::template VectorType< ScalarType > force, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const |
| Calculate the vector for each skill. More... | |
| template<typename ScalarType > requires implementsCalculateMatrixImpl | |
| void | calculateMatrixImpl (const FERequirementType &par, typename Traits::template MatrixType< ScalarType > K, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const |
| Calculate the matrix for each skill. More... | |
Static Public Member Functions | |
| template<template< typename, typename > class Skill> | |
| static consteval bool | hasSkill () |
| Checks if the mixin class has a specific skill. More... | |
Public Attributes | |
| Args | args |
Static Public Attributes | |
| static constexpr int | worldDim = Traits::worlddim |
Protected Member Functions | |
| const auto & | underlying () const |
| Get a reference to the underlying finite element object. More... | |
| auto & | underlying () |
| Get a reference to the underlying finite element object. More... | |
This mixin class is designed for finite elements and provides the ability to include additional skills through the CRTP (Curiously Recurring Template Pattern).
|
inherited |
| using Ikarus::FEMixin< PreFE, Skills >::FERequirementType = typename Traits::FERequirementType |
| using Ikarus::FEMixin< PreFE, Skills >::LocalView = typename Traits::LocalView |
| using Ikarus::FEMixin< PreFE, Skills >::SupportedResultTypes = decltype(std::tuple_cat(computeSupportedResultTypes<Skills<PreFE, typename PreFE::template FE<Skills...> >>()...)) |
| using Ikarus::FEMixin< PreFE, Skills >::Traits = PreFE::Traits |
|
inlineexplicit |
| skillsArgs | Variadic arguments for initializing the additional skills. |
|
inline |
|
inline |
| RT | The ResultType to calculate. |
| req | The FERequirementType object specifying the requirements for the calculation. |
| local | The local coordinates where the calculation is performed. |
|
inline |
| ScalarType | The scalar type for the calculation. |
| par | The FERequirementType object specifying the requirements for the calculation. |
| K | The matrix to store the calculated result. |
| dx | Optional vector used in the calculation. |
|
inline |
| ScalarType | The scalar type for the calculation. |
| par | The FERequirementType object specifying the requirements for the calculation. |
| dx | Optional vector used in the calculation. |
|
inline |
| ScalarType | The scalar type for the calculation. |
| par | The FERequirementType object specifying the requirements for the calculation. |
| force | The vector to store the calculated result. |
| dx | Optional vector used in the calculation. |
|
inlinestatic |
| Skill | The skill to check for. |
|
inlineprotected |
|
inlineprotected |
|
inherited |
|
staticconstexpr |