This class represents an assembly of springs and dashpots following a generalized Maxwell model (an arbitrary number of Maxwell units assembled in parallel with a single spring). More...
#include <GeneralizedMaxwellBase.h>
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 | |
GeneralizedMaxwellBase (const InputParameters ¶meters) | |
void | recomputeQpApparentProperties (unsigned int qp) |
Compute the apparent properties at a quadrature point. More... | |
bool | hasGuarantee (const MaterialPropertyName &prop_name, Guarantee guarantee) |
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... | |
std::string | _base_name |
std::string | _elasticity_tensor_name |
MaterialProperty< RankFourTensor > & | _elasticity_tensor |
Function *const | _prefactor_function |
prefactor function to multiply the elasticity tensor with More... | |
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 |
This class represents an assembly of springs and dashpots following a generalized Maxwell model (an arbitrary number of Maxwell units assembled in parallel with a single spring).
This class does not attribute the mechanical properties to each spring and dashpot. It must be inherited to do so (see GeneralizedMaxwellModel 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 36 of file GeneralizedMaxwellBase.h.
|
stronginherited |
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 88 of file LinearViscoelasticityBase.h.
GeneralizedMaxwellBase::GeneralizedMaxwellBase | ( | const InputParameters & | parameters | ) |
Definition at line 20 of file GeneralizedMaxwellBase.C.
|
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 90 of file GeneralizedMaxwellBase.C.
|
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 60 of file GeneralizedMaxwellBase.C.
|
finalprotectedvirtualinherited |
Inherited from ComputeElasticityTensorBase.
Implements ComputeElasticityTensorBase.
Definition at line 191 of file LinearViscoelasticityBase.C.
|
protectedvirtualinherited |
Definition at line 41 of file ComputeElasticityTensorBase.C.
|
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().
|
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 198 of file LinearViscoelasticityBase.C.
Referenced by LinearViscoelasticityBase::recomputeQpApparentProperties().
|
protectedinherited |
Provides theta as a function of the time step and a viscosity.
Definition at line 215 of file LinearViscoelasticityBase.C.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), updateQpViscousStrains(), and GeneralizedKelvinVoigtBase::updateQpViscousStrains().
|
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 101 of file LinearViscoelasticityBase.C.
Referenced by GeneralizedKelvinVoigtModel::GeneralizedKelvinVoigtModel(), and GeneralizedMaxwellModel::GeneralizedMaxwellModel().
|
inherited |
Definition at line 16 of file GuaranteeProvider.C.
|
overrideprotectedvirtualinherited |
Definition at line 134 of file LinearViscoelasticityBase.C.
|
protectedinherited |
Definition at line 27 of file GuaranteeProvider.C.
Referenced by ComputeCosseratElasticityTensor::ComputeCosseratElasticityTensor(), ComputeElasticityTensor::ComputeElasticityTensor(), ComputeIsotropicElasticityTensor::ComputeIsotropicElasticityTensor(), ComputeLayeredCosseratElasticityTensor::ComputeLayeredCosseratElasticityTensor(), ComputeVariableIsotropicElasticityTensor::ComputeVariableIsotropicElasticityTensor(), GeneralizedKelvinVoigtModel::GeneralizedKelvinVoigtModel(), and GeneralizedMaxwellModel::GeneralizedMaxwellModel().
|
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 164 of file LinearViscoelasticityBase.C.
Referenced by LinearViscoelasticityBase::computeQpElasticityTensor().
|
protectedinherited |
Definition at line 34 of file GuaranteeProvider.C.
Referenced by ComputeElasticityTensorCP::ComputeElasticityTensorCP().
|
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 27 of file GeneralizedMaxwellBase.C.
|
protectedinherited |
The apparent creep strain resulting from the internal viscous strains.
Definition at line 240 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Definition at line 241 of file LinearViscoelasticityBase.h.
|
protectedinherited |
Apparent elasticity tensor. This is NOT the elasticity tensor of the material.
Definition at line 196 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), computeQpApparentElasticityTensors(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Inverse of the apparent elasticity tensor.
Definition at line 198 of file LinearViscoelasticityBase.h.
Referenced by computeQpApparentCreepStrain(), computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Definition at line 36 of file ComputeElasticityTensorBase.h.
Referenced by LinearViscoelasticityBase::declareViscoelasticProperties(), and LinearViscoelasticityBase::LinearViscoelasticityBase().
|
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 213 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::declareViscoelasticProperties(), GeneralizedKelvinVoigtModel::GeneralizedKelvinVoigtModel(), GeneralizedMaxwellModel::GeneralizedMaxwellModel(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Previous value of the true creep strain for update purposes.
This is calculated by a ComputeLinearViscoelasticStress or a LinearViscoelasticStressUpdate material.
Definition at line 251 of file LinearViscoelasticityBase.h.
Referenced by updateQpViscousStrains().
|
protectedinherited |
List of viscosities of each subsequent dashpot in the chain.
Definition at line 227 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtModel::computeQpViscoelasticProperties(), GeneralizedMaxwellModel::computeQpViscoelasticProperties(), LinearViscoelasticityBase::declareViscoelasticProperties(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Definition at line 228 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::declareViscoelasticProperties(), GeneralizedKelvinVoigtBase::updateQpViscousStrains(), and updateQpViscousStrains().
|
protectedinherited |
Pointer to the value of the driving eigenstrain.
Definition at line 258 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), and computeQpApparentCreepStrain().
|
protectedinherited |
Name of the eigenstrain that drives the additional creep strain.
Definition at line 256 of file LinearViscoelasticityBase.h.
|
protectedinherited |
Definition at line 259 of file LinearViscoelasticityBase.h.
|
protectedinherited |
previous value of the elastic strain for update purposes
Definition at line 245 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::updateQpViscousStrains(), and updateQpViscousStrains().
|
protectedinherited |
Definition at line 39 of file ComputeElasticityTensorBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), computeQpApparentElasticityTensors(), ComputeCosseratElasticityTensor::computeQpElasticityTensor(), ComputeElasticityTensor::computeQpElasticityTensor(), ComputeConcentrationDependentElasticityTensor::computeQpElasticityTensor(), ComputeIsotropicElasticityTensor::computeQpElasticityTensor(), ComputePolycrystalElasticityTensor::computeQpElasticityTensor(), ComputeElasticityTensorCP::computeQpElasticityTensor(), ComputeVariableIsotropicElasticityTensor::computeQpElasticityTensor(), ComputeLayeredCosseratElasticityTensor::computeQpElasticityTensor(), and ComputeElasticityTensorBase::computeQpProperties().
|
protectedinherited |
Instantaneous elasticity tensor. This IS the real elasticity tensor of the material.
Inverse of the instaneous elasticity tensor
Definition at line 203 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), computeQpApparentElasticityTensors(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Definition at line 37 of file ComputeElasticityTensorBase.h.
Referenced by ComputeCosseratElasticityTensor::ComputeCosseratElasticityTensor(), ComputeElasticityTensor::ComputeElasticityTensor(), ComputeElasticityTensorCP::ComputeElasticityTensorCP(), ComputeIsotropicElasticityTensor::ComputeIsotropicElasticityTensor(), ComputeLayeredCosseratElasticityTensor::ComputeLayeredCosseratElasticityTensor(), ComputePolycrystalElasticityTensor::ComputePolycrystalElasticityTensor(), ComputeVariableIsotropicElasticityTensor::ComputeVariableIsotropicElasticityTensor(), GeneralizedKelvinVoigtModel::GeneralizedKelvinVoigtModel(), GeneralizedMaxwellModel::GeneralizedMaxwellModel(), ComputeVariableIsotropicElasticityTensor::initialSetup(), and LinearViscoelasticityBase::LinearViscoelasticityBase().
|
protectedinherited |
Elasticity tensor of a stand-alone elastic spring in the chain.
Definition at line 216 of file LinearViscoelasticityBase.h.
Referenced by computeQpApparentCreepStrain(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtModel::computeQpViscoelasticProperties(), GeneralizedMaxwellModel::computeQpViscoelasticProperties(), LinearViscoelasticityBase::computeQpViscoelasticPropertiesInv(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Definition at line 217 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::computeQpViscoelasticPropertiesInv().
|
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 267 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::computeQpElasticityTensor().
|
protectedinherited |
Indicates if the model is only driven by the stress, or also by an additional eigenstrain.
Definition at line 254 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), updateQpViscousStrains(), and GeneralizedKelvinVoigtBase::updateQpViscousStrains().
|
protectedinherited |
Indicates if the spring-dashpot assembly has a single dashpot not associated with a spring.
Definition at line 208 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), LinearViscoelasticityBase::declareViscoelasticProperties(), GeneralizedKelvinVoigtModel::GeneralizedKelvinVoigtModel(), GeneralizedMaxwellModel::GeneralizedMaxwellModel(), LinearViscoelasticityBase::initQpStatefulProperties(), updateQpViscousStrains(), and GeneralizedKelvinVoigtBase::updateQpViscousStrains().
|
protectedinherited |
Determines how theta is computed.
Definition at line 191 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::computeTheta().
|
protectedinherited |
If active, indicates that we need to call computeQpViscoelasticPropertiesInv()
Definition at line 206 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::declareViscoelasticProperties(), GeneralizedMaxwellBase(), LinearViscoelasticityBase::initQpStatefulProperties(), LinearViscoelasticityBase::LinearViscoelasticityBase(), and LinearViscoelasticityBase::recomputeQpApparentProperties().
|
protectedinherited |
prefactor function to multiply the elasticity tensor with
Definition at line 42 of file ComputeElasticityTensorBase.h.
Referenced by ComputeLayeredCosseratElasticityTensor::computeQpElasticityTensor(), and ComputeElasticityTensorBase::computeQpProperties().
|
protectedinherited |
List of elasticity tensor of each subsequent spring in the chain.
Definition at line 221 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtModel::computeQpViscoelasticProperties(), GeneralizedMaxwellModel::computeQpViscoelasticProperties(), LinearViscoelasticityBase::computeQpViscoelasticPropertiesInv(), LinearViscoelasticityBase::declareViscoelasticProperties(), LinearViscoelasticityBase::initQpStatefulProperties(), updateQpViscousStrains(), and GeneralizedKelvinVoigtBase::updateQpViscousStrains().
|
protectedinherited |
Definition at line 222 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), GeneralizedKelvinVoigtBase::computeQpApparentElasticityTensors(), GeneralizedKelvinVoigtModel::computeQpViscoelasticPropertiesInv(), GeneralizedMaxwellModel::computeQpViscoelasticPropertiesInv(), LinearViscoelasticityBase::computeQpViscoelasticPropertiesInv(), LinearViscoelasticityBase::declareViscoelasticProperties(), and LinearViscoelasticityBase::initQpStatefulProperties().
|
protectedinherited |
Definition at line 223 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::declareViscoelasticProperties(), and GeneralizedKelvinVoigtBase::updateQpViscousStrains().
|
protectedinherited |
checks whether we are at the first time step
Definition at line 270 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::recomputeQpApparentProperties().
|
protectedinherited |
User-defined value for theta.
Definition at line 193 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::computeTheta(), and LinearViscoelasticityBase::LinearViscoelasticityBase().
|
protectedinherited |
The internal strain variables required by the time-stepping procedure (must be on a one-on-one basis with the number of dashpot).
Definition at line 235 of file LinearViscoelasticityBase.h.
Referenced by GeneralizedKelvinVoigtBase::computeQpApparentCreepStrain(), computeQpApparentCreepStrain(), LinearViscoelasticityBase::declareViscoelasticProperties(), LinearViscoelasticityBase::initQpStatefulProperties(), GeneralizedKelvinVoigtBase::updateQpViscousStrains(), and updateQpViscousStrains().
|
protectedinherited |
Definition at line 236 of file LinearViscoelasticityBase.h.
Referenced by LinearViscoelasticityBase::declareViscoelasticProperties(), GeneralizedKelvinVoigtBase::updateQpViscousStrains(), and updateQpViscousStrains().