https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ADCompute1DFiniteStrain.C
Go to the documentation of this file.
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
11
12#include "libmesh/quadrature.h"
13
16{
18 params.addClassDescription("Compute strain increment for finite strain in 1D problem");
19 return params;
20}
21
26
27void
29{
30 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
31 {
32 // Deformation gradient
34 (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
35
36 // Old Deformation gradient
37 auto Fbar = RankTwoTensor ::initializeFromRows(
38 (*_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 A(1, 1) = computeGradDispYY();
42 A(2, 2) = computeGradDispZZ();
43
44 Fbar(1, 1) = computeGradDispYYOld();
45 Fbar(2, 2) = computeGradDispZZOld();
46
47 A -= Fbar; // very nearly A = gradU - gradUold, adapted to cylindrical coords
48
49 Fbar.addIa(1.0); // Fbar = ( I + gradUold)
50
51 // Incremental deformation gradient _Fhat = I + A Fbar^-1
52 _Fhat[_qp] = A * Fbar.inverse();
53 _Fhat[_qp].addIa(1.0);
54 }
55
56 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
58}
virtual Real computeGradDispYYOld()=0
Computes the old dUy/dY; as a virtual function, this function is overwritten for the specific geometr...
static InputParameters validParams()
virtual Real computeGradDispZZOld()=0
Computes the old dUz/dz; as a virtual function, this function is overwritten for the specific geometr...
ADCompute1DFiniteStrain(const InputParameters &parameters)
virtual ADReal computeGradDispYY()=0
Computes the current dUy/dY; as a virtual function, this function is overwritten for the specific geo...
virtual ADReal computeGradDispZZ()=0
Computes the current dUz/dz; as a virtual function, this function is overwritten for the specific geo...
ADComputeFiniteStrain defines a strain increment and rotation increment, for finite strains.
static InputParameters validParams()
std::vector< ADRankTwoTensor > _Fhat
std::vector< const VariableGradient * > _grad_disp_old
std::vector< const ADVariableGradient * > _grad_disp
Gradient of displacements.
void addClassDescription(const std::string &doc_string)
unsigned int _qp
const QBase *const & _qrule
static RankTwoTensorTempl initializeFromRows(const libMesh::TypeVector< T > &row0, const libMesh::TypeVector< T > &row1, const libMesh::TypeVector< T > &row2)