https://mooseframework.inl.gov
ComputeLagrangianStressCauchy.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 
14 {
16 
17  params.addClassDescription("Stress update based on the Cauchy stress");
18 
19  return params;
20 }
21 
23  : ComputeLagrangianStressBase(parameters),
24  _inv_df(getMaterialPropertyByName<RankTwoTensor>(_base_name +
25  "inverse_incremental_deformation_gradient")),
26  _inv_def_grad(
27  getMaterialPropertyByName<RankTwoTensor>(_base_name + "inverse_deformation_gradient")),
28  _F(getMaterialPropertyByName<RankTwoTensor>(_base_name + "deformation_gradient"))
29 {
30 }
31 
32 void
34 {
36  computeQpPK1Stress(); // This could be "switched"
37 }
38 
39 void
41 {
42  // Actually do the (annoying) wrapping
44  {
45  _pk1_stress[_qp] = _F[_qp].det() * _cauchy_stress[_qp] * _inv_def_grad[_qp].transpose();
46 
47  usingTensorIndices(i_, j_, k_, l_);
48  _pk1_jacobian[_qp] = _pk1_stress[_qp].outerProduct(_inv_def_grad[_qp].transpose());
49  _pk1_jacobian[_qp] -= _pk1_stress[_qp].times<i_, l_, j_, k_>(_inv_def_grad[_qp]);
50  _pk1_jacobian[_qp] +=
51  _F[_qp].det() * _cauchy_jacobian[_qp].tripleProductJkl(
52  _inv_def_grad[_qp], _inv_df[_qp].transpose(), _inv_def_grad[_qp]);
53  }
54  else
55  {
58  }
59 }
const MaterialProperty< RankTwoTensor > & _inv_def_grad
Inverse deformation gradient.
virtual void computeQpPK1Stress()
Wrap the Cauchy stress to get the PK stress.
MaterialProperty< RankTwoTensor > & _pk1_stress
The 1st Piola-Kirchhoff stress.
const bool _large_kinematics
If true use large deformations.
unsigned int _qp
MaterialProperty< RankFourTensor > & _pk1_jacobian
The derivative of the 1st PK stress wrt the deformation gradient.
ComputeLagrangianStressCauchy(const InputParameters &parameters)
MaterialProperty< RankTwoTensor > & _cauchy_stress
The Cauchy stress.
Provide stresses in the form required for the Lagrangian kernels.
virtual void computeQpCauchyStress()=0
Provide for the actual Cauchy stress update (just cauchy)
const MaterialProperty< RankTwoTensor > & _inv_df
Inverse incremental deformation gradient.
static InputParameters validParams()
void addClassDescription(const std::string &doc_string)
const MaterialProperty< RankTwoTensor > & _F
Deformation gradient.
MaterialProperty< RankFourTensor > & _cauchy_jacobian
The derivative of the Cauchy stress wrt the increment in the spatial velocity gradient.
virtual void computeQpStressUpdate() override
Calculate the stress update to provide both measures (cauchy and pk)