1 /*! 2 * \file mfront/src/CyranoStressFreeExpansionHandler.cxx 3 * \brief 4 * \author Thomas Helfer 5 * \brief 04 mars 2014 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 #include<cmath> 15 #include<limits> 16 #include<stdexcept> 17 #include"TFEL/Raise.hxx" 18 #include"TFEL/Math/General/MathConstants.hxx" 19 #include"MFront/Cyrano/CyranoStressFreeExpansionHandler.hxx" 20 21 namespace cyrano { 22 CyranoStandardSmallStrainStressFreeExpansionHandler(CyranoReal * const em,CyranoReal * const dem,const CyranoReal * const e,const CyranoReal * const de,const CyranoReal * const s0,const CyranoReal * const s1)23 void CyranoStandardSmallStrainStressFreeExpansionHandler(CyranoReal *const em, 24 CyranoReal *const dem, 25 const CyranoReal *const e, 26 const CyranoReal *const de, 27 const CyranoReal *const s0, 28 const CyranoReal *const s1) { 29 em[0] = e[0] - s0[0]; 30 em[1] = e[2] - s0[1]; 31 em[2] = e[1] - s0[2]; 32 dem[0] = de[0] - (s1[0] - s0[0]); 33 dem[1] = de[2] - (s1[1] - s0[1]); 34 dem[2] = de[1] - (s1[2] - s0[2]); 35 } // end of CyranoStandardSmallStrainStressFreeExpansionHandler 36 CyranoLogarithmicStrainStressFreeExpansionHandler(CyranoReal * const em,CyranoReal * const dem,const CyranoReal * const e,const CyranoReal * const de,const CyranoReal * const s0,const CyranoReal * const s1)37 void CyranoLogarithmicStrainStressFreeExpansionHandler(CyranoReal *const em, 38 CyranoReal *const dem, 39 const CyranoReal *const e, 40 const CyranoReal *const de, 41 const CyranoReal *const s0, 42 const CyranoReal *const s1) { 43 CyranoReal log_s0[3]; 44 CyranoReal log_s1[3]; 45 log_s0[0] = std::log1p(s0[0]); 46 log_s0[1] = std::log1p(s0[1]); 47 log_s0[2] = std::log1p(s0[2]); 48 log_s1[0] = std::log1p(s1[0]); 49 log_s1[1] = std::log1p(s1[1]); 50 log_s1[2] = std::log1p(s1[2]); 51 em[0] = e[0]-log_s0[0]; 52 em[1] = e[2]-log_s0[1]; 53 em[2] = e[1]-log_s0[2]; 54 dem[0] = de[0]-(log_s1[0]-log_s0[0]); 55 dem[1] = de[2]-(log_s1[1]-log_s0[1]); 56 dem[2] = de[1]-(log_s1[2]-log_s0[2]); 57 } // end of CyranoLogarithmicStrainStressFreeExpansionHandler 58 59 } // end of namespace cyrano 60