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 ()
 
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

std::string _base_name
 
MaterialProperty< RankTwoTensor > & _creep_strain
 Creep strain. More...
 
const MaterialProperty< RankTwoTensor > & _creep_strain_old
 
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 > & _instantaneous_elasticity_tensor_inv
 Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) More...
 

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 28 of file LinearViscoelasticStressUpdate.h.

Constructor & Destructor Documentation

LinearViscoelasticStressUpdate::LinearViscoelasticStressUpdate ( const InputParameters &  parameters)

Definition at line 30 of file LinearViscoelasticStressUpdate.C.

31  : StressUpdateBase(parameters),
32  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") : std::string()),
33  _creep_strain(declareProperty<RankTwoTensor>(
34  isParamValid("base_name") ? _base_name + "_creep_strain" : "creep_strain")),
35  _creep_strain_old(getMaterialPropertyOld<RankTwoTensor>(
36  isParamValid("base_name") ? _base_name + "_creep_strain" : "creep_strain")),
37  _apparent_creep_strain(getMaterialProperty<RankTwoTensor>("apparent_creep_strain")),
38  _apparent_elasticity_tensor(getMaterialProperty<RankFourTensor>("apparent_elasticity_tensor")),
40  getMaterialProperty<RankFourTensor>("instantaneous_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< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.
const MaterialProperty< RankFourTensor > & _instantaneous_elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) ...
StressUpdateBase(const InputParameters &parameters)

Member Function Documentation

Real StressUpdateBase::computeTimeStepLimit ( )
virtualinherited

Reimplemented in RadialReturnStressUpdate.

Definition at line 43 of file StressUpdateBase.C.

44 {
45  return std::numeric_limits<Real>::max();
46 }
void LinearViscoelasticStressUpdate::initQpStatefulProperties ( )
overrideprotectedvirtual

Definition at line 45 of file LinearViscoelasticStressUpdate.C.

Referenced by requiresIsotropicTensor().

46 {
47  _creep_strain[_qp].zero();
48 }
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.
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.
virtual bool LinearViscoelasticStressUpdate::requiresIsotropicTensor ( )
inlineoverridevirtual

Does the model require the elasticity tensor to be isotropic?

Implements StressUpdateBase.

Definition at line 50 of file LinearViscoelasticStressUpdate.h.

50 { return false; }
void StressUpdateBase::resetProperties ( )
inlinefinalinherited

Definition at line 93 of file StressUpdateBase.h.

93 {}
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 92 of file StressUpdateBase.h.

92 {}
void StressUpdateBase::setQp ( unsigned int  qp)
inherited

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

Definition at line 30 of file StressUpdateBase.C.

31 {
32  _qp = qp;
33 }
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 -
73  (current_mechanical_strain - _apparent_creep_strain[_qp]);
74 
75  RankTwoTensor creep_strain_increment = _creep_strain[_qp] - _creep_strain_old[_qp];
76 
77  strain_increment -= creep_strain_increment;
78  inelastic_strain_increment += creep_strain_increment;
79  stress_new -= elasticity_tensor * creep_strain_increment;
80 
81  tangent_operator = elasticity_tensor;
82 }
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty< RankTwoTensor > & _creep_strain_old
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.
const MaterialProperty< RankFourTensor > & _instantaneous_elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) ...

Member Data Documentation

const MaterialProperty<RankTwoTensor>& LinearViscoelasticStressUpdate::_apparent_creep_strain
protected

Apparent creep strain (extracted from a LinearViscoelasticityBase object)

Definition at line 62 of file LinearViscoelasticStressUpdate.h.

Referenced by updateState().

const MaterialProperty<RankFourTensor>& LinearViscoelasticStressUpdate::_apparent_elasticity_tensor
protected

Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)

Definition at line 64 of file LinearViscoelasticStressUpdate.h.

Referenced by updateState().

std::string LinearViscoelasticStressUpdate::_base_name
protected

Definition at line 55 of file LinearViscoelasticStressUpdate.h.

MaterialProperty<RankTwoTensor>& LinearViscoelasticStressUpdate::_creep_strain
protected
const MaterialProperty<RankTwoTensor>& LinearViscoelasticStressUpdate::_creep_strain_old
protected

Definition at line 59 of file LinearViscoelasticStressUpdate.h.

Referenced by propagateQpStatefulProperties(), and updateState().

const MaterialProperty<RankFourTensor>& LinearViscoelasticStressUpdate::_instantaneous_elasticity_tensor_inv
protected

Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)

Definition at line 66 of file LinearViscoelasticStressUpdate.h.

Referenced by updateState().


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