https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
32void
34{
36
37 // Enforce isotropic elastic tensor
39 mooseError("ComputeStVenantKirchhoffStress requires an isotropic elasticity "
40 "tensor");
41}
42
43void
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}
registerMooseObject("SolidMechanicsApp", ComputeStVenantKirchhoffStress)
virtual void initialSetup() override
Derive _large_kinematics from the strain calculator's LARGE_KINEMATICS guarantee.
bool _large_kinematics
If true use large deformations.
const MaterialProperty< RankTwoTensor > & _F
F-bar-stabilized deformation gradient (= the strain calc's published _F).
Native interface for providing the 2nd Piola Kirchhoff stress.
static InputParameters validParams()
MaterialProperty< RankTwoTensor > & _S
2nd PK stress
MaterialProperty< RankTwoTensor > & _E
Green-Lagrange strain.
MaterialProperty< RankFourTensor > & _C
2nd PK tangent (dS/dF)
ComputeStVenantKirchhoffStress(const InputParameters &parameters)
const MaterialPropertyName _elasticity_tensor_name
const MaterialProperty< RankFourTensor > & _elasticity_tensor
virtual void initialSetup() override
Setup function, used to check on isotropy.
virtual void computeQpPK2Stress() override
Actual stress/Jacobian update.
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
unsigned int _qp
void mooseError(Args &&... args) const
static RankTwoTensorTempl Identity()