www.mooseframework.org
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
GeneralizedKelvinVoigtBase Class Referenceabstract

This class represents an assembly of springs and dashpots following a generalized Kelvin-Voigt model (an arbitrary number of Kelvin-Voigt units assembled in series with a single spring at the top). More...

#include <GeneralizedKelvinVoigtBase.h>

Inheritance diagram for GeneralizedKelvinVoigtBase:
[legend]

Public Types

enum  IntegrationRule { IntegrationRule::BackwardEuler, IntegrationRule::MidPoint, IntegrationRule::Newmark, IntegrationRule::Zienkiewicz }
 Determines how theta is calculated for the time-integration system. More...
 

Public Member Functions

 GeneralizedKelvinVoigtBase (const InputParameters &parameters)
 
void recomputeQpApparentProperties (unsigned int qp)
 Compute the apparent properties at a quadrature point. More...
 
bool hasGuarantee (const MaterialPropertyName &prop_name, Guarantee guarantee)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void computeQpApparentElasticityTensors () final
 This method computes the apparent elasticity tensor used in the internal time-stepping scheme. More...
 
virtual void computeQpApparentCreepStrain () final
 This method computes the apparent creep strain corresponding to the current viscous_strain of each dashpot. More...
 
virtual void updateQpViscousStrains () final
 Update the internal viscous strains at a quadrature point. More...
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpElasticityTensor () final
 Inherited from ComputeElasticityTensorBase. More...
 
virtual void computeQpViscoelasticProperties ()=0
 This method assigns the mechanical properties of each spring and dashpot in the system. More...
 
virtual void computeQpViscoelasticPropertiesInv ()
 This method computes the inverse elasticity tensor of each spring in the system (if required). More...
 
void declareViscoelasticProperties ()
 Declare all necessary MaterialProperties for the model. More...
 
Real computeTheta (Real dt, Real viscosity) const
 Provides theta as a function of the time step and a viscosity. More...
 
virtual void computeQpProperties ()
 
void issueGuarantee (const MaterialPropertyName &prop_name, Guarantee guarantee)
 
void revokeGuarantee (const MaterialPropertyName &prop_name, Guarantee guarantee)
 

Protected Attributes

IntegrationRule _integration_rule
 Determines how theta is computed. More...
 
Real _theta
 User-defined value for theta. More...
 
MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
 Apparent elasticity tensor. This is NOT the elasticity tensor of the material. More...
 
MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor_inv
 Inverse of the apparent elasticity tensor. More...
 
MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
 Instantaneous elasticity tensor. This IS the real elasticity tensor of the material. More...
 
bool _need_viscoelastic_properties_inverse
 If active, indicates that we need to call computeQpViscoelasticPropertiesInv() More...
 
bool _has_longterm_dashpot
 Indicates if the spring-dashpot assembly has a single dashpot not associated with a spring. More...
 
unsigned int _components
 This is the number of internal variables required by the model. More...
 
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
 previous value of the elastic strain for update purposes More...
 
const MaterialProperty< RankTwoTensor > & _creep_strain_old
 Previous value of the true creep strain for update purposes. More...
 
bool _has_driving_eigenstrain
 Indicates if the model is only driven by the stress, or also by an additional eigenstrain. More...
 
std::string _driving_eigenstrain_name
 Name of the eigenstrain that drives the additional creep strain. More...
 
bool _force_recompute_properties
 If activated, the time-stepping scheme will be re-initialized at each step of the solver. More...
 
bool & _step_zero
 checks whether we are at the first time step More...
 
const std::string _base_name
 
std::string _elasticity_tensor_name
 
MaterialProperty< RankFourTensor > & _elasticity_tensor
 
MaterialProperty< Real > & _effective_stiffness
 
const Function *const _prefactor_function
 prefactor function to multiply the elasticity tensor with More...
 
const MaterialProperty< RankFourTensor > & _first_elasticity_tensor_old
 old material properties required for the update of the viscoelastic strain More...
 
const MaterialProperty< RankFourTensor > & _first_elasticity_tensor_inv_old
 
MaterialProperty< RankFourTensor > & _first_elasticity_tensor
 Elasticity tensor of a stand-alone elastic spring in the chain. More...
 
MaterialProperty< RankFourTensor > * _first_elasticity_tensor_inv
 
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors
 List of elasticity tensor of each subsequent spring in the chain. More...
 
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv
 
std::vector< const MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv_old
 
std::vector< MaterialProperty< Real > * > _dashpot_viscosities
 List of viscosities of each subsequent dashpot in the chain. More...
 
std::vector< const MaterialProperty< Real > * > _dashpot_viscosities_old
 
std::vector< MaterialProperty< RankTwoTensor > * > _viscous_strains
 
std::vector< const MaterialProperty< RankTwoTensor > * > _viscous_strains_old
 
MaterialProperty< RankTwoTensor > & _apparent_creep_strain
 The apparent creep strain resulting from the internal viscous strains. More...
 
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain_old
 
const MaterialProperty< RankTwoTensor > * _driving_eigenstrain
 Pointer to the value of the driving eigenstrain. More...
 
const MaterialProperty< RankTwoTensor > * _driving_eigenstrain_old
 

Private Attributes

std::map< MaterialPropertyName, std::set< Guarantee > > _guarantees
 

Detailed Description

This class represents an assembly of springs and dashpots following a generalized Kelvin-Voigt model (an arbitrary number of Kelvin-Voigt units assembled in series with a single spring at the top).

This class does not attribute the mechanical properties to each spring and dashpot. It must be inherited to do so (see GeneralizedKelvinVoigtModel for an example).

This class derives from LinearViscoelasticityBase, and thus contains both the apparent mechanical properties of the material, and the internal variables associated to each of the dashpots in the model. It provides the methods required to perform the time stepping scheme associated with viscoelastic models.

See LinearViscoelasticityBase for more information

Definition at line 35 of file GeneralizedKelvinVoigtBase.h.

Member Enumeration Documentation

◆ IntegrationRule

Determines how theta is calculated for the time-integration system.

Enumerator
BackwardEuler 

theta = 1

MidPoint 

theta = 0.5

Newmark 

theta defined by the user

Zienkiewicz 

theta automatically adjusted as a function of the time step and the viscosity

Definition at line 87 of file LinearViscoelasticityBase.h.

88  {
90  BackwardEuler,
92  MidPoint,
94  Newmark,
96  Zienkiewicz,
97  };

Constructor & Destructor Documentation

◆ GeneralizedKelvinVoigtBase()

GeneralizedKelvinVoigtBase::GeneralizedKelvinVoigtBase ( const InputParameters &  parameters)

Definition at line 23 of file GeneralizedKelvinVoigtBase.C.

24  : LinearViscoelasticityBase(parameters),
26  getMaterialPropertyOld<RankFourTensor>(_base_name + "spring_elasticity_tensor_0")),
28  getMaterialPropertyOld<RankFourTensor>(_base_name + "spring_elasticity_tensor_0_inv"))
29 {
30 }

Member Function Documentation

◆ computeQpApparentCreepStrain()

void GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain ( )
finalprotectedvirtual

This method computes the apparent creep strain corresponding to the current viscous_strain of each dashpot.

It must be called after the apparent elasticity tensors have been calculated.

This method is purely virtual. Inherited classes must override it.

This method is related to the internal time-stepping scheme. It should only be overwritten by classes that inherit directly from LinearViscoelasticityBase, and that represent a different spring-dashpot assembly. See GeneralizedKelvinVoigtBase for example.

Implements LinearViscoelasticityBase.

Definition at line 88 of file GeneralizedKelvinVoigtBase.C.

89 {
90  _apparent_creep_strain[_qp].zero();
91 
92  for (unsigned int i = 0; i < _springs_elasticity_tensors.size(); ++i)
93  {
94  Real theta_i = computeTheta(_dt, (*_dashpot_viscosities[i])[_qp]);
95  Real gamma = (*_dashpot_viscosities[i])[_qp] / (_dt * theta_i);
96  _apparent_creep_strain[_qp] += (*_viscous_strains[i])[_qp] * (gamma / (1. + gamma));
97  }
98 
100  _apparent_creep_strain[_qp] += (*_viscous_strains.back())[_qp];
101 
103  {
104  RankFourTensor cumulated_driving_tensor;
105  cumulated_driving_tensor.zero();
106  for (unsigned int i = 0; i < _springs_elasticity_tensors.size(); ++i)
107  {
108  double theta_i = computeTheta(_dt, (*_dashpot_viscosities[i])[_qp]);
109  double gamma = (*_dashpot_viscosities[i])[_qp] / (_dt * theta_i);
110  cumulated_driving_tensor += (*_springs_elasticity_tensors_inv[i])[_qp] / (1. + gamma);
111  }
112 
113  _apparent_creep_strain[_qp] +=
114  (_elasticity_tensor[_qp] * cumulated_driving_tensor) * (*_driving_eigenstrain)[_qp];
115 
117  {
118  double theta_i = computeTheta(_dt, (*_dashpot_viscosities.back())[_qp]);
119  double gamma = (*_dashpot_viscosities.back())[_qp] / (_dt * theta_i);
120  _apparent_creep_strain[_qp] += (*_driving_eigenstrain)[_qp] / gamma;
121  }
122  }
123 }

◆ computeQpApparentElasticityTensors()

void GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors ( )
finalprotectedvirtual

This method computes the apparent elasticity tensor used in the internal time-stepping scheme.

It is called after the mechanical properties have been set, and before the apparent creep strains are calculated.

This method is also responsible for calculating the instantaneous elasticity tensor, and the inverse of both the apparent and instantaneous elasticity tensors.

This method is purely virtual. Inherited classes must override it.

This method is related to the internal time-stepping scheme. It should only be overwritten by classes that inherit directly from LinearViscoelasticityBase, and that represent a different spring-dashpot assembly. See GeneralizedKelvinVoigtBase for example.

Implements LinearViscoelasticityBase.

Definition at line 63 of file GeneralizedKelvinVoigtBase.C.

64 {
66  _elasticity_tensor_inv[_qp] = (*_first_elasticity_tensor_inv)[_qp];
67  _apparent_elasticity_tensor_inv[_qp] = (*_first_elasticity_tensor_inv)[_qp];
68 
69  for (unsigned int i = 0; i < _springs_elasticity_tensors.size(); ++i)
70  {
71  Real theta_i = computeTheta(_dt, (*_dashpot_viscosities[i])[_qp]);
72  Real gamma = (*_dashpot_viscosities[i])[_qp] / (_dt * theta_i);
74  (*_springs_elasticity_tensors_inv[i])[_qp] / (1. + gamma);
75  }
76 
78  {
79  Real theta_i = computeTheta(_dt, (*_dashpot_viscosities.back())[_qp]);
80  Real gamma = (*_dashpot_viscosities.back())[_qp] / (_dt * theta_i);
81  _apparent_elasticity_tensor_inv[_qp] += (*_first_elasticity_tensor_inv)[_qp] / gamma;
82  }
83 
85 }

◆ computeQpElasticityTensor()

void LinearViscoelasticityBase::computeQpElasticityTensor ( )
finalprotectedvirtualinherited

Inherited from ComputeElasticityTensorBase.

Implements ComputeElasticityTensorBase.

Definition at line 192 of file LinearViscoelasticityBase.C.

193 {
196 }

◆ computeQpProperties()

void ComputeElasticityTensorBase::computeQpProperties ( )
protectedvirtualinherited

Definition at line 43 of file ComputeElasticityTensorBase.C.

44 {
45  _effective_stiffness[_qp] = 0; // Currently overriden by ComputeIsotropicElasticityTensor
47 
48  // Multiply by prefactor
50  {
51  _elasticity_tensor[_qp] *= _prefactor_function->value(_t, _q_point[_qp]);
52  _effective_stiffness[_qp] *= std::sqrt(_prefactor_function->value(_t, _q_point[_qp]));
53  }
54 }

◆ computeQpViscoelasticProperties()

virtual void LinearViscoelasticityBase::computeQpViscoelasticProperties ( )
protectedpure virtualinherited

This method assigns the mechanical properties of each spring and dashpot in the system.

This method is purely virtual. Inherited classes must override it.

This method is related to the storage of the mechanical properties of each spring and dashpot in the system, and not the internal time-stepping procedure. Only end-user classes should override it. See GeneralizedKelvinVoigModel for example.

Implemented in GeneralizedMaxwellModel, and GeneralizedKelvinVoigtModel.

Referenced by LinearViscoelasticityBase::recomputeQpApparentProperties().

◆ computeQpViscoelasticPropertiesInv()

void LinearViscoelasticityBase::computeQpViscoelasticPropertiesInv ( )
protectedvirtualinherited

This method computes the inverse elasticity tensor of each spring in the system (if required).

This method is virtual. Its default behavior computes the inverse of each tensor. It must be inherited only if there is a faster way to compute this inverse (for example, if they are known).

This method is related to the storage of the mechanical properties of each spring and dashpot in the system, and not the internal time-stepping procedure. Only end-user classes should override it. See GeneralizedKelvinVoigtModel for example.

Reimplemented in GeneralizedMaxwellModel, and GeneralizedKelvinVoigtModel.

Definition at line 199 of file LinearViscoelasticityBase.C.

200 {
201  if (MooseUtils::absoluteFuzzyEqual(_first_elasticity_tensor[_qp].L2norm(), 0.0))
202  (*_first_elasticity_tensor_inv)[_qp].zero();
203  else
205 
206  for (unsigned int i = 0; i < _springs_elasticity_tensors.size(); ++i)
207  {
208  if (MooseUtils::absoluteFuzzyEqual((*_springs_elasticity_tensors[i])[_qp].L2norm(), 0.0))
209  (*_springs_elasticity_tensors_inv[i])[_qp].zero();
210  else
211  (*_springs_elasticity_tensors_inv[i])[_qp] = (*_springs_elasticity_tensors[i])[_qp].invSymm();
212  }
213 }

Referenced by LinearViscoelasticityBase::recomputeQpApparentProperties().

◆ computeTheta()

Real LinearViscoelasticityBase::computeTheta ( Real  dt,
Real  viscosity 
) const
protectedinherited

Provides theta as a function of the time step and a viscosity.

Definition at line 216 of file LinearViscoelasticityBase.C.

217 {
218  if (MooseUtils::absoluteFuzzyEqual(dt, 0.0))
219  mooseError("linear viscoelasticity cannot be integrated over a dt of ", dt);
220 
221  switch (_integration_rule)
222  {
224  return 1.;
226  return 0.5;
228  return _theta;
230  return 1. / (1. - std::exp(-dt / viscosity)) - viscosity / dt;
231  default:
232  return 1.;
233  }
234  return 1.;
235 }

Referenced by computeQpApparentCreepStrain(), GeneralizedMaxwellBase::computeQpApparentCreepStrain(), GeneralizedMaxwellBase::computeQpApparentElasticityTensors(), computeQpApparentElasticityTensors(), GeneralizedMaxwellBase::updateQpViscousStrains(), and updateQpViscousStrains().

◆ declareViscoelasticProperties()

void LinearViscoelasticityBase::declareViscoelasticProperties ( )
protectedinherited

Declare all necessary MaterialProperties for the model.

This method must be called once at the end of the constructor of a final inherited class, after _components has been set. See GeneralizedKelvinVoigtModel or GeneralizedMaxwell model for example.

Definition at line 102 of file LinearViscoelasticityBase.C.

103 {
104  for (unsigned int i = 0; i < _components; ++i)
105  {
106  std::string ith = Moose::stringify(i + 1);
107 
108  if (!_has_longterm_dashpot || (_components > 0 && i < _components - 1))
109  {
110  _springs_elasticity_tensors.push_back(
111  &declareProperty<RankFourTensor>(_base_name + "spring_elasticity_tensor_" + ith));
112  getMaterialPropertyOld<RankFourTensor>(_base_name + "spring_elasticity_tensor_" + ith);
113  }
114 
115  _dashpot_viscosities.push_back(&declareProperty<Real>(_base_name + "dashpot_viscosity_" + ith));
116  _dashpot_viscosities_old.push_back(
117  &getMaterialPropertyOld<Real>(_base_name + "dashpot_viscosity_" + ith));
118 
119  _viscous_strains.push_back(
120  &declareProperty<RankTwoTensor>(_base_name + "viscous_strain_" + ith));
121  _viscous_strains_old.push_back(
122  &getMaterialPropertyOld<RankTwoTensor>(_base_name + "viscous_strain_" + ith));
123 
125  {
126  _springs_elasticity_tensors_inv.push_back(&declareProperty<RankFourTensor>(
127  _base_name + "spring_elasticity_tensor_" + ith + "_inv"));
128  _springs_elasticity_tensors_inv_old.push_back(&getMaterialPropertyOld<RankFourTensor>(
129  _base_name + "spring_elasticity_tensor_" + ith + "_inv"));
130  }
131  }
132 }

Referenced by GeneralizedKelvinVoigtModel::GeneralizedKelvinVoigtModel(), and GeneralizedMaxwellModel::GeneralizedMaxwellModel().

◆ hasGuarantee()

bool GuaranteeProvider::hasGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
inherited

Definition at line 16 of file GuaranteeProvider.C.

17 {
18  auto it = _guarantees.find(prop_name);
19  if (it == _guarantees.end())
20  return false;
21 
22  auto it2 = it->second.find(guarantee);
23  return it2 != it->second.end();
24 }

◆ initQpStatefulProperties()

void LinearViscoelasticityBase::initQpStatefulProperties ( )
overrideprotectedvirtualinherited

Definition at line 135 of file LinearViscoelasticityBase.C.

136 {
137  if (_components != _viscous_strains.size())
138  mooseError(
139  "inconsistent numbers of dashpots and viscous strains in LinearViscoelasticityBase;"
140  " Make sure declareViscoelasticProperties has been called in the viscoelastic model");
141 
142  _apparent_creep_strain[_qp].zero();
143  _apparent_elasticity_tensor[_qp].zero();
145  _elasticity_tensor_inv[_qp].zero();
146  _first_elasticity_tensor[_qp].zero();
148  (*_first_elasticity_tensor_inv)[_qp].zero();
149 
150  for (unsigned int i = 0; i < _components; ++i)
151  {
152  if (!_has_longterm_dashpot || (_components > 0 && i < _components - 1))
153  {
154  (*_springs_elasticity_tensors[i])[_qp].zero();
156  (*_springs_elasticity_tensors_inv[i])[_qp].zero();
157  }
158 
159  (*_dashpot_viscosities[i])[_qp] = 0.0;
160  (*_viscous_strains[i])[_qp].zero();
161  }
162 }

◆ issueGuarantee()

void GuaranteeProvider::issueGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
protectedinherited

◆ recomputeQpApparentProperties()

void LinearViscoelasticityBase::recomputeQpApparentProperties ( unsigned int  qp)
inherited

Compute the apparent properties at a quadrature point.

This initializes the internal time-stepping scheme, and must be called at the beginning of the time step.

This method is called by LinearViscoelasticityManager.

Definition at line 165 of file LinearViscoelasticityBase.C.

166 {
167  unsigned int qp_prev = _qp;
168  _qp = qp;
169 
170  if (_t_step >= 1)
171  _step_zero = false;
172 
173  // 1. we get the viscoelastic properties and their inverse if needed
177 
178  // 2. we update the internal viscous strains from the previous time step
180 
181  // 3. we compute the apparent elasticity tensor
183 
184  // 4. we transform the internal viscous strains in an apparent creep strain
185  if (!_step_zero)
187 
188  _qp = qp_prev;
189 }

Referenced by LinearViscoelasticityBase::computeQpElasticityTensor().

◆ revokeGuarantee()

void GuaranteeProvider::revokeGuarantee ( const MaterialPropertyName &  prop_name,
Guarantee  guarantee 
)
protectedinherited

Definition at line 34 of file GuaranteeProvider.C.

35 {
36  auto it = _guarantees.find(prop_name);
37  if (it != _guarantees.end())
38  it->second.erase(guarantee);
39 }

Referenced by ComputeElasticityTensorCP::ComputeElasticityTensorCP().

◆ updateQpViscousStrains()

void GeneralizedKelvinVoigtBase::updateQpViscousStrains ( )
finalprotectedvirtual

Update the internal viscous strains at a quadrature point.

Calling this method is required at the end of each time step to update the internal time-stepping scheme correctly.

This method is pure virtual. Inherited classes must override it.

This method is related to the internal time-stepping scheme. It should only be overwritten by classes that inherit directly from LinearViscoelasticityBase, and that represent a different spring-dashpot assembly. See GeneralizedKelvinVoigtBase or GeneralizedMaxwellBase for example.

Implements LinearViscoelasticityBase.

Definition at line 33 of file GeneralizedKelvinVoigtBase.C.

34 {
35  if (_t_step <= 1)
36  return;
37 
38  RankTwoTensor effective_stress = _first_elasticity_tensor_old[_qp] * _elastic_strain_old[_qp];
39 
41  effective_stress += _first_elasticity_tensor_old[_qp] * (*_driving_eigenstrain_old)[_qp];
42 
43  for (unsigned int i = 0; i < _springs_elasticity_tensors.size(); ++i)
44  {
45  Real theta_i = computeTheta(_dt_old, (*_dashpot_viscosities_old[i])[_qp]);
46  Real gamma = (*_dashpot_viscosities_old[i])[_qp] / (_dt_old * theta_i);
47  (*_viscous_strains[i])[_qp] =
48  ((*_springs_elasticity_tensors_inv_old[i])[_qp] * effective_stress) /
49  (theta_i * (1. + gamma));
50  (*_viscous_strains[i])[_qp] += (*_viscous_strains_old[i])[_qp] *
51  (gamma / (theta_i * (1. + gamma)) - (1. - theta_i) / theta_i);
52  }
53 
55  {
56  (*_viscous_strains.back())[_qp] = (_first_elasticity_tensor_inv_old[_qp] * effective_stress) *
57  (_dt_old / (*_dashpot_viscosities_old.back())[_qp]);
58  (*_viscous_strains.back())[_qp] += (*_viscous_strains_old.back())[_qp];
59  }
60 }

◆ validParams()

InputParameters GeneralizedKelvinVoigtBase::validParams ( )
static

Definition at line 15 of file GeneralizedKelvinVoigtBase.C.

16 {
17  InputParameters params = LinearViscoelasticityBase::validParams();
18  params.set<bool>("need_viscoelastic_properties_inverse") = true;
19  params.suppressParameter<bool>("need_viscoelastic_properties_inverse");
20  return params;
21 }

Referenced by GeneralizedKelvinVoigtModel::validParams().

Member Data Documentation

◆ _apparent_creep_strain

MaterialProperty<RankTwoTensor>& LinearViscoelasticityBase::_apparent_creep_strain
protectedinherited

The apparent creep strain resulting from the internal viscous strains.

Definition at line 241 of file LinearViscoelasticityBase.h.

Referenced by computeQpApparentCreepStrain(), GeneralizedMaxwellBase::computeQpApparentCreepStrain(), and LinearViscoelasticityBase::initQpStatefulProperties().

◆ _apparent_creep_strain_old

const MaterialProperty<RankTwoTensor>& LinearViscoelasticityBase::_apparent_creep_strain_old
protectedinherited

Definition at line 242 of file LinearViscoelasticityBase.h.

◆ _apparent_elasticity_tensor

MaterialProperty<RankFourTensor>& LinearViscoelasticityBase::_apparent_elasticity_tensor
protectedinherited

Apparent elasticity tensor. This is NOT the elasticity tensor of the material.

Definition at line 197 of file LinearViscoelasticityBase.h.

Referenced by computeQpApparentElasticityTensors(), GeneralizedMaxwellBase::computeQpApparentElasticityTensors(), and LinearViscoelasticityBase::initQpStatefulProperties().

◆ _apparent_elasticity_tensor_inv

MaterialProperty<RankFourTensor>& LinearViscoelasticityBase::_apparent_elasticity_tensor_inv
protectedinherited

◆ _base_name

const std::string ComputeElasticityTensorBase::_base_name
protectedinherited

◆ _components

unsigned int LinearViscoelasticityBase::_components
protectedinherited

This is the number of internal variables required by the model.

This must be set in the constructor of an inherited class. See GeneralizedKelvinVoigtModel for example.

Definition at line 214 of file LinearViscoelasticityBase.h.

Referenced by LinearViscoelasticityBase::declareViscoelasticProperties(), GeneralizedKelvinVoigtModel::GeneralizedKelvinVoigtModel(), GeneralizedMaxwellModel::GeneralizedMaxwellModel(), and LinearViscoelasticityBase::initQpStatefulProperties().

◆ _creep_strain_old

const MaterialProperty<RankTwoTensor>& LinearViscoelasticityBase::_creep_strain_old
protectedinherited

Previous value of the true creep strain for update purposes.

This is calculated by a ComputeLinearViscoelasticStress or a LinearViscoelasticStressUpdate material.

Definition at line 252 of file LinearViscoelasticityBase.h.

Referenced by GeneralizedMaxwellBase::updateQpViscousStrains().

◆ _dashpot_viscosities

std::vector<MaterialProperty<Real> *> LinearViscoelasticityBase::_dashpot_viscosities
protectedinherited

◆ _dashpot_viscosities_old

std::vector<const MaterialProperty<Real> *> LinearViscoelasticityBase::_dashpot_viscosities_old
protectedinherited

◆ _driving_eigenstrain

const MaterialProperty<RankTwoTensor>* LinearViscoelasticityBase::_driving_eigenstrain
protectedinherited

Pointer to the value of the driving eigenstrain.

Definition at line 259 of file LinearViscoelasticityBase.h.

Referenced by computeQpApparentCreepStrain(), and GeneralizedMaxwellBase::computeQpApparentCreepStrain().

◆ _driving_eigenstrain_name

std::string LinearViscoelasticityBase::_driving_eigenstrain_name
protectedinherited

Name of the eigenstrain that drives the additional creep strain.

Definition at line 257 of file LinearViscoelasticityBase.h.

◆ _driving_eigenstrain_old

const MaterialProperty<RankTwoTensor>* LinearViscoelasticityBase::_driving_eigenstrain_old
protectedinherited

Definition at line 260 of file LinearViscoelasticityBase.h.

◆ _effective_stiffness

MaterialProperty<Real>& ComputeElasticityTensorBase::_effective_stiffness
protectedinherited

◆ _elastic_strain_old

const MaterialProperty<RankTwoTensor>& LinearViscoelasticityBase::_elastic_strain_old
protectedinherited

previous value of the elastic strain for update purposes

Definition at line 246 of file LinearViscoelasticityBase.h.

Referenced by updateQpViscousStrains(), and GeneralizedMaxwellBase::updateQpViscousStrains().

◆ _elasticity_tensor

MaterialProperty<RankFourTensor>& ComputeElasticityTensorBase::_elasticity_tensor
protectedinherited

◆ _elasticity_tensor_inv

MaterialProperty<RankFourTensor>& LinearViscoelasticityBase::_elasticity_tensor_inv
protectedinherited

Instantaneous elasticity tensor. This IS the real elasticity tensor of the material.

Inverse of the instaneous elasticity tensor

Definition at line 204 of file LinearViscoelasticityBase.h.

Referenced by computeQpApparentElasticityTensors(), GeneralizedMaxwellBase::computeQpApparentElasticityTensors(), and LinearViscoelasticityBase::initQpStatefulProperties().

◆ _elasticity_tensor_name

std::string ComputeElasticityTensorBase::_elasticity_tensor_name
protectedinherited

◆ _first_elasticity_tensor

MaterialProperty<RankFourTensor>& LinearViscoelasticityBase::_first_elasticity_tensor
protectedinherited

◆ _first_elasticity_tensor_inv

MaterialProperty<RankFourTensor>* LinearViscoelasticityBase::_first_elasticity_tensor_inv
protectedinherited

◆ _first_elasticity_tensor_inv_old

const MaterialProperty<RankFourTensor>& GeneralizedKelvinVoigtBase::_first_elasticity_tensor_inv_old
protected

Definition at line 49 of file GeneralizedKelvinVoigtBase.h.

Referenced by updateQpViscousStrains().

◆ _first_elasticity_tensor_old

const MaterialProperty<RankFourTensor>& GeneralizedKelvinVoigtBase::_first_elasticity_tensor_old
protected

old material properties required for the update of the viscoelastic strain

Definition at line 48 of file GeneralizedKelvinVoigtBase.h.

Referenced by updateQpViscousStrains().

◆ _force_recompute_properties

bool LinearViscoelasticityBase::_force_recompute_properties
protectedinherited

If activated, the time-stepping scheme will be re-initialized at each step of the solver.

This may be required for models in which the mechanical properties vary following other variables. If the mechanical properties are constant through the time step, this can be set to false.

Definition at line 268 of file LinearViscoelasticityBase.h.

Referenced by LinearViscoelasticityBase::computeQpElasticityTensor().

◆ _guarantees

std::map<MaterialPropertyName, std::set<Guarantee> > GuaranteeProvider::_guarantees
privateinherited

◆ _has_driving_eigenstrain

bool LinearViscoelasticityBase::_has_driving_eigenstrain
protectedinherited

Indicates if the model is only driven by the stress, or also by an additional eigenstrain.

Definition at line 255 of file LinearViscoelasticityBase.h.

Referenced by computeQpApparentCreepStrain(), GeneralizedMaxwellBase::computeQpApparentCreepStrain(), GeneralizedMaxwellBase::updateQpViscousStrains(), and updateQpViscousStrains().

◆ _has_longterm_dashpot

bool LinearViscoelasticityBase::_has_longterm_dashpot
protectedinherited

◆ _integration_rule

IntegrationRule LinearViscoelasticityBase::_integration_rule
protectedinherited

Determines how theta is computed.

Definition at line 192 of file LinearViscoelasticityBase.h.

Referenced by LinearViscoelasticityBase::computeTheta().

◆ _need_viscoelastic_properties_inverse

bool LinearViscoelasticityBase::_need_viscoelastic_properties_inverse
protectedinherited

◆ _prefactor_function

const Function* const ComputeElasticityTensorBase::_prefactor_function
protectedinherited

prefactor function to multiply the elasticity tensor with

Definition at line 44 of file ComputeElasticityTensorBase.h.

Referenced by ComputeLayeredCosseratElasticityTensor::computeQpElasticityTensor(), and ComputeElasticityTensorBase::computeQpProperties().

◆ _springs_elasticity_tensors

std::vector<MaterialProperty<RankFourTensor> *> LinearViscoelasticityBase::_springs_elasticity_tensors
protectedinherited

◆ _springs_elasticity_tensors_inv

std::vector<MaterialProperty<RankFourTensor> *> LinearViscoelasticityBase::_springs_elasticity_tensors_inv
protectedinherited

◆ _springs_elasticity_tensors_inv_old

std::vector<const MaterialProperty<RankFourTensor> *> LinearViscoelasticityBase::_springs_elasticity_tensors_inv_old
protectedinherited

◆ _step_zero

bool& LinearViscoelasticityBase::_step_zero
protectedinherited

checks whether we are at the first time step

Definition at line 271 of file LinearViscoelasticityBase.h.

Referenced by LinearViscoelasticityBase::recomputeQpApparentProperties().

◆ _theta

Real LinearViscoelasticityBase::_theta
protectedinherited

◆ _viscous_strains

std::vector<MaterialProperty<RankTwoTensor> *> LinearViscoelasticityBase::_viscous_strains
protectedinherited

◆ _viscous_strains_old

std::vector<const MaterialProperty<RankTwoTensor> *> LinearViscoelasticityBase::_viscous_strains_old
protectedinherited

The documentation for this class was generated from the following files:
LinearViscoelasticityBase::_first_elasticity_tensor
MaterialProperty< RankFourTensor > & _first_elasticity_tensor
Elasticity tensor of a stand-alone elastic spring in the chain.
Definition: LinearViscoelasticityBase.h:217
LinearViscoelasticityBase::_first_elasticity_tensor_inv
MaterialProperty< RankFourTensor > * _first_elasticity_tensor_inv
Definition: LinearViscoelasticityBase.h:218
LinearViscoelasticityBase::_apparent_creep_strain
MaterialProperty< RankTwoTensor > & _apparent_creep_strain
The apparent creep strain resulting from the internal viscous strains.
Definition: LinearViscoelasticityBase.h:241
GeneralizedKelvinVoigtBase::_first_elasticity_tensor_inv_old
const MaterialProperty< RankFourTensor > & _first_elasticity_tensor_inv_old
Definition: GeneralizedKelvinVoigtBase.h:49
LinearViscoelasticityBase::_apparent_elasticity_tensor
MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor. This is NOT the elasticity tensor of the material.
Definition: LinearViscoelasticityBase.h:197
LinearViscoelasticityBase::IntegrationRule::BackwardEuler
theta = 1
LinearViscoelasticityBase::_integration_rule
IntegrationRule _integration_rule
Determines how theta is computed.
Definition: LinearViscoelasticityBase.h:192
LinearViscoelasticityBase::_springs_elasticity_tensors_inv
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv
Definition: LinearViscoelasticityBase.h:223
LinearViscoelasticityBase::_dashpot_viscosities
std::vector< MaterialProperty< Real > * > _dashpot_viscosities
List of viscosities of each subsequent dashpot in the chain.
Definition: LinearViscoelasticityBase.h:228
ComputeElasticityTensorBase::_effective_stiffness
MaterialProperty< Real > & _effective_stiffness
Definition: ComputeElasticityTensorBase.h:41
GuaranteeProvider::_guarantees
std::map< MaterialPropertyName, std::set< Guarantee > > _guarantees
Definition: GuaranteeProvider.h:37
GeneralizedKelvinVoigtBase::_first_elasticity_tensor_old
const MaterialProperty< RankFourTensor > & _first_elasticity_tensor_old
old material properties required for the update of the viscoelastic strain
Definition: GeneralizedKelvinVoigtBase.h:48
LinearViscoelasticityBase::_driving_eigenstrain
const MaterialProperty< RankTwoTensor > * _driving_eigenstrain
Pointer to the value of the driving eigenstrain.
Definition: LinearViscoelasticityBase.h:259
LinearViscoelasticityBase::_dashpot_viscosities_old
std::vector< const MaterialProperty< Real > * > _dashpot_viscosities_old
Definition: LinearViscoelasticityBase.h:229
LinearViscoelasticityBase::computeQpViscoelasticPropertiesInv
virtual void computeQpViscoelasticPropertiesInv()
This method computes the inverse elasticity tensor of each spring in the system (if required).
Definition: LinearViscoelasticityBase.C:199
LinearViscoelasticityBase::updateQpViscousStrains
virtual void updateQpViscousStrains()=0
Update the internal viscous strains at a quadrature point.
LinearViscoelasticityBase::computeQpApparentCreepStrain
virtual void computeQpApparentCreepStrain()=0
This method computes the apparent creep strain corresponding to the current viscous_strain of each da...
LinearViscoelasticityBase::recomputeQpApparentProperties
void recomputeQpApparentProperties(unsigned int qp)
Compute the apparent properties at a quadrature point.
Definition: LinearViscoelasticityBase.C:165
LinearViscoelasticityBase::_has_driving_eigenstrain
bool _has_driving_eigenstrain
Indicates if the model is only driven by the stress, or also by an additional eigenstrain.
Definition: LinearViscoelasticityBase.h:255
LinearViscoelasticityBase::computeTheta
Real computeTheta(Real dt, Real viscosity) const
Provides theta as a function of the time step and a viscosity.
Definition: LinearViscoelasticityBase.C:216
LinearViscoelasticityBase::validParams
static InputParameters validParams()
Definition: LinearViscoelasticityBase.C:16
LinearViscoelasticityBase::_has_longterm_dashpot
bool _has_longterm_dashpot
Indicates if the spring-dashpot assembly has a single dashpot not associated with a spring.
Definition: LinearViscoelasticityBase.h:209
ComputeElasticityTensorBase::computeQpElasticityTensor
virtual void computeQpElasticityTensor()=0
LinearViscoelasticityBase::_theta
Real _theta
User-defined value for theta.
Definition: LinearViscoelasticityBase.h:194
LinearViscoelasticityBase::_viscous_strains
std::vector< MaterialProperty< RankTwoTensor > * > _viscous_strains
Definition: LinearViscoelasticityBase.h:236
LinearViscoelasticityBase::_apparent_elasticity_tensor_inv
MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor_inv
Inverse of the apparent elasticity tensor.
Definition: LinearViscoelasticityBase.h:199
LinearViscoelasticityBase::_springs_elasticity_tensors_inv_old
std::vector< const MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv_old
Definition: LinearViscoelasticityBase.h:224
LinearViscoelasticityBase::_need_viscoelastic_properties_inverse
bool _need_viscoelastic_properties_inverse
If active, indicates that we need to call computeQpViscoelasticPropertiesInv()
Definition: LinearViscoelasticityBase.h:207
ComputeElasticityTensorBase::_elasticity_tensor
MaterialProperty< RankFourTensor > & _elasticity_tensor
Definition: ComputeElasticityTensorBase.h:40
LinearViscoelasticityBase::computeQpApparentElasticityTensors
virtual void computeQpApparentElasticityTensors()=0
This method computes the apparent elasticity tensor used in the internal time-stepping scheme.
LinearViscoelasticityBase::IntegrationRule::MidPoint
theta = 0.5
LinearViscoelasticityBase::computeQpViscoelasticProperties
virtual void computeQpViscoelasticProperties()=0
This method assigns the mechanical properties of each spring and dashpot in the system.
LinearViscoelasticityBase::_viscous_strains_old
std::vector< const MaterialProperty< RankTwoTensor > * > _viscous_strains_old
Definition: LinearViscoelasticityBase.h:237
RankFourTensorTempl
Definition: ACGrGrElasticDrivingForce.h:20
LinearViscoelasticityBase::_elastic_strain_old
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
previous value of the elastic strain for update purposes
Definition: LinearViscoelasticityBase.h:246
RankTwoTensorTempl< Real >
LinearViscoelasticityBase::IntegrationRule::Newmark
theta defined by the user
LinearViscoelasticityBase::_force_recompute_properties
bool _force_recompute_properties
If activated, the time-stepping scheme will be re-initialized at each step of the solver.
Definition: LinearViscoelasticityBase.h:268
LinearViscoelasticityBase::LinearViscoelasticityBase
LinearViscoelasticityBase(const InputParameters &parameters)
Definition: LinearViscoelasticityBase.C:50
LinearViscoelasticityBase::_elasticity_tensor_inv
MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
Instantaneous elasticity tensor. This IS the real elasticity tensor of the material.
Definition: LinearViscoelasticityBase.h:204
ComputeElasticityTensorBase::_base_name
const std::string _base_name
Definition: ComputeElasticityTensorBase.h:37
LinearViscoelasticityBase::_step_zero
bool & _step_zero
checks whether we are at the first time step
Definition: LinearViscoelasticityBase.h:271
LinearViscoelasticityBase::_springs_elasticity_tensors
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors
List of elasticity tensor of each subsequent spring in the chain.
Definition: LinearViscoelasticityBase.h:222
RankTwoScalarTools::L2norm
T L2norm(const RankTwoTensorTempl< T > &r2tensor)
Definition: RankTwoScalarTools.h:98
ComputeElasticityTensorBase::_prefactor_function
const Function *const _prefactor_function
prefactor function to multiply the elasticity tensor with
Definition: ComputeElasticityTensorBase.h:44
LinearViscoelasticityBase::IntegrationRule::Zienkiewicz
theta automatically adjusted as a function of the time step and the viscosity
LinearViscoelasticityBase::_components
unsigned int _components
This is the number of internal variables required by the model.
Definition: LinearViscoelasticityBase.h:214