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

Truss class represents a truss finite element. More...

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

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

Classes

struct  KinematicVariables
 A structure representing kinematic variables. More...
 

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 Pre = TrussPre
 
using SupportedResultTypes = std::tuple< decltype(makeRT< ResultTypes >())... >
 

Public Member Functions

 Truss (const Pre &pre)
 Constructor for the Truss class. More...
 
template<typename ST = double>
auto displacement (const Requirement &par, const std::optional< std::reference_wrapper< const Eigen::VectorX< ST > > > &dx=std::nullopt) const
 Gets the displacement for the given Requirement and optional displacement vector. More...
 
template<class ST = double>
KinematicVariables< ST > computeStrain (const Requirement &par, const std::optional< std::reference_wrapper< const Eigen::VectorX< ST > > > &dx=std::nullopt) const
 Gets the strain for the given Requirement and optional displacement vector. More...
 
template<template< typename, int, int > class RT>
requires (supportsResultType<RT>())
auto calculateAtImpl (const Requirement &req, const Dune::FieldVector< double, Traits::mydim > &local, Dune::PriorityTag< 0 >) 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
 
static constexpr int worldDim = Traits::worlddim
 

Protected Member Functions

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>
class Ikarus::Truss< PreFE, FE >
Template Parameters
PreFEThe type of the pre finite element.
FEThe type of the finite element.

Member Typedef Documentation

◆ BasisHandler

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

◆ Element

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

◆ FlatBasis

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

◆ Geometry

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

◆ GridView

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

◆ LocalView

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

◆ Pre

template<typename PreFE , typename FE >
using Ikarus::Truss< PreFE, FE >::Pre = TrussPre

◆ Requirement

◆ SupportedResultTypes

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

◆ Traits

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

Constructor & Destructor Documentation

◆ Truss()

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

Member Function Documentation

◆ calculateAtImpl()

template<typename PreFE , typename FE >
template<template< typename, int, int > class RT>
requires (supportsResultType<RT>())
auto Ikarus::Truss< PreFE, FE >::calculateAtImpl ( const Requirement req,
const Dune::FieldVector< double, Traits::mydim > &  local,
Dune::PriorityTag< 0 >   
) 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 >
template<typename ScalarType >
void Ikarus::Truss< PreFE, FE >::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 >
template<typename ScalarType >
auto Ikarus::Truss< PreFE, FE >::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 >
template<typename ScalarType >
void Ikarus::Truss< PreFE, FE >::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

◆ computeStrain()

template<typename PreFE , typename FE >
template<class ST = double>
KinematicVariables< ST > Ikarus::Truss< PreFE, FE >::computeStrain ( const Requirement par,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ST > > > &  dx = std::nullopt 
) const
inline
Template Parameters
STThe scalar type for the strain.
Parameters
parThe Requirement object.
dxOptional displacement vector.
Returns
A tuple containing Green-Lagrange strain, its first and second derivatives w.r.t displacements and the length of the undeformed and deformed geometry.
Here is the caller graph for this function:

◆ displacement()

template<typename PreFE , typename FE >
template<typename ST = double>
auto Ikarus::Truss< PreFE, FE >::displacement ( const Requirement par,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ST > > > &  dx = std::nullopt 
) const
inline
Template Parameters
STThe scalar type for the displacement vector.
Parameters
parThe Requirement object.
dxOptional displacement vector.
Returns
The local displacement vector of the type Dune::BlockVector<Dune::RealTuple<ST, worldDim>>
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 >
constexpr int Ikarus::Truss< PreFE, FE >::myDim = Traits::mydim
staticconstexpr

◆ worldDim

template<typename PreFE , typename FE >
constexpr int Ikarus::Truss< PreFE, FE >::worldDim = Traits::worlddim
staticconstexpr

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