www.mooseframework.org
ComputeFiniteStrainElasticStress.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<ComputeStressBase>();
19  params.addClassDescription("Compute stress using elasticity for finite strains");
20  return params;
21 }
22 
24  const InputParameters & parameters)
25  : ComputeStressBase(parameters),
26  GuaranteeConsumer(this),
27  _elasticity_tensor_name(_base_name + "elasticity_tensor"),
28  _elasticity_tensor(getMaterialPropertyByName<RankFourTensor>(_elasticity_tensor_name)),
29  _strain_increment(getMaterialPropertyByName<RankTwoTensor>(_base_name + "strain_increment")),
30  _rotation_increment(
31  getMaterialPropertyByName<RankTwoTensor>(_base_name + "rotation_increment")),
32  _stress_old(getMaterialPropertyOldByName<RankTwoTensor>(_base_name + "stress")),
33  _elastic_strain_old(getMaterialPropertyOldByName<RankTwoTensor>(_base_name + "elastic_strain"))
34 {
35 }
36 
37 void
39 {
41  mooseError("ComputeFiniteStrainElasticStress can only be used with elasticity tensor materials "
42  "that guarantee isotropic tensors.");
43 }
44 
45 void
47 {
48  // Calculate the stress in the intermediate configuration
49  RankTwoTensor intermediate_stress;
50 
51  intermediate_stress =
53 
54  // Rotate the stress state to the current configuration
55  _stress[_qp] =
56  _rotation_increment[_qp] * intermediate_stress * _rotation_increment[_qp].transpose();
57 
58  // Assign value for elastic strain, which is equal to the mechanical strain
60 
61  // Compute dstress_dstrain
62  _Jacobian_mult[_qp] = _elasticity_tensor[_qp]; // This is NOT the exact jacobian
63 }
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
ComputeStressBase is the base class for stress tensors.
registerMooseObject("TensorMechanicsApp", ComputeFiniteStrainElasticStress)
const MaterialProperty< RankTwoTensor > & _strain_increment
Strain increment material property.
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
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
Mechanical strain material property.
ComputeFiniteStrainElasticStress(const InputParameters &parameters)
ComputeFiniteStrainElasticStress computes the stress following elasticity theory for finite strains...
virtual void computeQpStress() override
Compute the stress and store it in the _stress material property for the current quadrature point...
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)
Add-on class that provides the functionality to check if guarantees for material properties are provi...
InputParameters validParams< ComputeStressBase >()
InputParameters validParams< ComputeFiniteStrainElasticStress >()