1 /*! 2 * \file include/MFront/BehaviourBrick/SwiftIsotropicHardeningRule.hxx 3 * \brief 4 * \author Thomas Helfer 5 * \date 15/03/2018 6 * \copyright Copyright (C) 2006-2018 CEA/DEN, EDF R&D. All rights 7 * reserved. 8 * This project is publicly released under either the GNU GPL Licence 9 * or the CECILL-A licence. A copy of thoses licences are delivered 10 * with the sources of TFEL. CEA or EDF may also distribute this 11 * project under specific licensing conditions. 12 */ 13 14 #ifndef LIB_MFRONT_BEHAVIOURBRICK_SWIFTISOTROPICHARDENINGRULE_HXX 15 #define LIB_MFRONT_BEHAVIOURBRICK_SWIFTISOTROPICHARDENINGRULE_HXX 16 17 #include "MFront/BehaviourBrick/IsotropicHardeningRule.hxx" 18 19 namespace mfront { 20 21 namespace bbrick { 22 23 /*! 24 * \brief class describing a Swift isotropic hardening rule 25 * \f[ 26 * R\left(p\right)=R_{0}\left(\frac{p+p_{0}}{p_{0}}\right)^{n} 27 * \f] 28 * where: 29 * - \f$R_{0}\f$ is the yield strength 30 * - \f$n\f$ is the exponent 31 * - \f$p_{0}\f$ is a parameter which avoids an infinite derivative of the 32 * previous relation for \(p=0\). 33 */ 34 struct SwiftIsotropicHardeningRule final : IsotropicHardeningRule { 35 void initialize(BehaviourDescription&, 36 AbstractBehaviourDSL&, 37 const std::string&, 38 const std::string&, 39 const DataMap&) override; 40 std::vector<OptionDescription> getOptions() const override; 41 std::string computeElasticPrediction(const std::string&, 42 const std::string&) const override; 43 std::string computeElasticLimit(const std::string&, 44 const std::string&) const override; 45 std::string computeElasticLimitAndDerivative( 46 const std::string&, const std::string&) const override; 47 void endTreatment(BehaviourDescription&, 48 const AbstractBehaviourDSL&, 49 const std::string&, 50 const std::string&) const override; 51 //! destructor 52 ~SwiftIsotropicHardeningRule() override; 53 54 protected: 55 BehaviourDescription::MaterialProperty R0; 56 BehaviourDescription::MaterialProperty p0; 57 BehaviourDescription::MaterialProperty n; 58 }; // end of struct SwiftIsotropicHardeningRule 59 60 } // end of namespace bbrick 61 62 } // end of namespace mfront 63 64 #endif /* LIB_MFRONT_BEHAVIOURBRICK_SWIFTISOTROPICHARDENINGRULE_HXX */ 65