Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #pragma once 11 : 12 : #include "RadialReturnStressUpdate.h" 13 : 14 : /** 15 : * This class provides baseline functionallity for creep models based on the stress update material 16 : * in a radial return isotropic creep calculations. 17 : */ 18 : template <bool is_ad> 19 : class RadialReturnCreepStressUpdateBaseTempl : public RadialReturnStressUpdateTempl<is_ad> 20 : { 21 : public: 22 : static InputParameters validParams(); 23 : 24 : RadialReturnCreepStressUpdateBaseTempl(const InputParameters & parameters); 25 : 26 : using Material::_qp; 27 : using RadialReturnStressUpdateTempl<is_ad>::propagateQpStatefulPropertiesRadialReturn; 28 : using SingleVariableReturnMappingSolutionTempl<is_ad>::computeDerivative; 29 : 30 : protected: 31 : virtual void initQpStatefulProperties() override; 32 : virtual void propagateQpStatefulProperties() override; 33 : virtual void 34 : computeStressFinalize(const GenericRankTwoTensor<is_ad> & plastic_strain_increment) override; 35 : 36 : /** 37 : * This method returns the derivative of the creep strain with respect to the von mises stress. It 38 : * assumes the stress delta (von mises stress used to determine the creep rate) is calculated as: 39 : * effective_trial_stress - _three_shear_modulus * scalar 40 : */ 41 : virtual Real computeStressDerivative(const Real effective_trial_stress, 42 : const Real scalar) override; 43 : 44 : /* 45 : * Method that determines the tangent calculation method. For creep only models, the tangent 46 : * calculation method is always PARTIAL 47 : */ 48 510492 : virtual TangentCalculationMethod getTangentCalculationMethod() override 49 : { 50 510492 : return TangentCalculationMethod::PARTIAL; 51 : } 52 : 53 : /// Creep strain material property 54 : GenericMaterialProperty<RankTwoTensor, is_ad> & _creep_strain; 55 : const MaterialProperty<RankTwoTensor> & _creep_strain_old; 56 : }; 57 : 58 : typedef RadialReturnCreepStressUpdateBaseTempl<false> RadialReturnCreepStressUpdateBase; 59 : typedef RadialReturnCreepStressUpdateBaseTempl<true> ADRadialReturnCreepStressUpdateBase;