version 0.4.1
Ikarus::LinearElastic< PreFE, FE, PRE > Class Template Reference

LinearElastic class represents a linear elastic finite element. More...

#include <ikarus/finiteelements/mechanics/linearelastic.hh>

Inheritance diagram for Ikarus::LinearElastic< PreFE, FE, PRE >:
[legend]

Public Types

using Traits = PreFE::Traits
 
using BasisHandler = typename Traits::BasisHandler
 
using FlatBasis = typename Traits::FlatBasis
 
using Requirement = FERequirementsFactory< FESolutions::displacement, FEParameter::loadfactor, Traits::useEigenRef >::type
 
using LocalView = typename Traits::LocalView
 
using Geometry = typename Traits::Geometry
 
using GridView = typename Traits::GridView
 
using Element = typename Traits::Element
 
using Material = PRE::Material
 
using Pre = PRE
 
using LocalBasisType = decltype(std::declval< LocalView >().tree().child(0).finiteElement().localBasis())
 
using SupportedResultTypes = std::tuple< decltype(makeRT< ResultTypes >())... >
 

Public Member Functions

 LinearElastic (const Pre &pre)
 Constructor for the LinearElastic class. More...
 
template<typename ScalarType = double>
auto displacementFunction (const Requirement &par, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const
 Gets the displacement function for the given Requirement and optional displacement vector. More...
 
template<class ScalarType = double>
auto strainFunction (const Requirement &par, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const
 Gets the strain function for the given Requirement and optional di splacement vector. More...
 
auto materialTangent () const
 Gets the material tangent matrix for the linear elastic material. More...
 
auto materialTangentFunction (const Requirement &par) const
 Gets the material tangent function for the given Requirement. More...
 
const Geometrygeometry () const
 
size_t numberOfNodes () const
 
int order () const
 
template<template< typename, int, int > class RT>
requires (supportsResultType<RT>())
auto calculateAtImpl (const Requirement &req, const Dune::FieldVector< double, Traits::mydim > &local, Dune::PriorityTag< 1 >) const
 Calculates a requested result at a specific local position. More...
 

Static Public Member Functions

static consteval bool supportsResultType ()
 Returns whether a ResultType is provided by the element. More...
 

Static Public Attributes

static constexpr int myDim = Traits::mydim
 

Protected Member Functions

void bindImpl ()
 A helper function to bind the local view to the element. More...
 
template<typename ScalarType >
void calculateMatrixImpl (const Requirement &par, const MatrixAffordance &affordance, typename Traits::template MatrixType<> K, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const
 
template<typename ScalarType >
auto calculateScalarImpl (const Requirement &par, ScalarAffordance affordance, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const -> ScalarType
 
template<typename ScalarType >
void calculateVectorImpl (const Requirement &par, VectorAffordance affordance, typename Traits::template VectorType< ScalarType > force, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const
 

Detailed Description

template<typename PreFE, typename FE, typename PRE>
class Ikarus::LinearElastic< PreFE, FE, PRE >
Template Parameters
PreFEThe type of the pre finite element.
FEThe type of the finite element.

Member Typedef Documentation

◆ BasisHandler

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::BasisHandler = typename Traits::BasisHandler

◆ Element

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::Element = typename Traits::Element

◆ FlatBasis

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::FlatBasis = typename Traits::FlatBasis

◆ Geometry

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::Geometry = typename Traits::Geometry

◆ GridView

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::GridView = typename Traits::GridView

◆ LocalBasisType

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::LocalBasisType = decltype(std::declval<LocalView>().tree().child(0).finiteElement().localBasis())

◆ LocalView

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::LocalView = typename Traits::LocalView

◆ Material

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::Material = PRE::Material

◆ Pre

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::Pre = PRE

◆ Requirement

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::Requirement = FERequirementsFactory<FESolutions::displacement, FEParameter::loadfactor, Traits::useEigenRef>::type

◆ SupportedResultTypes

using Ikarus::ResultTypeBase< ResultTypes >::SupportedResultTypes = std::tuple<decltype(makeRT<ResultTypes>())...>
inherited

◆ Traits

template<typename PreFE , typename FE , typename PRE >
using Ikarus::LinearElastic< PreFE, FE, PRE >::Traits = PreFE::Traits

Constructor & Destructor Documentation

◆ LinearElastic()

template<typename PreFE , typename FE , typename PRE >
Ikarus::LinearElastic< PreFE, FE, PRE >::LinearElastic ( const Pre pre)
inlineexplicit
Parameters
preThe pre fe

Member Function Documentation

◆ bindImpl()

template<typename PreFE , typename FE , typename PRE >
void Ikarus::LinearElastic< PreFE, FE, PRE >::bindImpl ( )
inlineprotected

◆ calculateAtImpl()

template<typename PreFE , typename FE , typename PRE >
template<template< typename, int, int > class RT>
requires (supportsResultType<RT>())
auto Ikarus::LinearElastic< PreFE, FE, PRE >::calculateAtImpl ( const Requirement req,
const Dune::FieldVector< double, Traits::mydim > &  local,
Dune::PriorityTag< 1 >   
) const
inline
Parameters
reqThe Requirement object holding the global solution.
localLocal position vector.
Template Parameters
RTThe requested result type
Returns
calculated result
Template Parameters
RTThe type representing the requested result.

◆ calculateMatrixImpl()

template<typename PreFE , typename FE , typename PRE >
template<typename ScalarType >
void Ikarus::LinearElastic< PreFE, FE, PRE >::calculateMatrixImpl ( const Requirement par,
const MatrixAffordance affordance,
typename Traits::template MatrixType<>  K,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &  dx = std::nullopt 
) const
inlineprotected

◆ calculateScalarImpl()

template<typename PreFE , typename FE , typename PRE >
template<typename ScalarType >
auto Ikarus::LinearElastic< PreFE, FE, PRE >::calculateScalarImpl ( const Requirement par,
ScalarAffordance  affordance,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &  dx = std::nullopt 
) const -> ScalarType
inlineprotected

◆ calculateVectorImpl()

template<typename PreFE , typename FE , typename PRE >
template<typename ScalarType >
void Ikarus::LinearElastic< PreFE, FE, PRE >::calculateVectorImpl ( const Requirement par,
VectorAffordance  affordance,
typename Traits::template VectorType< ScalarType >  force,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &  dx = std::nullopt 
) const
inlineprotected

◆ displacementFunction()

template<typename PreFE , typename FE , typename PRE >
template<typename ScalarType = double>
auto Ikarus::LinearElastic< PreFE, FE, PRE >::displacementFunction ( const Requirement par,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &  dx = std::nullopt 
) const
inline
Template Parameters
ScalarTypeThe scalar type for the displacement vector.
Parameters
parThe Requirement object.
dxOptional displacement vector.
Returns
The displacement function.
Here is the caller graph for this function:

◆ geometry()

template<typename PreFE , typename FE , typename PRE >
const Geometry & Ikarus::LinearElastic< PreFE, FE, PRE >::geometry ( ) const
inline

◆ materialTangent()

template<typename PreFE , typename FE , typename PRE >
auto Ikarus::LinearElastic< PreFE, FE, PRE >::materialTangent ( ) const
inline
Returns
The material tangent matrix.
Here is the caller graph for this function:

◆ materialTangentFunction()

template<typename PreFE , typename FE , typename PRE >
auto Ikarus::LinearElastic< PreFE, FE, PRE >::materialTangentFunction ( const Requirement par) const
inline
Parameters
parThe Requirement object.
Returns
The material tangent function.

◆ numberOfNodes()

template<typename PreFE , typename FE , typename PRE >
size_t Ikarus::LinearElastic< PreFE, FE, PRE >::numberOfNodes ( ) const
inline

◆ order()

template<typename PreFE , typename FE , typename PRE >
int Ikarus::LinearElastic< PreFE, FE, PRE >::order ( ) const
inline

◆ strainFunction()

template<typename PreFE , typename FE , typename PRE >
template<class ScalarType = double>
auto Ikarus::LinearElastic< PreFE, FE, PRE >::strainFunction ( const Requirement par,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &  dx = std::nullopt 
) const
inline
Template Parameters
ScalarTypeThe scalar type for the strain vector.
Parameters
parThe Requirement object.
dxOptional displacement vector.
Returns
The strain function.
Here is the caller graph for this function:

◆ supportsResultType()

static consteval bool Ikarus::ResultTypeBase< ResultTypes >::supportsResultType ( )
inlinestaticinherited
Template Parameters
RTrequested ResultType

Member Data Documentation

◆ myDim

template<typename PreFE , typename FE , typename PRE >
constexpr int Ikarus::LinearElastic< PreFE, FE, PRE >::myDim = Traits::mydim
staticconstexpr

The documentation for this class was generated from the following file: