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 "ADCompute1DFiniteStrain.h" 11 : 12 : #include "libmesh/quadrature.h" 13 : 14 : InputParameters 15 0 : ADCompute1DFiniteStrain::validParams() 16 : { 17 0 : InputParameters params = ADComputeFiniteStrain::validParams(); 18 0 : params.addClassDescription("Compute strain increment for finite strain in 1D problem"); 19 0 : return params; 20 0 : } 21 : 22 0 : ADCompute1DFiniteStrain::ADCompute1DFiniteStrain(const InputParameters & parameters) 23 0 : : ADComputeFiniteStrain(parameters) 24 : { 25 0 : } 26 : 27 : void 28 0 : ADCompute1DFiniteStrain::computeProperties() 29 : { 30 0 : for (_qp = 0; _qp < _qrule->n_points(); ++_qp) 31 : { 32 : // Deformation gradient 33 : auto A = ADRankTwoTensor::initializeFromRows( 34 0 : (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]); 35 : 36 : // Old Deformation gradient 37 : auto Fbar = RankTwoTensor ::initializeFromRows( 38 0 : (*_grad_disp_old[0])[_qp], (*_grad_disp_old[1])[_qp], (*_grad_disp_old[2])[_qp]); 39 : 40 : // Compute the displacement gradient dUy/dy and dUz/dz value for 1D problems 41 0 : A(1, 1) = computeGradDispYY(); 42 0 : A(2, 2) = computeGradDispZZ(); 43 : 44 0 : Fbar(1, 1) = computeGradDispYYOld(); 45 0 : Fbar(2, 2) = computeGradDispZZOld(); 46 : 47 0 : A -= Fbar; // very nearly A = gradU - gradUold, adapted to cylindrical coords 48 : 49 0 : Fbar.addIa(1.0); // Fbar = ( I + gradUold) 50 : 51 : // Incremental deformation gradient _Fhat = I + A Fbar^-1 52 0 : _Fhat[_qp] = A * Fbar.inverse(); 53 0 : _Fhat[_qp].addIa(1.0); 54 : } 55 : 56 0 : for (_qp = 0; _qp < _qrule->n_points(); ++_qp) 57 0 : computeQpStrain(); 58 0 : }