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

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

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

Public Types

using Traits = PreFE::Traits
 
using FERequirementType = typename Traits::FERequirementType
 
using LocalView = typename Traits::LocalView
 
using Geometry = typename Traits::Geometry
 
using GridView = typename Traits::GridView
 
using Pre = EnhancedAssumedStrainsPre
 
using SupportedResultTypes = std::tuple< decltype(makeRT< ResultTypes::linearStress >())>
 

Public Member Functions

 EnhancedAssumedStrains (const Pre &pre)
 Constructor for Enhanced Assumed Strains elements. More...
 
bool isDisplacementBased () const
 Checks if the element is displacement-based and the EAS is turned off. More...
 
const auto & easVariant () const
 Gets the variant representing the type of Enhanced Assumed Strains (EAS). More...
 
auto numberOfEASParameters () const
 Gets the number of EAS parameters based on the current EAS type. More...
 
template<template< typename, int, int > class RT>
auto calculateAtImpl (const FERequirementType &req, const Dune::FieldVector< double, Traits::mydim > &local, Dune::PriorityTag< 2 >) const
 Calculates a requested result at a specific local position using the Enhanced Assumed Strains (EAS) method. More...
 
void setEASType (int numberOfEASParameters)
 Sets the EAS type for 2D elements. More...
 

Protected Member Functions

void bindImpl ()
 
void easApplicabilityCheck () const
 
template<typename ScalarType >
void calculateMatrixImpl (const FERequirementType &par, typename Traits::template MatrixType<> K, const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const
 
template<typename ScalarType >
ScalarType calculateScalarImpl (const FERequirementType &par, const std::optional< std::reference_wrapper< 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< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &dx=std::nullopt) const
 

Detailed Description

template<typename PreFE, typename FE>
class Ikarus::EnhancedAssumedStrains< PreFE, FE >

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

Template Parameters
PreFEType of the pre finite element.
FEType of the finite element.

Member Typedef Documentation

◆ FERequirementType

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

◆ Geometry

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

◆ GridView

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

◆ LocalView

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

◆ Pre

template<typename PreFE , typename FE >
using Ikarus::EnhancedAssumedStrains< PreFE, FE >::Pre = EnhancedAssumedStrainsPre

◆ SupportedResultTypes

template<typename PreFE , typename FE >
using Ikarus::EnhancedAssumedStrains< PreFE, FE >::SupportedResultTypes = std::tuple<decltype(makeRT<ResultTypes::linearStress>())>

◆ Traits

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

Constructor & Destructor Documentation

◆ EnhancedAssumedStrains()

template<typename PreFE , typename FE >
Ikarus::EnhancedAssumedStrains< PreFE, FE >::EnhancedAssumedStrains ( const Pre pre)
inlineexplicit
Parameters
preThe pre finite element

Member Function Documentation

◆ bindImpl()

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

◆ calculateAtImpl()

template<typename PreFE , typename FE >
template<template< typename, int, int > class RT>
auto Ikarus::EnhancedAssumedStrains< PreFE, FE >::calculateAtImpl ( const FERequirementType req,
const Dune::FieldVector< double, Traits::mydim > &  local,
Dune::PriorityTag< 2 >   
) 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.
Returns
calculated result
Template Parameters
RTThe type representing the requested result.

◆ calculateMatrixImpl()

template<typename PreFE , typename FE >
template<typename ScalarType >
void Ikarus::EnhancedAssumedStrains< PreFE, FE >::calculateMatrixImpl ( const FERequirementType par,
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 >
ScalarType Ikarus::EnhancedAssumedStrains< PreFE, FE >::calculateScalarImpl ( const FERequirementType par,
const std::optional< std::reference_wrapper< const Eigen::VectorX< ScalarType > > > &  dx = std::nullopt 
) const
inlineprotected

◆ calculateVectorImpl()

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

◆ easApplicabilityCheck()

template<typename PreFE , typename FE >
void Ikarus::EnhancedAssumedStrains< PreFE, FE >::easApplicabilityCheck ( ) const
inlineprotected
Here is the caller graph for this function:

◆ easVariant()

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

◆ isDisplacementBased()

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

◆ numberOfEASParameters()

template<typename PreFE , typename FE >
auto Ikarus::EnhancedAssumedStrains< PreFE, FE >::numberOfEASParameters ( ) const
inline
Returns
Number of EAS parameters.
Here is the caller graph for this function:

◆ setEASType()

template<typename PreFE , typename FE >
void Ikarus::EnhancedAssumedStrains< PreFE, FE >::setEASType ( int  numberOfEASParameters)
inline
Parameters
numberOfEASParametersThe number of EAS parameters
Here is the caller graph for this function:

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