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

This class computes a creep strain increment associated with a linear viscoelastic model contained in a LinearViscoelasticityBase material. More...

#include <LinearViscoelasticStressUpdate.h>

Inheritance diagram for LinearViscoelasticStressUpdate:
[legend]

Public Member Functions

 LinearViscoelasticStressUpdate (const InputParameters &parameters)
 
virtual void updateState (RankTwoTensor &strain_increment, RankTwoTensor &inelastic_strain_increment, const RankTwoTensor &rotation_increment, RankTwoTensor &stress_new, const RankTwoTensor &stress_old, const RankFourTensor &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator, RankFourTensor &tangent_operator) override
 Computes the new creep strain, and removes the creep contribution from the elastic strains and stress. More...
 
virtual void propagateQpStatefulProperties () override
 Reimplemented from StressUpdateBase. More...
 
virtual bool requiresIsotropicTensor () override
 Does the model require the elasticity tensor to be isotropic? More...
 
void setQp (unsigned int qp)
 Sets the value of the global variable _qp for inheriting classes. More...
 
virtual Real computeTimeStepLimit ()
 
virtual TangentCalculationMethod getTangentCalculationMethod ()
 
void resetQpProperties () final
 Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten. More...
 
void resetProperties () final
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 

Protected Attributes

const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
 Apparent creep strain (extracted from a LinearViscoelasticityBase object) More...
 
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
 Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object) More...
 
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
 Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) More...
 
const std::string _base_name
 Name used as a prefix for all material properties related to the stress update model. More...
 
MaterialProperty< RankTwoTensor > & _creep_strain
 Creep strain. More...
 
const MaterialProperty< RankTwoTensor > & _creep_strain_old
 

Detailed Description

This class computes a creep strain increment associated with a linear viscoelastic model contained in a LinearViscoelasticityBase material.

The creep strain increment is deduced from the elastic strain increment and added to the inelastic strain increment. The stress is reduced accordingly.

This material must be used in conjunction with ComputeMultipleInelasticStress, and uses an incremental (small or finite) strain formulation. To use viscoelastic models with total small strain, use a ComputeLinearViscoelasticStress material instead.

Definition at line 31 of file LinearViscoelasticStressUpdate.h.

Constructor & Destructor Documentation

◆ LinearViscoelasticStressUpdate()

LinearViscoelasticStressUpdate::LinearViscoelasticStressUpdate ( const InputParameters &  parameters)

Definition at line 34 of file LinearViscoelasticStressUpdate.C.

35  : StressUpdateBase(parameters),
36  _creep_strain(declareProperty<RankTwoTensor>(_base_name + "creep_strain")),
37  _creep_strain_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "creep_strain")),
38  _apparent_creep_strain(getMaterialProperty<RankTwoTensor>("apparent_creep_strain")),
39  _apparent_elasticity_tensor(getMaterialProperty<RankFourTensor>("apparent_elasticity_tensor")),
40  _elasticity_tensor_inv(getMaterialProperty<RankFourTensor>("elasticity_tensor_inv"))
41 {
42 }
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty< RankTwoTensor > & _creep_strain_old
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) ...
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.
const std::string _base_name
Name used as a prefix for all material properties related to the stress update model.
StressUpdateBase(const InputParameters &parameters)

Member Function Documentation

◆ computeTimeStepLimit()

Real StressUpdateBase::computeTimeStepLimit ( )
virtualinherited

Reimplemented in RadialReturnStressUpdate.

Definition at line 55 of file StressUpdateBase.C.

56 {
57  return std::numeric_limits<Real>::max();
58 }

◆ getTangentCalculationMethod()

virtual TangentCalculationMethod StressUpdateBase::getTangentCalculationMethod ( )
inlinevirtualinherited

◆ initQpStatefulProperties()

void LinearViscoelasticStressUpdate::initQpStatefulProperties ( )
overrideprotectedvirtual

Definition at line 45 of file LinearViscoelasticStressUpdate.C.

46 {
47  _creep_strain[_qp].zero();
48 }
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.

◆ propagateQpStatefulProperties()

void LinearViscoelasticStressUpdate::propagateQpStatefulProperties ( )
overridevirtual

Reimplemented from StressUpdateBase.

Reimplemented from StressUpdateBase.

Definition at line 51 of file LinearViscoelasticStressUpdate.C.

52 {
53  _creep_strain[_qp] = _creep_strain_old[_qp];
54 }
const MaterialProperty< RankTwoTensor > & _creep_strain_old
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.

◆ requiresIsotropicTensor()

virtual bool LinearViscoelasticStressUpdate::requiresIsotropicTensor ( )
inlineoverridevirtual

Does the model require the elasticity tensor to be isotropic?

Implements StressUpdateBase.

Definition at line 53 of file LinearViscoelasticStressUpdate.h.

53 { return false; }

◆ resetProperties()

void StressUpdateBase::resetProperties ( )
inlinefinalinherited

Definition at line 117 of file StressUpdateBase.h.

117 {}

◆ resetQpProperties()

void StressUpdateBase::resetQpProperties ( )
inlinefinalinherited

Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten.

Definition at line 116 of file StressUpdateBase.h.

116 {}

◆ setQp()

void StressUpdateBase::setQp ( unsigned int  qp)
inherited

Sets the value of the global variable _qp for inheriting classes.

Definition at line 42 of file StressUpdateBase.C.

43 {
44  _qp = qp;
45 }

◆ updateState()

void LinearViscoelasticStressUpdate::updateState ( RankTwoTensor &  strain_increment,
RankTwoTensor &  inelastic_strain_increment,
const RankTwoTensor &  rotation_increment,
RankTwoTensor &  stress_new,
const RankTwoTensor &  stress_old,
const RankFourTensor &  elasticity_tensor,
const RankTwoTensor &  elastic_strain_old,
bool  compute_full_tangent_operator,
RankFourTensor &  tangent_operator 
)
overridevirtual

Computes the new creep strain, and removes the creep contribution from the elastic strains and stress.

The tangent_operator is set equal to the elasticity tensor of the material.

Implements StressUpdateBase.

Definition at line 57 of file LinearViscoelasticStressUpdate.C.

66 {
67  RankTwoTensor current_mechanical_strain =
68  elastic_strain_old + _creep_strain_old[_qp] + strain_increment;
69 
70  _creep_strain[_qp] =
71  current_mechanical_strain - (_apparent_elasticity_tensor[_qp] * _elasticity_tensor_inv[_qp]) *
72  (current_mechanical_strain - _apparent_creep_strain[_qp]);
73 
74  RankTwoTensor creep_strain_increment = _creep_strain[_qp] - _creep_strain_old[_qp];
75 
76  strain_increment -= creep_strain_increment;
77  inelastic_strain_increment += creep_strain_increment;
78  stress_new -= elasticity_tensor * creep_strain_increment;
79 }
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty< RankTwoTensor > & _creep_strain_old
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) ...
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.

Member Data Documentation

◆ _apparent_creep_strain

const MaterialProperty<RankTwoTensor>& LinearViscoelasticStressUpdate::_apparent_creep_strain
protected

Apparent creep strain (extracted from a LinearViscoelasticityBase object)

Definition at line 64 of file LinearViscoelasticStressUpdate.h.

Referenced by updateState().

◆ _apparent_elasticity_tensor

const MaterialProperty<RankFourTensor>& LinearViscoelasticStressUpdate::_apparent_elasticity_tensor
protected

Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)

Definition at line 66 of file LinearViscoelasticStressUpdate.h.

Referenced by updateState().

◆ _base_name

const std::string StressUpdateBase::_base_name
protectedinherited

Name used as a prefix for all material properties related to the stress update model.

Definition at line 122 of file StressUpdateBase.h.

◆ _creep_strain

MaterialProperty<RankTwoTensor>& LinearViscoelasticStressUpdate::_creep_strain
protected

◆ _creep_strain_old

const MaterialProperty<RankTwoTensor>& LinearViscoelasticStressUpdate::_creep_strain_old
protected

Definition at line 60 of file LinearViscoelasticStressUpdate.h.

Referenced by propagateQpStatefulProperties(), and updateState().

◆ _elasticity_tensor_inv

const MaterialProperty<RankFourTensor>& LinearViscoelasticStressUpdate::_elasticity_tensor_inv
protected

Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)

Definition at line 68 of file LinearViscoelasticStressUpdate.h.

Referenced by updateState().


The documentation for this class was generated from the following files: