https://mooseframework.inl.gov
ComputeStVenantKirchhoffStress.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 
13 
16 {
18 
19  params.addParam<MaterialPropertyName>(
20  "elasticity_tensor", "elasticity_tensor", "The name of the elasticity tensor.");
21 
22  return params;
23 }
24 
26  : ComputeLagrangianStressPK2(parameters),
27  _elasticity_tensor_name(getParam<MaterialPropertyName>("elasticity_tensor")),
28  _elasticity_tensor(getMaterialProperty<RankFourTensor>(_elasticity_tensor_name))
29 {
30 }
31 
32 void
34 {
36 
37  // Enforce isotropic elastic tensor
39  mooseError("ComputeStVenantKirchhoffStress requires an isotropic elasticity "
40  "tensor");
41 }
42 
43 void
45 {
46  // Hyperelasticity is weird, we need to branch on the type of update if we
47  // want a truly linear model
48  //
49  // This is because we need to drop quadratic terms for the linear update to
50  // use a linear strain measure
51 
52  // Jacobian is the same for both the small and Green-Lagrange strains
54 
55  // Get the right strain
56  RankTwoTensor strain;
57  if (_large_kinematics) // Large deformations = Green-Lagrange strain
58  strain = _E[_qp];
59  else // Small deformations = linear strain
60  strain = 0.5 * (_F[_qp] + _F[_qp].transpose()) - RankTwoTensor::Identity();
61 
62  // The stress update is linear with the correct strains/frame
63  _S[_qp] = _C[_qp] * strain;
64 }
const MaterialProperty< RankTwoTensor > & _F
F-bar-stabilized deformation gradient (= the strain calc&#39;s published _F).
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static InputParameters validParams()
bool _large_kinematics
If true use large deformations.
Native interface for providing the 2nd Piola Kirchhoff stress.
static RankTwoTensorTempl Identity()
virtual void initialSetup() override
Derive _large_kinematics from the strain calculator&#39;s LARGE_KINEMATICS guarantee. ...
unsigned int _qp
virtual void computeQpPK2Stress() override
Actual stress/Jacobian update.
MaterialProperty< RankTwoTensor > & _E
Green-Lagrange strain.
MaterialProperty< RankFourTensor > & _C
2nd PK tangent (dS/dF)
const MaterialPropertyName _elasticity_tensor_name
ComputeStVenantKirchhoffStress(const InputParameters &parameters)
void mooseError(Args &&... args) const
MaterialProperty< RankTwoTensor > & _S
2nd PK stress
const MaterialProperty< RankFourTensor > & _elasticity_tensor
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)
registerMooseObject("SolidMechanicsApp", ComputeStVenantKirchhoffStress)
virtual void initialSetup() override
Setup function, used to check on isotropy.