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 "ADComputeIncrementalStrainBase.h" 11 : #include "MooseMesh.h" 12 : #include "RankTwoTensor.h" 13 : #include "RankFourTensor.h" 14 : #include "SymmetricRankTwoTensor.h" 15 : #include "SymmetricRankFourTensor.h" 16 : 17 : template <typename R2> 18 : InputParameters 19 0 : ADComputeIncrementalStrainBaseTempl<R2>::validParams() 20 : { 21 3912 : InputParameters params = ADComputeStrainBase::validParams(); 22 0 : return params; 23 : } 24 : 25 : template <typename R2> 26 2934 : ADComputeIncrementalStrainBaseTempl<R2>::ADComputeIncrementalStrainBaseTempl( 27 : const InputParameters & parameters) 28 : : ADComputeStrainBaseTempl<R2>(parameters), 29 5868 : _grad_disp_old(3), 30 2934 : _strain_rate(this->template declareADProperty<R2>(_base_name + "strain_rate")), 31 2934 : _strain_increment(this->template declareADProperty<R2>(_base_name + "strain_increment")), 32 2934 : _rotation_increment( 33 2934 : this->template declareADProperty<RankTwoTensor>(_base_name + "rotation_increment")), 34 2934 : _mechanical_strain_old( 35 2934 : this->template getMaterialPropertyOld<R2>(_base_name + "mechanical_strain")), 36 5868 : _total_strain_old(this->template getMaterialPropertyOld<R2>(_base_name + "total_strain")), 37 5868 : _eigenstrains_old(_eigenstrain_names.size()) 38 : { 39 3150 : for (unsigned int i = 0; i < _eigenstrains_old.size(); ++i) 40 216 : _eigenstrains_old[i] = &this->template getMaterialPropertyOld<R2>(_eigenstrain_names[i]); 41 2934 : } 42 : 43 : template <typename R2> 44 : void 45 2610 : ADComputeIncrementalStrainBaseTempl<R2>::initialSetup() 46 : { 47 2610 : ADComputeStrainBaseTempl<R2>::initialSetup(); 48 10440 : for (unsigned int i = 0; i < 3; ++i) 49 : { 50 7830 : if (this->_fe_problem.isTransient() && i < _ndisp) 51 6390 : _grad_disp_old[i] = &this->coupledGradientOld("displacements", i); 52 : else 53 1440 : _grad_disp_old[i] = &_grad_zero; 54 : } 55 2610 : } 56 : 57 : template <typename R2> 58 : void 59 157568 : ADComputeIncrementalStrainBaseTempl<R2>::initQpStatefulProperties() 60 : { 61 157568 : _mechanical_strain[_qp].zero(); 62 157568 : _total_strain[_qp].zero(); 63 157568 : } 64 : 65 : template <typename R2> 66 : void 67 17258898 : ADComputeIncrementalStrainBaseTempl<R2>::subtractEigenstrainIncrementFromStrain(ADR2 & strain) 68 : { 69 17541458 : for (unsigned int i = 0; i < _eigenstrains.size(); ++i) 70 : { 71 282560 : strain -= (*_eigenstrains[i])[_qp]; 72 282560 : strain += (*_eigenstrains_old[i])[_qp]; 73 : } 74 17258898 : } 75 : 76 : template class ADComputeIncrementalStrainBaseTempl<RankTwoTensor>; 77 : template class ADComputeIncrementalStrainBaseTempl<SymmetricRankTwoTensor>;