Go to the documentation of this file.
20 params.addClassDescription(
21 "Generalized Maxwell model composed of a parallel assembly of unit Maxwell 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);
47 std::vector<Real> creep_modulus = getParam<std::vector<Real>>(
"creep_modulus");
48 std::vector<Real> creep_ratio;
49 if (isParamValid(
"creep_ratio"))
50 creep_ratio = getParam<std::vector<Real>>(
"creep_ratio");
52 creep_ratio.resize(
_Ci.size(), poisson_ratio);
54 if (creep_modulus.size() !=
_Ci.size())
55 mooseError(
"incompatible number of creep moduli and viscosities");
56 if (creep_ratio.size() !=
_Ci.size())
57 mooseError(
"incompatible number of creep ratios and viscosities");
59 mooseError(
"incompatible number of creep ratios and viscosities");
61 for (
unsigned int i = 0; i <
_Ci.size(); ++i)
63 _Ci[i].fillFromInputVector({creep_modulus[i], creep_ratio[i]},
64 RankFourTensor::symmetric_isotropic_E_nu);
69 if (MooseUtils::absoluteFuzzyEqual(
_C0.L2norm(), 0.0))
74 for (
unsigned int i = 0; i <
_eta_i.size(); ++i)
76 if (
_eta_i[i] < 0 || MooseUtils::absoluteFuzzyEqual(
_eta_i[i], 0.0))
77 mooseError(
"material viscosity must be strictly > 0");
92 for (
unsigned int i = 0; i <
_Ci.size(); ++i)
95 for (
unsigned int i = 0; i <
_eta_i.size(); ++i)
102 (*_first_elasticity_tensor_inv)[_qp] =
_S0;
104 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.
std::vector< RankFourTensor > _Si
The inverse of each subsequent spring elasticity tensor.
defineLegacyParams(GeneralizedMaxwellModel)
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv
std::vector< MaterialProperty< Real > * > _dashpot_viscosities
List of viscosities of each subsequent dashpot in the chain.
virtual void computeQpViscoelasticPropertiesInv()
This method computes the inverse elasticity tensor of each spring in the system (if required).
void declareViscoelasticProperties()
Declare all necessary MaterialProperties for the model.
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.
virtual void computeQpViscoelasticProperties()
This method assigns the mechanical properties of each spring and dashpot in the system.
GeneralizedMaxwellModel(const InputParameters ¶meters)
This class represents an assembly of springs and dashpots following a generalized Maxwell model (an a...
RankFourTensor _S0
The inverse of the elasticity tensor of the first spring.
This class is an implementation of a generalized Maxwell model with constant mechanical properties.
RankFourTensor _C0
The elasticity tensor associated with the first spring.
std::vector< Real > _eta_i
The viscosity of each dashpot.
std::string _elasticity_tensor_name
std::vector< RankFourTensor > _Ci
The elasticity tensor of each subsequent spring.
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors
List of elasticity tensor of each subsequent spring in the chain.
static InputParameters validParams()
static InputParameters validParams()
registerMooseObject("TensorMechanicsApp", GeneralizedMaxwellModel)
unsigned int _components
This is the number of internal variables required by the model.