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 : #include "ComputeStrainIncrementBasedStress.h" 11 : 12 : registerMooseObject("SolidMechanicsApp", ComputeStrainIncrementBasedStress); 13 : 14 : InputParameters 15 264 : ComputeStrainIncrementBasedStress::validParams() 16 : { 17 264 : InputParameters params = ComputeStressBase::validParams(); 18 264 : params.addClassDescription("Compute stress after subtracting inelastic strain increments"); 19 528 : params.addParam<std::vector<MaterialPropertyName>>( 20 : "inelastic_strain_names", {}, "Names of inelastic strain properties"); 21 : 22 264 : return params; 23 0 : } 24 : 25 198 : ComputeStrainIncrementBasedStress::ComputeStrainIncrementBasedStress( 26 198 : const InputParameters & parameters) 27 : : ComputeStressBase(parameters), 28 198 : _elasticity_tensor_name(_base_name + "elasticity_tensor"), 29 198 : _elasticity_tensor(getMaterialPropertyByName<RankFourTensor>(_elasticity_tensor_name)), 30 396 : _stress_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "stress")), 31 198 : _mechanical_strain_old( 32 198 : getMaterialPropertyOldByName<RankTwoTensor>(_base_name + "mechanical_strain")), 33 792 : _inelastic_strain_names(getParam<std::vector<MaterialPropertyName>>("inelastic_strain_names")) 34 : { 35 198 : _num_inelastic_strain_models = _inelastic_strain_names.size(); 36 : 37 198 : if (_num_inelastic_strain_models > 0) 38 : { 39 0 : _inelastic_strains.resize(_num_inelastic_strain_models); 40 0 : _inelastic_strains_old.resize(_num_inelastic_strain_models); 41 : 42 0 : for (unsigned int i = 0; i < _num_inelastic_strain_models; ++i) 43 : { 44 0 : _inelastic_strains[i] = &getMaterialProperty<RankTwoTensor>(_inelastic_strain_names[i]); 45 0 : _inelastic_strains_old[i] = 46 0 : &getMaterialPropertyOld<RankTwoTensor>(_inelastic_strain_names[i]); 47 : } 48 : } 49 198 : } 50 : 51 : void 52 52752 : ComputeStrainIncrementBasedStress::computeQpStress() 53 : { 54 52752 : RankTwoTensor elastic_strain_increment = (_mechanical_strain[_qp] - _mechanical_strain_old[_qp]); 55 : 56 52752 : for (unsigned int i = 0; i < _num_inelastic_strain_models; ++i) 57 0 : elastic_strain_increment -= (*_inelastic_strains[i])[_qp] - (*_inelastic_strains_old[i])[_qp]; 58 : 59 52752 : _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * elastic_strain_increment; 60 : 61 52752 : computeQpJacobian(); 62 52752 : } 63 : 64 : void 65 52752 : ComputeStrainIncrementBasedStress::computeQpJacobian() 66 : { 67 52752 : _Jacobian_mult[_qp] = _elasticity_tensor[_qp]; 68 52752 : }