www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
ComputeFiniteStrainElasticStress Class Reference

ComputeFiniteStrainElasticStress computes the stress following elasticity theory for finite strains. More...

#include <ComputeFiniteStrainElasticStress.h>

Inheritance diagram for ComputeFiniteStrainElasticStress:
[legend]

Public Member Functions

 ComputeFiniteStrainElasticStress (const InputParameters &parameters)
 
void initialSetup () override
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void computeQpStress () override
 Compute the stress and store it in the _stress material property for the current quadrature point. More...
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 
bool hasGuaranteedMaterialProperty (const MaterialPropertyName &prop, Guarantee guarantee)
 

Protected Attributes

const std::string _elasticity_tensor_name
 Name of the elasticity tensor material property. More...
 
const MaterialProperty< RankFourTensor > & _elasticity_tensor
 Elasticity tensor material property. More...
 
const MaterialProperty< RankTwoTensor > & _strain_increment
 Strain increment material property. More...
 
const MaterialProperty< RankTwoTensor > & _rotation_increment
 Rotation increment material property. More...
 
const MaterialProperty< RankTwoTensor > & _stress_old
 Old state of the stress tensor material property. More...
 
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
 The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors. More...
 
const std::string _base_name
 Base name prepended to all material property names to allow for multi-material systems. More...
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 Mechanical strain material property. More...
 
MaterialProperty< RankTwoTensor > & _stress
 Stress material property. More...
 
MaterialProperty< RankTwoTensor > & _elastic_strain
 Elastic strain material property. More...
 
const MaterialProperty< RankTwoTensor > & _extra_stress
 Extra stress tensor. More...
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components More...
 
MaterialProperty< RankFourTensor > & _Jacobian_mult
 derivative of stress w.r.t. strain (_dstress_dstrain) More...
 

Private Attributes

const InputParameters & _gc_params
 Parameters of the object with this interface. More...
 
FEProblemBase *const _gc_feproblem
 Reference to the FEProblemBase class. More...
 
BlockRestrictable *const _gc_block_restrict
 Access block restrictions of the object with this interface. More...
 

Detailed Description

ComputeFiniteStrainElasticStress computes the stress following elasticity theory for finite strains.

Definition at line 24 of file ComputeFiniteStrainElasticStress.h.

Constructor & Destructor Documentation

◆ ComputeFiniteStrainElasticStress()

ComputeFiniteStrainElasticStress::ComputeFiniteStrainElasticStress ( const InputParameters &  parameters)

Definition at line 24 of file ComputeFiniteStrainElasticStress.C.

26  : ComputeStressBase(parameters),
27  GuaranteeConsumer(this),
28  _elasticity_tensor_name(_base_name + "elasticity_tensor"),
29  _elasticity_tensor(getMaterialPropertyByName<RankFourTensor>(_elasticity_tensor_name)),
30  _strain_increment(getMaterialPropertyByName<RankTwoTensor>(_base_name + "strain_increment")),
32  getMaterialPropertyByName<RankTwoTensor>(_base_name + "rotation_increment")),
33  _stress_old(getMaterialPropertyOldByName<RankTwoTensor>(_base_name + "stress")),
34  _elastic_strain_old(getMaterialPropertyOldByName<RankTwoTensor>(_base_name + "elastic_strain"))
35 {
36 }

Member Function Documentation

◆ computeQpProperties()

void ComputeStressBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Definition at line 50 of file ComputeStressBase.C.

51 {
53 
54  // Add in extra stress
55  _stress[_qp] += _extra_stress[_qp];
56 }

◆ computeQpStress()

void ComputeFiniteStrainElasticStress::computeQpStress ( )
overrideprotectedvirtual

Compute the stress and store it in the _stress material property for the current quadrature point.

Implements ComputeStressBase.

Reimplemented in ComputeMultipleInelasticStress, ComputeMultipleInelasticCosseratStress, ComputeSmearedCrackingStress, and ComputeDamageStress.

Definition at line 47 of file ComputeFiniteStrainElasticStress.C.

48 {
49  // Calculate the stress in the intermediate configuration
50  RankTwoTensor intermediate_stress;
51 
52  intermediate_stress =
54 
55  // Rotate the stress state to the current configuration
56  _stress[_qp] =
57  _rotation_increment[_qp] * intermediate_stress * _rotation_increment[_qp].transpose();
58 
59  // Assign value for elastic strain, which is equal to the mechanical strain
61 
62  // Compute dstress_dstrain
63  _Jacobian_mult[_qp] = _elasticity_tensor[_qp]; // This is NOT the exact jacobian
64 }

Referenced by ComputeDamageStress::computeQpStress().

◆ hasGuaranteedMaterialProperty()

bool GuaranteeConsumer::hasGuaranteedMaterialProperty ( const MaterialPropertyName &  prop,
Guarantee  guarantee 
)
protectedinherited

Definition at line 28 of file GuaranteeConsumer.C.

30 {
31  if (!_gc_feproblem->startedInitialSetup())
32  mooseError("hasGuaranteedMaterialProperty() needs to be called in initialSetup()");
33 
34  // Reference to MaterialWarehouse for testing and retrieving block ids
35  const auto & warehouse = _gc_feproblem->getMaterialWarehouse();
36 
37  // Complete set of ids that this object is active
38  const auto & ids = (_gc_block_restrict && _gc_block_restrict->blockRestricted())
39  ? _gc_block_restrict->blockIDs()
40  : _gc_feproblem->mesh().meshSubdomains();
41 
42  // Loop over each id for this object
43  for (const auto & id : ids)
44  {
45  // If block materials exist, look if any issue the required guarantee
46  if (warehouse.hasActiveBlockObjects(id))
47  {
48  const std::vector<std::shared_ptr<MaterialBase>> & mats = warehouse.getActiveBlockObjects(id);
49  for (const auto & mat : mats)
50  {
51  const auto & mat_props = mat->getSuppliedItems();
52  if (mat_props.count(prop_name))
53  {
54  auto guarantee_mat = dynamic_cast<GuaranteeProvider *>(mat.get());
55  if (guarantee_mat && !guarantee_mat->hasGuarantee(prop_name, guarantee))
56  {
57  // we found at least one material on the set of block we operate on
58  // that does _not_ provide the requested guarantee
59  return false;
60  }
61  }
62  }
63  }
64  }
65 
66  return true;
67 }

Referenced by initialSetup(), ComputeSmearedCrackingStress::initialSetup(), ComputeLinearElasticPFFractureStress::initialSetup(), CriticalTimeStep::initialSetup(), and ComputeMultipleInelasticStress::initialSetup().

◆ initialSetup()

void ComputeFiniteStrainElasticStress::initialSetup ( )
override

Definition at line 39 of file ComputeFiniteStrainElasticStress.C.

40 {
42  mooseError("ComputeFiniteStrainElasticStress can only be used with elasticity tensor materials "
43  "that guarantee isotropic tensors.");
44 }

◆ initQpStatefulProperties()

void ComputeStressBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

◆ validParams()

InputParameters ComputeFiniteStrainElasticStress::validParams ( )
static

Definition at line 17 of file ComputeFiniteStrainElasticStress.C.

18 {
19  InputParameters params = ComputeStressBase::validParams();
20  params.addClassDescription("Compute stress using elasticity for finite strains");
21  return params;
22 }

Referenced by ComputeDamageStress::validParams(), and ComputeMultipleInelasticStress::validParams().

Member Data Documentation

◆ _base_name

const std::string ComputeStressBase::_base_name
protectedinherited

Base name prepended to all material property names to allow for multi-material systems.

Definition at line 45 of file ComputeStressBase.h.

Referenced by ComputeLinearElasticStress::initialSetup(), and ComputeCosseratLinearElasticStress::initialSetup().

◆ _elastic_strain

MaterialProperty<RankTwoTensor>& ComputeStressBase::_elastic_strain
protectedinherited

◆ _elastic_strain_old

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_elastic_strain_old
protected

The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors.

Definition at line 51 of file ComputeFiniteStrainElasticStress.h.

Referenced by computeQpStress().

◆ _elasticity_tensor

const MaterialProperty<RankFourTensor>& ComputeFiniteStrainElasticStress::_elasticity_tensor
protected

◆ _elasticity_tensor_name

const std::string ComputeFiniteStrainElasticStress::_elasticity_tensor_name
protected

Name of the elasticity tensor material property.

Definition at line 37 of file ComputeFiniteStrainElasticStress.h.

Referenced by initialSetup(), ComputeSmearedCrackingStress::initialSetup(), and ComputeMultipleInelasticStress::initialSetup().

◆ _extra_stress

const MaterialProperty<RankTwoTensor>& ComputeStressBase::_extra_stress
protectedinherited

Extra stress tensor.

Definition at line 55 of file ComputeStressBase.h.

Referenced by ComputeStressBase::computeQpProperties().

◆ _gc_block_restrict

BlockRestrictable* const GuaranteeConsumer::_gc_block_restrict
privateinherited

Access block restrictions of the object with this interface.

Definition at line 41 of file GuaranteeConsumer.h.

Referenced by GuaranteeConsumer::hasGuaranteedMaterialProperty().

◆ _gc_feproblem

FEProblemBase* const GuaranteeConsumer::_gc_feproblem
privateinherited

Reference to the FEProblemBase class.

Definition at line 38 of file GuaranteeConsumer.h.

Referenced by GuaranteeConsumer::hasGuaranteedMaterialProperty().

◆ _gc_params

const InputParameters& GuaranteeConsumer::_gc_params
privateinherited

Parameters of the object with this interface.

Definition at line 35 of file GuaranteeConsumer.h.

◆ _initial_stress_fcn

std::vector<const Function *> ComputeStressBase::_initial_stress_fcn
protectedinherited

initial stress components

Definition at line 58 of file ComputeStressBase.h.

◆ _Jacobian_mult

MaterialProperty<RankFourTensor>& ComputeStressBase::_Jacobian_mult
protectedinherited

◆ _mechanical_strain

const MaterialProperty<RankTwoTensor>& ComputeStressBase::_mechanical_strain
protectedinherited

◆ _rotation_increment

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_rotation_increment
protected

◆ _strain_increment

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_strain_increment
protected

Strain increment material property.

Definition at line 41 of file ComputeFiniteStrainElasticStress.h.

Referenced by computeQpStress().

◆ _stress

MaterialProperty<RankTwoTensor>& ComputeStressBase::_stress
protectedinherited

Stress material property.

Definition at line 50 of file ComputeStressBase.h.

Referenced by ComputeMultipleInelasticCosseratStress::computeAdmissibleState(), ComputeMultipleInelasticStress::computeAdmissibleState(), ComputeStressBase::computeQpProperties(), ComputeStrainIncrementBasedStress::computeQpStress(), ComputeLinearElasticStress::computeQpStress(), ComputeDamageStress::computeQpStress(), computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), ComputeMultiPlasticityStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleInelasticStress::computeQpStress(), ComputeMultipleInelasticStress::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), ComputeMultipleInelasticStress::finiteStrainRotation(), ComputeStressBase::initQpStatefulProperties(), FiniteStrainCrystalPlasticity::initQpStatefulProperties(), FiniteStrainUObasedCP::initQpStatefulProperties(), FiniteStrainHyperElasticViscoPlastic::initQpStatefulProperties(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainUObasedCP::postSolveQp(), FiniteStrainHyperElasticViscoPlastic::postSolveQp(), FiniteStrainCrystalPlasticity::postSolveQp(), ComputeSmearedCrackingStress::updateCrackingStateAndStress(), ComputeMultipleInelasticStress::updateQpState(), and ComputeMultipleInelasticStress::updateQpStateSingleModel().

◆ _stress_old

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_stress_old
protected

The documentation for this class was generated from the following files:
ComputeFiniteStrainElasticStress::_elasticity_tensor
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
Definition: ComputeFiniteStrainElasticStress.h:39
ComputeFiniteStrainElasticStress::_strain_increment
const MaterialProperty< RankTwoTensor > & _strain_increment
Strain increment material property.
Definition: ComputeFiniteStrainElasticStress.h:41
ComputeStressBase::_stress
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
Definition: ComputeStressBase.h:50
ComputeFiniteStrainElasticStress::_elasticity_tensor_name
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
Definition: ComputeFiniteStrainElasticStress.h:37
ComputeStressBase::_extra_stress
const MaterialProperty< RankTwoTensor > & _extra_stress
Extra stress tensor.
Definition: ComputeStressBase.h:55
ComputeStressBase::_Jacobian_mult
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
Definition: ComputeStressBase.h:61
ComputeFiniteStrainElasticStress::_rotation_increment
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
Definition: ComputeFiniteStrainElasticStress.h:43
GuaranteeConsumer::GuaranteeConsumer
GuaranteeConsumer(MooseObject *moose_object)
Definition: GuaranteeConsumer.C:20
GuaranteeConsumer::_gc_block_restrict
BlockRestrictable *const _gc_block_restrict
Access block restrictions of the object with this interface.
Definition: GuaranteeConsumer.h:41
ComputeStressBase::computeQpStress
virtual void computeQpStress()=0
Compute the stress and store it in the _stress material property for the current quadrature point.
ComputeStressBase::validParams
static InputParameters validParams()
Definition: ComputeStressBase.C:17
GuaranteeConsumer::_gc_feproblem
FEProblemBase *const _gc_feproblem
Reference to the FEProblemBase class.
Definition: GuaranteeConsumer.h:38
ComputeStressBase::_base_name
const std::string _base_name
Base name prepended to all material property names to allow for multi-material systems.
Definition: ComputeStressBase.h:45
ComputeFiniteStrainElasticStress::_elastic_strain_old
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...
Definition: ComputeFiniteStrainElasticStress.h:51
ComputeFiniteStrainElasticStress::_stress_old
const MaterialProperty< RankTwoTensor > & _stress_old
Old state of the stress tensor material property.
Definition: ComputeFiniteStrainElasticStress.h:45
ComputeStressBase::_elastic_strain
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
Definition: ComputeStressBase.h:52
GuaranteeConsumer::hasGuaranteedMaterialProperty
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)
Definition: GuaranteeConsumer.C:28
ComputeStressBase::_mechanical_strain
const MaterialProperty< RankTwoTensor > & _mechanical_strain
Mechanical strain material property.
Definition: ComputeStressBase.h:48
RankTwoTensorTempl< Real >
ComputeStressBase::ComputeStressBase
ComputeStressBase(const InputParameters &parameters)
Definition: ComputeStressBase.C:28
Guarantee::ISOTROPIC