1 /*! 2 * \file include/TFEL/Material/ChuNeedleman1980StrainBasedNucleationModel.hxx 3 * \brief 4 * \author Thomas Helfer 5 * \date 04/04/2020 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_TFEL_MATERIAL_CHUNEEDLEMAN1980STRAINBASEDNUCLEATIONMODEL_HXX 15 #define LIB_TFEL_MATERIAL_CHUNEEDLEMAN1980STRAINBASEDNUCLEATIONMODEL_HXX 16 17 #include <tuple> 18 #include <ostream> 19 20 namespace tfel { 21 22 namespace material { 23 24 /*! 25 * \brief parameters of the strain version of the nucleation model 26 * proposed by Chu and Needleman. 27 * 28 * Chu, C. C., and A. Needleman. 1980. 29 * “Void Nucleation Effects in Biaxially Stretched Sheets.” 30 * Journal of Engineering Materials and Technology 102 (3): 249–56 31 * 32 * \tparam real: numeric type 33 */ 34 template <typename real> 35 struct ChuNeedleman1980StrainBasedNucleationModelParameters { 36 //! \brief factor in front of the gaussian distribution 37 real fn; 38 //! \brief mean value of the gaussian distribution 39 real en; 40 //! \brief standard deviation of the gaussian distribution 41 real sn; 42 }; // end of struct ChuNeedleman1980StrainBasedNucleationModelParameters 43 44 /*! 45 * \brief stream operator 46 * \return the output stream 47 * \param[in] os: output stream 48 * \param[in] p: parameters 49 */ 50 template <typename real> 51 std::ostream& operator<<( 52 std::ostream&, 53 const ChuNeedleman1980StrainBasedNucleationModelParameters<real>&); 54 55 /*! 56 * \brief computes the porosity rate factor \f$A_{n}\f$ as defined by 57 * the nucleation model of Chu and Needleman. 58 * 59 * \f[ 60 * A_{n} = \frac{f_N}{s_N \sqrt{2\pi}} 61 * \exp\left(-\frac{1}{2} 62 * \left(\frac{p - \epsilon_N}{s_N}\right)^2\right) 63 * \f] 64 * 65 * Chu, C. C., and A. Needleman. 1980. 66 * “Void Nucleation Effects in Biaxially Stretched Sheets.” 67 * Journal of Engineering Materials and Technology 102 (3): 249–56 68 * 69 * \tparam real: numeric type 70 * 71 * \param[in] params: parameters 72 * \param[in] p: equivalent plastic strain 73 */ 74 template <typename real> 75 real computeChuNeedleman1980StrainBasedNucleationModelPorosityRateFactor( 76 const ChuNeedleman1980StrainBasedNucleationModelParameters<real>&, 77 const real); 78 79 /*! 80 * \brief computes the porosity rate factor \f$A_{n}\f$ as defined by 81 * the nucleation model of Chu and Needleman and its derivative 82 * \f$\frac{\partial A_{n}}{\partial p}\f$ with respect to the 83 * equivalent plastic strain \f$p\f$. 84 * 85 * \f[ 86 * A_{n} = \frac{f_N}{s_N \sqrt{2\pi}} 87 * \exp\left(-\frac{1}{2} 88 * \left(\frac{p - \epsilon_N}{s_N}\right)^2\right) 89 * \f] 90 * 91 * Chu, C. C., and A. Needleman. 1980. 92 * “Void Nucleation Effects in Biaxially Stretched Sheets.” 93 * Journal of Engineering Materials and Technology 102 (3): 249–56 94 * 95 * \tparam real: numeric type 96 * 97 * \param[in] params: parameters 98 * \param[in] p: equivalent plastic strain 99 */ 100 template <typename real> 101 std::tuple<real, real> 102 computeChuNeedleman1980StrainBasedNucleationModelPorosityRateFactorAndDerivative( 103 const ChuNeedleman1980StrainBasedNucleationModelParameters<real>&, 104 const real); 105 106 /*! 107 * \brief computes the porosity increment \f$A_{n}\f$ as defined by 108 * the nucleation model of Chu and Needleman. 109 * 110 * Chu, C. C., and A. Needleman. 1980. 111 * “Void Nucleation Effects in Biaxially Stretched Sheets.” 112 * Journal of Engineering Materials and Technology 102 (3): 249–56 113 * 114 * \tparam real: numeric type 115 * 116 * \param[in] params: parameters 117 * \param[in] p: equivalent plastic strain 118 */ 119 template <typename real> 120 real computeChuNeedleman1980StrainBasedNucleationModelPorosityIncrement( 121 const ChuNeedleman1980StrainBasedNucleationModelParameters<real>&, 122 const real); 123 124 /*! 125 * \brief computes the porosity increment defined by 126 * the nucleation model of Chu and Needleman and its derivative 127 * with respect to the increment of the equivalent plastic strain \f$p\f$. 128 * 129 * Chu, C. C., and A. Needleman. 1980. 130 * “Void Nucleation Effects in Biaxially Stretched Sheets.” 131 * Journal of Engineering Materials and Technology 102 (3): 249–56 132 * 133 * \tparam real: numeric type 134 * 135 * \param[in] params: parameters 136 * \param[in] p: equivalent plastic strain 137 */ 138 template <typename real> 139 std::tuple<real, real> 140 computeChuNeedleman1980StrainBasedNucleationModelPorosityIncrementAndDerivative( 141 const ChuNeedleman1980StrainBasedNucleationModelParameters<real>&, 142 const real); 143 144 } // end of namespace material 145 146 } // end of namespace tfel 147 148 #include "TFEL/Material/ChuNeedleman1980StrainBasedNucleationModel.ixx" 149 150 #endif /* LIB_TFEL_MATERIAL_CHUNEEDLEMAN1980STRAINBASEDNUCLEATIONMODEL_HXX */ 151