Go to the documentation of this file.
20 params.addClassDescription(
21 "Generalized Kelvin-Voigt model composed of a serial assembly of unit Kelvin-Voigt modules");
22 params.addRequiredParam<Real>(
"young_modulus",
"initial elastic modulus of the material");
23 params.addRequiredParam<Real>(
"poisson_ratio",
"initial poisson ratio of the material");
24 params.addRequiredParam<std::vector<Real>>(
25 "creep_modulus",
"list of the elastic moduli of the different springs in the material");
26 params.addRequiredParam<std::vector<Real>>(
28 "list of the characteristic times of the different dashpots in the material");
29 params.addParam<std::vector<Real>>(
30 "creep_ratio",
"list of the poisson ratios of the different springs in the material");
31 params.set<
bool>(
"force_recompute_properties") =
false;
32 params.suppressParameter<
bool>(
"force_recompute_properties");
38 _Ci(getParam<std::vector<Real>>(
"creep_modulus").size()),
39 _eta_i(getParam<std::vector<Real>>(
"creep_viscosity")),
40 _Si(getParam<std::vector<Real>>(
"creep_modulus").size())
42 Real young_modulus = getParam<Real>(
"young_modulus");
43 Real poisson_ratio = getParam<Real>(
"poisson_ratio");
45 _C0.fillFromInputVector({young_modulus, poisson_ratio}, RankFourTensor::symmetric_isotropic_E_nu);
48 std::vector<Real> creep_modulus = getParam<std::vector<Real>>(
"creep_modulus");
49 std::vector<Real> creep_ratio;
50 if (isParamValid(
"creep_ratio"))
51 creep_ratio = getParam<std::vector<Real>>(
"creep_ratio");
53 creep_ratio.resize(
_Ci.size(), poisson_ratio);
55 if (creep_modulus.size() !=
_Ci.size())
56 mooseError(
"incompatible number of creep moduli and viscosities");
57 if (creep_ratio.size() !=
_Ci.size())
58 mooseError(
"incompatible number of creep ratios and viscosities");
60 mooseError(
"incompatible number of creep ratios and viscosities");
62 for (
unsigned int i = 0; i <
_Ci.size(); ++i)
64 _Ci[i].fillFromInputVector({creep_modulus[i], creep_ratio[i]},
65 RankFourTensor::symmetric_isotropic_E_nu);
69 for (
unsigned int i = 0; i <
_eta_i.size(); ++i)
71 if (
_eta_i[i] < 0 || MooseUtils::absoluteFuzzyEqual(
_eta_i[i], 0.0))
72 mooseError(
"material viscosity must be strictly > 0");
87 for (
unsigned int i = 0; i <
_Ci.size(); ++i)
90 for (
unsigned int i = 0; i <
_eta_i.size(); ++i)
97 (*_first_elasticity_tensor_inv)[_qp] =
_S0;
99 for (
unsigned int i = 0; i <
_Si.size(); ++i)
MaterialProperty< RankFourTensor > & _first_elasticity_tensor
Elasticity tensor of a stand-alone elastic spring in the chain.
RankFourTensor _C0
The elasticity tensor associated with the first spring.
This class is an implementation of a generalized Kelvin-Voigt model with constant mechanical properti...
std::vector< RankFourTensor > _Si
The inverse of each subsequent spring elasticity tensor.
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv
std::vector< MaterialProperty< Real > * > _dashpot_viscosities
List of viscosities of each subsequent dashpot in the chain.
This class represents an assembly of springs and dashpots following a generalized Kelvin-Voigt model ...
void declareViscoelasticProperties()
Declare all necessary MaterialProperties for the model.
registerMooseObject("TensorMechanicsApp", GeneralizedKelvinVoigtModel)
virtual void computeQpViscoelasticProperties()
This method assigns the mechanical properties of each spring and dashpot in the system.
static InputParameters validParams()
virtual void computeQpViscoelasticPropertiesInv()
This method computes the inverse elasticity tensor of each spring in the system (if required).
void issueGuarantee(const MaterialPropertyName &prop_name, Guarantee guarantee)
bool _has_longterm_dashpot
Indicates if the spring-dashpot assembly has a single dashpot not associated with a spring.
std::vector< Real > _eta_i
The viscosity of each dashpot.
GeneralizedKelvinVoigtModel(const InputParameters ¶meters)
defineLegacyParams(GeneralizedKelvinVoigtModel)
RankFourTensor _S0
The inverse of the elasticity tensor of the first spring.
std::string _elasticity_tensor_name
static InputParameters validParams()
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors
List of elasticity tensor of each subsequent spring in the chain.
std::vector< RankFourTensor > _Ci
The elasticity tensor of each subsequent spring.
unsigned int _components
This is the number of internal variables required by the model.