www.mooseframework.org
ComputeFiniteStrainElasticStress.C
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
8 
9 template <>
10 InputParameters
12 {
13  InputParameters params = validParams<ComputeStressBase>();
14  params.addClassDescription("Compute stress using elasticity for finite strains");
15  return params;
16 }
17 
19  const InputParameters & parameters)
20  : ComputeStressBase(parameters),
21  GuaranteeConsumer(this),
22  _strain_increment(getMaterialPropertyByName<RankTwoTensor>(_base_name + "strain_increment")),
23  _rotation_increment(
24  getMaterialPropertyByName<RankTwoTensor>(_base_name + "rotation_increment")),
25  _stress_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "stress")),
26  _elastic_strain_old(getMaterialPropertyOldByName<RankTwoTensor>(_base_name + "elastic_strain"))
27 {
28 }
29 
30 void
32 {
34  mooseError("ComputeFiniteStrainElasticStress can only be used with elasticity tensor materials "
35  "that guarantee isotropic tensors.");
36 }
37 
38 void
40 {
42 }
43 
44 void
46 {
47  // Calculate the stress in the intermediate configuration
48  RankTwoTensor intermediate_stress;
49 
50  intermediate_stress =
52 
53  // Rotate the stress state to the current configuration
54  _stress[_qp] =
55  _rotation_increment[_qp] * intermediate_stress * _rotation_increment[_qp].transpose();
56 
57  // InitialStress Deprecation: remove the following 2 lines
60 
61  // Assign value for elastic strain, which is equal to the mechanical strain
63 
64  // Compute dstress_dstrain
65  _Jacobian_mult[_qp] = _elasticity_tensor[_qp]; // This is NOT the exact jacobian
66 }
67 
68 void
70 {
72  (*_initial_stress)[_qp] = _rotation_increment[_qp] * (*_initial_stress_old)[_qp] *
73  _rotation_increment[_qp].transpose();
74 }
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
const std::string _elasticity_tensor_name
const MaterialProperty< RankTwoTensor > & _rotation_increment
ComputeStressBase is the base class for stress tensors.
const MaterialProperty< RankTwoTensor > & _strain_increment
MaterialProperty< RankTwoTensor > & _stress
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...
const MaterialProperty< RankTwoTensor > & _mechanical_strain
ComputeFiniteStrainElasticStress(const InputParameters &parameters)
void addQpInitialStress()
InitialStress Deprecation: remove this method.
InputParameters validParams< ComputeStressBase >()
const bool _initial_stress_provided
Whether initial stress was provided. InitialStress Deprecation: remove this.
virtual void initQpStatefulProperties() override
const MaterialProperty< RankFourTensor > & _elasticity_tensor
MaterialProperty< RankTwoTensor > & _elastic_strain
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)
Add-on class that provides the functionality to check if guarantees for material properties are provi...
virtual void rotateQpInitialStress()
InitialStress Deprecation: remove this method.
InputParameters validParams< ComputeFiniteStrainElasticStress >()