www.mooseframework.org
Compute1DFiniteStrain.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 "Compute1DFiniteStrain.h"
11 
12 #include "libmesh/quadrature.h"
13 
16 {
18  params.addClassDescription("Compute strain increment for finite strain in 1D problem");
19 
20  return params;
21 }
22 
24  : ComputeFiniteStrain(parameters)
25 {
26 }
27 
28 void
30 {
31  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
32  {
33  // Deformation gradient
35  (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
36 
37  // Old Deformation gradient
39  (*_grad_disp_old[0])[_qp], (*_grad_disp_old[1])[_qp], (*_grad_disp_old[2])[_qp]);
40 
41  // Compute the displacement gradient dUy/dy and dUz/dz value for 1D problems
42  A(1, 1) = computeGradDispYY();
43  A(2, 2) = computeGradDispZZ();
44 
45  Fbar(1, 1) = computeGradDispYYOld();
46  Fbar(2, 2) = computeGradDispZZOld();
47 
48  // Gauss point deformation gradient
50  _deformation_gradient[_qp].addIa(1.0);
51 
52  A -= Fbar; // very nearly A = gradU - gradUold, adapted to cylindrical coords
53 
54  Fbar.addIa(1.0); // Fbar = ( I + gradUold)
55 
56  // Incremental deformation gradient _Fhat = I + A Fbar^-1
57  _Fhat[_qp] = A * Fbar.inverse();
58  _Fhat[_qp].addIa(1.0);
59  }
60 
61  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
63 }
static InputParameters validParams()
static InputParameters validParams()
void computeProperties() override
MaterialProperty< RankTwoTensor > & _deformation_gradient
virtual Real computeGradDispZZOld()=0
Computes the old dUz/dz; as a virtual function, this function is overwritten for the specific geometr...
virtual Real computeGradDispZZ()=0
Computes the current dUz/dz; as a virtual function, this function is overwritten for the specific geo...
virtual void computeQpStrain()
static RankTwoTensorTempl initializeFromRows(const libMesh::TypeVector< Real > &row0, const libMesh::TypeVector< Real > &row1, const libMesh::TypeVector< Real > &row2)
ComputeFiniteStrain defines a strain increment and rotation increment, for finite strains...
virtual Real computeGradDispYYOld()=0
Computes the old dUy/dY; as a virtual function, this function is overwritten for the specific geometr...
Compute1DFiniteStrain(const InputParameters &parameters)
std::vector< const VariableGradient * > _grad_disp_old
void addClassDescription(const std::string &doc_string)
virtual Real computeGradDispYY()=0
Computes the current dUy/dY; as a virtual function, this function is overwritten for the specific geo...
std::vector< RankTwoTensor > _Fhat
Incremental deformation gradient.
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.