https://mooseframework.inl.gov
ComputeLagrangianStressPK2.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  return params;
17 }
18 
20  : ComputeLagrangianStressPK1(parameters),
21  _E(declareProperty<RankTwoTensor>(_base_name + "green_lagrange_strain")),
22  _S(declareProperty<RankTwoTensor>(_base_name + "pk2_stress")),
23  _C(declareProperty<RankFourTensor>(_base_name + "pk2_jacobian"))
24 {
25 }
26 
27 void
29 {
30  // Calculate the green-lagrange strain for the benefit of the subclasses
31  _E[_qp] = 0.5 * (_F[_qp].transpose() * _F[_qp] - RankTwoTensor::Identity());
32 
33  // PK2 update
35 
36  // Complicated wrapping, see documentation
38  {
39  _pk1_stress[_qp] = _F[_qp] * _S[_qp];
40  usingTensorIndices(i_, j_, k_, l_);
41  RankFourTensor dE =
42  0.5 * (RankTwoTensor::Identity().times<i_, l_, j_, k_>(_F[_qp].transpose()) +
43  _F[_qp].transpose().times<i_, k_, j_, l_>(RankTwoTensor::Identity()));
44 
45  _pk1_jacobian[_qp] = RankTwoTensor::Identity().times<i_, k_, j_, l_>(_S[_qp].transpose()) +
46  (_C[_qp] * dE).singleProductI(_F[_qp]);
47  }
48  // Small deformations all are equivalent
49  else
50  {
51  _pk1_stress[_qp] = _S[_qp];
52  _pk1_jacobian[_qp] = _C[_qp];
53  }
54 }
const MaterialProperty< RankTwoTensor > & _F
Deformation gradient.
Native interface for providing the 1st Piola Kirchhoff stress.
virtual void computeQpPK2Stress()=0
Provide the PK2 stress and dPK2/dC.
ComputeLagrangianStressPK2(const InputParameters &parameters)
static InputParameters validParams()
virtual void computeQpPK1Stress() override
Wrap PK2 -> PK1.
static InputParameters validParams()
MaterialProperty< RankTwoTensor > & _pk1_stress
The 1st Piola-Kirchhoff stress.
static RankTwoTensorTempl Identity()
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.
MaterialProperty< RankTwoTensor > & _E
Green-Lagrange strain.
MaterialProperty< RankFourTensor > & _C
2nd PK tangent (dS/dF)
RankFourTensorTempl< T > times(const RankTwoTensorTempl< T > &b) const
MaterialProperty< RankTwoTensor > & _S
2nd PK stress