Wrapper class for using Assumed Stress with displacement based elements. More...
#include <ikarus/finiteelements/mechanics/assumedstress.hh>
| 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) | 
This class extends a displacement-based element to support Assumed Stress.
| using Ikarus::AssumedStress< PreFE, FE, ASF >::AssumedStressFunction = ASF | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::Geometry = typename Traits::Geometry | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::GridView = typename Traits::GridView | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::LocalView = typename Traits::LocalView | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::MaterialMatrix = Eigen::Matrix<double, strainDim, strainDim> | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::Pre = AssumedStressPre<ASF> | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::Requirement = FERequirements<FESolutions::displacement, FEParameter::loadfactor> | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::RTWrapperType = ResultWrapper<RT<typename Traits::ctype, Traits::mydim, Traits::worlddim>, ResultShape::Vector> | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::StrainVector = Eigen::Vector<double, strainDim> | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::Traits = PreFE::Traits | 
| using Ikarus::AssumedStress< PreFE, FE, ASF >::VectorXOptRef = std::optional<std::reference_wrapper<const Eigen::VectorX<ST> >> | 
| 
 | inlineexplicit | 
| pre | The pre finite element | 
| 
 | inlineprotected | 
| 
 | inline | 
| 
 | inlineprotected | 
| 
 | 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.
| req | The result requirements. | 
| local | The local coordinates at which results are to be calculated. | 
| RT | The type representing the requested result. | 
| 
 | inlineprotected | 
| 
 | inlineprotected | 
| 
 | inlineprotected | 
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| numberOfInternalVariables | The number of AssumedStress parameters | 
| 
 | inlineprotected | 
| 
 | inlineprotected | 
| par | The Requirement object. | 
| correction | The correction in displacement (DeltaD) vector passed based on which the internal state variable beta is to be updated. | 
| 
 | staticconstexpr | 
| 
 | staticconstexpr |