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

Wrapper class for using Assumed Stress with displacement based elements. More...

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

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

Public Types

using Traits = PreFE::Traits
 
using Requirement = FERequirements< FESolutions::displacement, FEParameter::loadfactor >
 
using LocalView = typename Traits::LocalView
 
using Geometry = typename Traits::Geometry
 
using GridView = typename Traits::GridView
 
using Pre = AssumedStressPre< ASF >
 
using AssumedStressFunction = ASF
 
template<typename ST >
using VectorXOptRef = std::optional< std::reference_wrapper< const Eigen::VectorX< ST > > >
 
template<template< typename, int, int > class RT>
using RTWrapperType = ResultWrapper< RT< typename Traits::ctype, Traits::mydim, Traits::worlddim >, ResultShape::Vector >
 
using StrainVector = Eigen::Vector< double, strainDim >
 
using MaterialMatrix = Eigen::Matrix< double, strainDim, strainDim >
 

Public Member Functions

 AssumedStress (const Pre &pre)
 Constructor for Assunmed Stress elements. More...
 
const auto & asVariant () const
 Gets the variant representing the type of Assumed Stress. More...
 
auto numberOfInternalVariables () const
 Gets the number of AssumedStress parameters based on the current AssumedStress type. More...
 
template<template< typename, int, int > class RT>
requires (AssumedStress::template supportsResultType<RT>())
auto calculateAtImpl (const Requirement &req, const Dune::FieldVector< double, Traits::mydim > &local, Dune::PriorityTag< 2 >) const
 Calculates a requested result at a specific local position using the Assumed Stress Method. More...
 
void setAssumedStressType (int numberOfInternalVariables)
 Sets the AssumedStress type for 2D elements. More...
 
const auto & internalVariable () const
 Gets the internal state variable beta for the AssumedStress element. More...
 

Static Public Attributes

static constexpr int myDim = Traits::mydim
 
static constexpr int strainDim = myDim * (myDim + 1) / 2
 

Protected Member Functions

void bindImpl ()
 
void updateStateImpl (const Requirement &par, const std::remove_reference_t< typename Traits::template VectorType<> > &correction)
 Updates the internal state variable beta_ at the end of an iteration before the update of the displacements done by the non-linear solver. See [2] for implementation details and further references. More...
 
void asApplicabilityCheck () const
 
template<typename ScalarType >
void calculateMatrixImpl (const Requirement &par, const MatrixAffordance &affordance, typename Traits::template MatrixType<> K, const VectorXOptRef< ScalarType > &dx=std::nullopt) const
 
template<typename ScalarType >
ScalarType calculateScalarImpl (const Requirement &par, ScalarAffordance affordance, const VectorXOptRef< ScalarType > &dx=std::nullopt) const
 
template<typename ScalarType >
void calculateVectorImpl (const Requirement &par, VectorAffordance affordance, typename Traits::template VectorType< ScalarType > force, const VectorXOptRef< ScalarType > &dx=std::nullopt) const
 
template<typename MT , typename BC >
void subscribeToImpl (BC &bc)
 

Detailed Description

template<typename PreFE, typename FE, typename ASF>
class Ikarus::AssumedStress< PreFE, FE, ASF >

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

Template Parameters
PreFEType of the pre finite element.
FEType of the finite element.
ASTThe as stress function.

Member Typedef Documentation

◆ AssumedStressFunction

template<typename PreFE , typename FE , typename ASF >
using Ikarus::AssumedStress< PreFE, FE, ASF >::AssumedStressFunction = ASF

◆ Geometry

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

◆ GridView

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

◆ LocalView

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

◆ MaterialMatrix

template<typename PreFE , typename FE , typename ASF >
using Ikarus::AssumedStress< PreFE, FE, ASF >::MaterialMatrix = Eigen::Matrix<double, strainDim, strainDim>

◆ Pre

template<typename PreFE , typename FE , typename ASF >
using Ikarus::AssumedStress< PreFE, FE, ASF >::Pre = AssumedStressPre<ASF>

◆ Requirement

template<typename PreFE , typename FE , typename ASF >
using Ikarus::AssumedStress< PreFE, FE, ASF >::Requirement = FERequirements<FESolutions::displacement, FEParameter::loadfactor>

◆ RTWrapperType

template<typename PreFE , typename FE , typename ASF >
template<template< typename, int, int > class RT>
using Ikarus::AssumedStress< PreFE, FE, ASF >::RTWrapperType = ResultWrapper<RT<typename Traits::ctype, Traits::mydim, Traits::worlddim>, ResultShape::Vector>

◆ StrainVector

template<typename PreFE , typename FE , typename ASF >
using Ikarus::AssumedStress< PreFE, FE, ASF >::StrainVector = Eigen::Vector<double, strainDim>

◆ Traits

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

◆ VectorXOptRef

template<typename PreFE , typename FE , typename ASF >
template<typename ST >
using Ikarus::AssumedStress< PreFE, FE, ASF >::VectorXOptRef = std::optional<std::reference_wrapper<const Eigen::VectorX<ST> >>

Constructor & Destructor Documentation

◆ AssumedStress()

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

Member Function Documentation

◆ asApplicabilityCheck()

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

◆ asVariant()

template<typename PreFE , typename FE , typename ASF >
const auto & Ikarus::AssumedStress< PreFE, FE, ASF >::asVariant ( ) const
inline
Returns
Const reference to the AssumedStress variant.

◆ bindImpl()

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

◆ calculateAtImpl()

template<typename PreFE , typename FE , typename ASF >
template<template< typename, int, int > class RT>
requires (AssumedStress::template supportsResultType<RT>())
auto Ikarus::AssumedStress< PreFE, FE, ASF >::calculateAtImpl ( const Requirement 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, incorporates the AssumedStress 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 , typename ASF >
template<typename ScalarType >
void Ikarus::AssumedStress< PreFE, FE, ASF >::calculateMatrixImpl ( const Requirement par,
const MatrixAffordance affordance,
typename Traits::template MatrixType<>  K,
const VectorXOptRef< ScalarType > &  dx = std::nullopt 
) const
inlineprotected

◆ calculateScalarImpl()

template<typename PreFE , typename FE , typename ASF >
template<typename ScalarType >
ScalarType Ikarus::AssumedStress< PreFE, FE, ASF >::calculateScalarImpl ( const Requirement par,
ScalarAffordance  affordance,
const VectorXOptRef< ScalarType > &  dx = std::nullopt 
) const
inlineprotected

◆ calculateVectorImpl()

template<typename PreFE , typename FE , typename ASF >
template<typename ScalarType >
void Ikarus::AssumedStress< PreFE, FE, ASF >::calculateVectorImpl ( const Requirement par,
VectorAffordance  affordance,
typename Traits::template VectorType< ScalarType >  force,
const VectorXOptRef< ScalarType > &  dx = std::nullopt 
) const
inlineprotected

◆ internalVariable()

template<typename PreFE , typename FE , typename ASF >
const auto & Ikarus::AssumedStress< PreFE, FE, ASF >::internalVariable ( ) const
inline
Returns
Internal state variable (beta).

◆ numberOfInternalVariables()

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

◆ setAssumedStressType()

template<typename PreFE , typename FE , typename ASF >
void Ikarus::AssumedStress< PreFE, FE, ASF >::setAssumedStressType ( int  numberOfInternalVariables)
inline
Parameters
numberOfInternalVariablesThe number of AssumedStress parameters

◆ subscribeToImpl()

template<typename PreFE , typename FE , typename ASF >
template<typename MT , typename BC >
void Ikarus::AssumedStress< PreFE, FE, ASF >::subscribeToImpl ( BC &  bc)
inlineprotected

◆ updateStateImpl()

template<typename PreFE , typename FE , typename ASF >
void Ikarus::AssumedStress< PreFE, FE, ASF >::updateStateImpl ( const Requirement par,
const std::remove_reference_t< typename Traits::template VectorType<> > &  correction 
)
inlineprotected
Parameters
parThe Requirement object.
correctionThe correction in displacement (DeltaD) vector passed based on which the internal state variable beta is to be updated.
Here is the caller graph for this function:

Member Data Documentation

◆ myDim

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

◆ strainDim

template<typename PreFE , typename FE , typename ASF >
constexpr int Ikarus::AssumedStress< PreFE, FE, ASF >::strainDim = myDim * (myDim + 1) / 2
staticconstexpr

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