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  GuaranteeConsumer(this),
28  _elasticity_tensor_name(getParam<MaterialPropertyName>("elasticity_tensor")),
29  _elasticity_tensor(getMaterialProperty<RankFourTensor>(_elasticity_tensor_name))
30 {
31 }
32 
33 void
35 {
36  // Enforce isotropic elastic tensor
38  mooseError("ComputeStVenantKirchhoffStress requires an isotropic elasticity "
39  "tensor");
40 }
41 
42 void
44 {
45  // Hyperelasticity is weird, we need to branch on the type of update if we
46  // want a truly linear model
47  //
48  // This is because we need to drop quadratic terms for the linear update to
49  // use a linear strain measure
50 
51  // Jacobian is the same for both the small and Green-Lagrange strains
53 
54  // Get the right strain
55  RankTwoTensor strain;
56  if (_large_kinematics) // Large deformations = Green-Lagrange strain
57  strain = _E[_qp];
58  else // Small deformations = linear strain
59  strain = 0.5 * (_F[_qp] + _F[_qp].transpose()) - RankTwoTensor::Identity();
60 
61  // The stress update is linear with the correct strains/frame
62  _S[_qp] = _C[_qp] * strain;
63 }
const MaterialProperty< RankTwoTensor > & _F
Deformation gradient.
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static InputParameters validParams()
Native interface for providing the 2nd Piola Kirchhoff stress.
static RankTwoTensorTempl Identity()
const bool _large_kinematics
If true use large deformations.
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)
Add-on class that provides the functionality to check if guarantees for material properties are provi...
registerMooseObject("SolidMechanicsApp", ComputeStVenantKirchhoffStress)
virtual void initialSetup() override
Setup function, used to check on isotropy.