1 /*! 2 * \file mfront/src/ImplicitFiniteStrainDSL.cxx 3 * \brief 4 * \author Thomas Helfer 5 * \brief 18 févr. 2013 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"MFront/ImplicitFiniteStrainDSL.hxx" 15 16 namespace mfront{ 17 ImplicitFiniteStrainDSL()18 ImplicitFiniteStrainDSL::ImplicitFiniteStrainDSL() { 19 this->mb.setDSLName("ImplicitFiniteStrain"); 20 this->mb.declareAsAFiniteStrainStandardBehaviour(false); 21 this->registerNewCallBack( 22 "@ComputeStress", 23 &ImplicitFiniteStrainDSL::treatComputeThermodynamicForces); 24 this->registerNewCallBack( 25 "@ComputeFinalStress", 26 &ImplicitFiniteStrainDSL::treatComputeFinalThermodynamicForces); 27 } // end of ImplicitFiniteStrainDSL::ImplicitFiniteStrainDSL 28 getName()29 std::string ImplicitFiniteStrainDSL::getName() { 30 return "ImplicitFiniteStrain"; 31 } // end of ImplicitFiniteStrainDSL::getName 32 getDescription()33 std::string ImplicitFiniteStrainDSL::getDescription() { 34 return "this parser provides a generic integrator based on a theta method."; 35 } // end of ImplicitFiniteStrainDSL::getDescription 36 getCodeBlockTemplate(const std::string & c,const MFrontTemplateGenerationOptions & o) const37 std::string ImplicitFiniteStrainDSL::getCodeBlockTemplate( 38 const std::string& c, const MFrontTemplateGenerationOptions& o) const { 39 if (c == BehaviourData::ComputeThermodynamicForces) { 40 return "@ComputeStress{}\n"; 41 } 42 return ImplicitDSLBase::getCodeBlockTemplate(c, o); 43 } // end of ImplicitFiniteStrainDSL::getCodeBlockTemplate 44 getBehaviourDSLDescription() const45 BehaviourDSLDescription ImplicitFiniteStrainDSL::getBehaviourDSLDescription() const { 46 auto d = mfront::getDefaultFiniteStrainBehaviourDSLDescription(); 47 d.integrationScheme = IntegrationScheme::IMPLICITSCHEME; 48 d.typicalCodeBlocks = {BehaviourData::ComputePredictionOperator, 49 BehaviourData::ComputePredictor, 50 BehaviourData::ComputeThermodynamicForces, 51 BehaviourData::Integrator, 52 BehaviourData::ComputeTangentOperator}; 53 d.minimalMFrontFileBody = "@Integrator{}\n\n"; 54 return d; 55 } // end of ImplicitFiniteStrainDSL::getBehaviourDSLDescription 56 57 ImplicitFiniteStrainDSL::~ImplicitFiniteStrainDSL() noexcept = default; 58 59 } // end of namespace mfront 60