From e578fa7b70dab9d3a96560fc04b519adc1c590e1 Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Wed, 11 Nov 2020 13:37:18 +0100 Subject: [PATCH] [ConstitutiveLaw] added a member to get equivalent plastic strain increment --- MaterialLib/SolidModels/Ehlers.cpp | 5 +++++ MaterialLib/SolidModels/Ehlers.h | 5 +++++ MaterialLib/SolidModels/MechanicsBase.h | 1 + 3 files changed, 11 insertions(+) diff --git a/MaterialLib/SolidModels/Ehlers.cpp b/MaterialLib/SolidModels/Ehlers.cpp index 22beb5e4f31..6441dfe1504 100644 --- a/MaterialLib/SolidModels/Ehlers.cpp +++ b/MaterialLib/SolidModels/Ehlers.cpp @@ -46,6 +46,11 @@ namespace Solids { namespace Ehlers { +template <int DisplacementDim> +double StateVariables<DisplacementDim>::getEquivalentPlasticStrain() const +{ + return std::sqrt(2.0 / 3.0 * Invariants::FrobeniusNorm(eps_p.D.eval())); +} /// Special product of \c v with itself: \f$v \odot v\f$. /// The tensor \c v is given in Kelvin mapping. diff --git a/MaterialLib/SolidModels/Ehlers.h b/MaterialLib/SolidModels/Ehlers.h index cba3c48143e..8cbc59da90f 100644 --- a/MaterialLib/SolidModels/Ehlers.h +++ b/MaterialLib/SolidModels/Ehlers.h @@ -232,6 +232,11 @@ struct StateVariables damage_prev = damage; } + double getEquivalentPlasticStrain() const override; + + static int const KelvinVectorSize = + MathLib::KelvinVector::KelvinVectorDimensions<DisplacementDim>::value; + using Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize>; using KelvinVector = MathLib::KelvinVector::KelvinVectorType<DisplacementDim>; diff --git a/MaterialLib/SolidModels/MechanicsBase.h b/MaterialLib/SolidModels/MechanicsBase.h index 52d66f4840f..936a372be4b 100644 --- a/MaterialLib/SolidModels/MechanicsBase.h +++ b/MaterialLib/SolidModels/MechanicsBase.h @@ -59,6 +59,7 @@ struct MechanicsBase { virtual ~MaterialStateVariables() = default; virtual void pushBackState(){}; + virtual double getEquivalentPlasticStrain() const { return 0.0; } }; /// Polymorphic creator for MaterialStateVariables objects specific for a -- GitLab