https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ComputeLinearViscoelasticStress Class Reference

Computes the stress of a linear viscoelastic material, using total small strains. More...

#include <ComputeLinearViscoelasticStress.h>

Inheritance diagram for ComputeLinearViscoelasticStress:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 ComputeLinearViscoelasticStress (const InputParameters &parameters)
 
virtual void initialSetup () override
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void computeQpStress () override
 Compute the stress and store it in the _stress material property for the current quadrature point.
 
virtual void computeQpProperties () override
 

Protected Attributes

const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
 Apparent creep strain (extracted from a LinearViscoelasticityBase object)
 
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
 Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
 
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
 Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)
 
const std::string _elasticity_tensor_name
 Name of the elasticity tensor material property.
 
const MaterialProperty< RankFourTensor > & _elasticity_tensor
 Elasticity tensor material property.
 
const std::string _base_name
 Base name prepended to all material property names to allow for multi-material systems.
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 Mechanical strain material property.
 
MaterialProperty< RankTwoTensor > & _stress
 Stress material property.
 
MaterialProperty< RankTwoTensor > & _elastic_strain
 Elastic strain material property.
 
const MaterialProperty< RankTwoTensor > & _extra_stress
 Extra stress tensor.
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components
 
MaterialProperty< RankFourTensor > & _Jacobian_mult
 derivative of stress w.r.t. strain (_dstress_dstrain)
 
MaterialProperty< RankTwoTensor > & _creep_strain
 Creep strain variable.
 
const MaterialProperty< RankTwoTensor > & _creep_strain_old
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 

Detailed Description

Computes the stress of a linear viscoelastic material, using total small strains.

The mechanical strain is decomposed into the elastic strain + the creep strain, the creep strain itself resulting from a spring-dashpot model.

If you need to accomodate other sources of inelastic strains, use a ComputeMultipleInelasticStress material instead, associated with a LinearViscoelasticStressUpdate to represent the creep strain.

Definition at line 25 of file ComputeLinearViscoelasticStress.h.

Constructor & Destructor Documentation

◆ ComputeLinearViscoelasticStress()

ComputeLinearViscoelasticStress::ComputeLinearViscoelasticStress ( const InputParameters parameters)

Definition at line 34 of file ComputeLinearViscoelasticStress.C.

35 : ComputeLinearElasticStress(parameters),
36 _creep_strain(declareProperty<RankTwoTensor>(
37 isParamValid("base_name") ? _base_name + "_creep_strain" : "creep_strain")),
38 _creep_strain_old(getMaterialPropertyOld<RankTwoTensor>(
39 isParamValid("base_name") ? _base_name + "_creep_strain" : "creep_strain")),
40 _apparent_creep_strain(getMaterialProperty<RankTwoTensor>("apparent_creep_strain")),
41 _apparent_elasticity_tensor(getMaterialProperty<RankFourTensor>("apparent_elasticity_tensor")),
42 _elasticity_tensor_inv(getMaterialProperty<RankFourTensor>("elasticity_tensor_inv"))
43{
44}
const std::string _base_name
Base name prepended to all material property names to allow for multi-material systems.
ComputeLinearElasticStress computes the stress following linear elasticity theory (small strains)
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty< RankTwoTensor > & _creep_strain_old
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain variable.
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)

Member Function Documentation

◆ computeQpProperties()

void ComputeGeneralStressBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Definition at line 44 of file ComputeGeneralStressBase.C.

45{
47
48 // Add in extra stress
49 _stress[_qp] += _extra_stress[_qp];
50}
const MaterialProperty< RankTwoTensor > & _extra_stress
Extra stress tensor.
virtual void computeQpStress()=0
Compute the stress and store it in the _stress material property for the current quadrature point.
MaterialProperty< RankTwoTensor > & _stress
Stress material property.

◆ computeQpStress()

void ComputeLinearViscoelasticStress::computeQpStress ( )
overrideprotectedvirtual

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

Reimplemented from ComputeLinearElasticStress.

Definition at line 53 of file ComputeLinearViscoelasticStress.C.

54{
55 _creep_strain[_qp] =
58
60
62
64}
const MaterialProperty< RankTwoTensor > & _mechanical_strain
Mechanical strain material property.
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.

◆ initialSetup()

void ComputeLinearElasticStress::initialSetup ( )
overridevirtualinherited

Definition at line 30 of file ComputeLinearElasticStress.C.

31{
32 // _base_name + "unstabilized_deformation_gradient" is only declared if we're
33 // using the Lagrangian kernels. It's okay to invoke this small strain
34 // material if you are using that kernel system and the
35 // ComputeLagrangianWrappedStress wrapper
36 if (hasBlockMaterialProperty<RankTwoTensor>(_base_name + "strain_increment") &&
37 !hasBlockMaterialProperty<RankTwoTensor>(_base_name + "unstabilized_deformation_gradient"))
38 mooseError("This linear elastic stress calculation only works for small strains; use "
39 "ComputeFiniteStrainElasticStress for simulations using incremental and finite "
40 "strains.");
41}
void mooseError(Args &&... args)

◆ initQpStatefulProperties()

void ComputeLinearViscoelasticStress::initQpStatefulProperties ( )
overrideprotectedvirtual

Reimplemented from ComputeGeneralStressBase.

Definition at line 47 of file ComputeLinearViscoelasticStress.C.

48{
49 _creep_strain[_qp].zero();
50}

◆ validParams()

InputParameters ComputeLinearViscoelasticStress::validParams ( )
static

Definition at line 15 of file ComputeLinearViscoelasticStress.C.

16{
18 params.addClassDescription("Divides total strain into elastic + creep + eigenstrains");
19 params.addParam<std::string>(
20 "apparent_creep_strain",
21 "apparent_creep_strain",
22 "name of the apparent creep strain (defined by a LinearViscoelasticityBase material)");
23 params.addParam<std::string>(
24 "apparent_elasticity_tensor",
25 "apparent_elasticity_tensor",
26 "name of the apparent elasticity tensor (defined by a LinearViscoelasticityBase material)");
27 params.addParam<std::string>(
28 "elasticity_tensor_inv",
29 "elasticity_tensor_inv",
30 "name of the real compliance tensor (defined by a LinearViscoelasticityBase material)");
31 return params;
32}
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _apparent_creep_strain

const MaterialProperty<RankTwoTensor>& ComputeLinearViscoelasticStress::_apparent_creep_strain
protected

Apparent creep strain (extracted from a LinearViscoelasticityBase object)

Definition at line 42 of file ComputeLinearViscoelasticStress.h.

Referenced by computeQpStress().

◆ _apparent_elasticity_tensor

const MaterialProperty<RankFourTensor>& ComputeLinearViscoelasticStress::_apparent_elasticity_tensor
protected

Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)

Definition at line 44 of file ComputeLinearViscoelasticStress.h.

Referenced by computeQpStress().

◆ _base_name

const std::string ComputeGeneralStressBase::_base_name
protectedinherited

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

Definition at line 43 of file ComputeGeneralStressBase.h.

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

◆ _creep_strain

MaterialProperty<RankTwoTensor>& ComputeLinearViscoelasticStress::_creep_strain
protected

Creep strain variable.

Definition at line 37 of file ComputeLinearViscoelasticStress.h.

Referenced by computeQpStress(), and initQpStatefulProperties().

◆ _creep_strain_old

const MaterialProperty<RankTwoTensor>& ComputeLinearViscoelasticStress::_creep_strain_old
protected

Definition at line 38 of file ComputeLinearViscoelasticStress.h.

◆ _elastic_strain

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_elastic_strain
protectedinherited

◆ _elasticity_tensor

const MaterialProperty<RankFourTensor>& ComputeLinearElasticStress::_elasticity_tensor
protectedinherited

Elasticity tensor material property.

Definition at line 32 of file ComputeLinearElasticStress.h.

Referenced by ComputeLinearElasticStress::computeQpStress(), and computeQpStress().

◆ _elasticity_tensor_inv

const MaterialProperty<RankFourTensor>& ComputeLinearViscoelasticStress::_elasticity_tensor_inv
protected

Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)

Definition at line 46 of file ComputeLinearViscoelasticStress.h.

Referenced by computeQpStress().

◆ _elasticity_tensor_name

const std::string ComputeLinearElasticStress::_elasticity_tensor_name
protectedinherited

Name of the elasticity tensor material property.

Definition at line 30 of file ComputeLinearElasticStress.h.

◆ _extra_stress

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_extra_stress
protectedinherited

Extra stress tensor.

Definition at line 53 of file ComputeGeneralStressBase.h.

Referenced by ComputeGeneralStressBase::computeQpProperties().

◆ _initial_stress_fcn

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

initial stress components

Definition at line 56 of file ComputeGeneralStressBase.h.

◆ _Jacobian_mult

MaterialProperty<RankFourTensor>& ComputeGeneralStressBase::_Jacobian_mult
protectedinherited

◆ _mechanical_strain

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_mechanical_strain
protectedinherited

◆ _stress

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_stress
protectedinherited

Stress material property.

Definition at line 48 of file ComputeGeneralStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeAdmissibleState(), ComputeMultipleInelasticCosseratStress::computeAdmissibleState(), ComputeGeneralStressBase::computeQpProperties(), ComputeMultiPlasticityStress::computeQpStress(), ComputeStrainIncrementBasedStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), AbaqusUMATStress::computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), ComputeLinearElasticStress::computeQpStress(), computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeMultipleCrystalPlasticityStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), ComputeCreepPlasticityStress::computeTangentOperators(), ComputeMultipleInelasticStressBase::finiteStrainRotation(), FiniteStrainCrystalPlasticity::initQpStatefulProperties(), FiniteStrainUObasedCP::initQpStatefulProperties(), FiniteStrainHyperElasticViscoPlastic::initQpStatefulProperties(), ComputeGeneralStressBase::initQpStatefulProperties(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainCrystalPlasticity::postSolveQp(), FiniteStrainUObasedCP::postSolveQp(), FiniteStrainHyperElasticViscoPlastic::postSolveQp(), ComputeSmearedCrackingStress::updateCrackingStateAndStress(), ComputeCreepPlasticityStress::updateQpState(), ComputeMultipleInelasticStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().


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