version 0.4
Ikarus::EnhancedAssumedStrains< DisplacementBasedElement > Class Template Reference

Wrapper class for using Enhanced Assumed Strains (EAS) with displacement based elements. More...

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

Inheritance diagram for Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >:
[legend]

Public Types

using FERequirementType = typename DisplacementBasedElement::FERequirementType
 
using ResultRequirementsType = typename DisplacementBasedElement::ResultRequirementsType
 
using LocalView = typename DisplacementBasedElement::LocalView
 
using GridView = typename DisplacementBasedElement::GridView
 
using Traits = typename DisplacementBasedElement::Traits
 

Public Member Functions

template<typename... Args>
requires (not std::is_same_v<std::remove_cvref_t<std::tuple_element_t<0, std::tuple<Args...>>>, EnhancedAssumedStrains>)
 EnhancedAssumedStrains (Args &&... args)
 Constructor for Enhanced Assumed Strains elements. More...
 
double calculateScalar (const FERequirementType &par) const
 Calculates a scalar quantity for the element. More...
 
bool isDisplacementBased () const
 Checks if the element is displacement-based and the EAS is turned off. More...
 
void calculateVector (const FERequirementType &par, typename Traits::template VectorType<> force) const
 Calculates vectorial quantities for the element. More...
 
const auto & easVariant () const
 Gets the variant representing the type of Enhanced Assumed Strains (EAS). More...
 
auto getNumberOfEASParameters () const
 Gets the number of EAS parameters based on the current EAS type. More...
 
void calculateMatrix (const FERequirementType &par, typename Traits::template MatrixType<> K) const
 Calculates the matrix for the element. More...
 
void calculateAt (const ResultRequirementsType &req, const Dune::FieldVector< double, Traits::mydim > &local, ResultTypeMap< double > &result) const
 Calculates the results at a given set of local coordinates using the Enhanced Assumed Strains (EAS) method. More...
 
void setEASType (int numberOfEASParameters_)
 Sets the EAS type for 2D elements. More...
 

Protected Member Functions

template<typename ScalarType >
ScalarType calculateScalarImpl (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const
 
template<typename ScalarType >
void calculateVectorImpl (const FERequirementType &par, typename Traits::template VectorType< ScalarType > force, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const
 

Detailed Description

template<typename DisplacementBasedElement>
class Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >

This class extends a displacement-based element to support Enhanced Assumed Strains.

Template Parameters
DisplacementBasedElementThe base displacement-based element type.

Member Typedef Documentation

◆ FERequirementType

template<typename DisplacementBasedElement >
using Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::FERequirementType = typename DisplacementBasedElement::FERequirementType

◆ GridView

template<typename DisplacementBasedElement >
using Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::GridView = typename DisplacementBasedElement::GridView

◆ LocalView

template<typename DisplacementBasedElement >
using Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::LocalView = typename DisplacementBasedElement::LocalView

◆ ResultRequirementsType

template<typename DisplacementBasedElement >
using Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::ResultRequirementsType = typename DisplacementBasedElement::ResultRequirementsType

◆ Traits

template<typename DisplacementBasedElement >
using Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::Traits = typename DisplacementBasedElement::Traits

Constructor & Destructor Documentation

◆ EnhancedAssumedStrains()

template<typename DisplacementBasedElement >
template<typename... Args>
requires (not std::is_same_v<std::remove_cvref_t<std::tuple_element_t<0, std::tuple<Args...>>>, EnhancedAssumedStrains>)
Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::EnhancedAssumedStrains ( Args &&...  args)
inlineexplicit

Disabling this forwarding constructor if the argument provided is EnhancedAssumedStrains itself, to forward the calls to the implicit copy constructor

Template Parameters
ArgsVariadic template for constructor arguments.
Parameters
argsConstructor arguments forwarded to the base class.

Member Function Documentation

◆ calculateAt()

template<typename DisplacementBasedElement >
void Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::calculateAt ( const ResultRequirementsType req,
const Dune::FieldVector< double, Traits::mydim > &  local,
ResultTypeMap< double > &  result 
) const
inline

This function calculates the results at the specified local coordinates . It takes into account the displacement-based element calculations and, if applicable, incorporates the EAS method for enhanced accuracy.

Parameters
reqThe result requirements.
localThe local coordinates at which results are to be calculated.
resultThe result container to store the calculated values.
Template Parameters
ResultRequirementsTypeThe type representing the requirements for results.

◆ calculateMatrix()

template<typename DisplacementBasedElement >
void Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::calculateMatrix ( const FERequirementType par,
typename Traits::template MatrixType<>  K 
) const
inline

This function calculates the matrix for the element based on the FERequirementType.

Parameters
parThe FERequirementType object.
KMatrix to store the calculated stiffness.

fill K with displacement-based stiffness. It is assumed to be assembled block-wise on element level. This means the displacements x,y,z of node I are grouped together.

◆ calculateScalar()

template<typename DisplacementBasedElement >
double Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::calculateScalar ( const FERequirementType par) const
inline

This function calculates a scalar quantity for the element based on the FERequirementType.

Parameters
parThe FERequirementType object.
Returns
Computed scalar quantity.

◆ calculateScalarImpl()

template<typename DisplacementBasedElement >
template<typename ScalarType >
ScalarType Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::calculateScalarImpl ( const FERequirementType par,
const std::optional< const Eigen::VectorX< ScalarType > > &  dx = std::nullopt 
) const
inlineprotected

◆ calculateVector()

template<typename DisplacementBasedElement >
void Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::calculateVector ( const FERequirementType par,
typename Traits::template VectorType<>  force 
) const
inline

This function calculates the vectorial quantities for the element based on the FERequirementType.

Parameters
parThe FERequirementType object.
forceVector to store the calculated forces.

◆ calculateVectorImpl()

template<typename DisplacementBasedElement >
template<typename ScalarType >
void Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::calculateVectorImpl ( const FERequirementType par,
typename Traits::template VectorType< ScalarType >  force,
const std::optional< const Eigen::VectorX< ScalarType > > &  dx = std::nullopt 
) const
inlineprotected

◆ easVariant()

template<typename DisplacementBasedElement >
const auto & Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::easVariant ( ) const
inline
Returns
Const reference to the EAS variant.

◆ getNumberOfEASParameters()

template<typename DisplacementBasedElement >
auto Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::getNumberOfEASParameters ( ) const
inline
Returns
Number of EAS parameters.

◆ isDisplacementBased()

template<typename DisplacementBasedElement >
bool Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::isDisplacementBased ( ) const
inline
Returns
True if the element is displacement-based, false otherwise.
Here is the caller graph for this function:

◆ setEASType()

template<typename DisplacementBasedElement >
void Ikarus::EnhancedAssumedStrains< DisplacementBasedElement >::setEASType ( int  numberOfEASParameters_)
inline
Parameters
numberOfEASParameters_The number of EAS parameters

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