19 "Generalized Maxwell model composed of a parallel assembly of unit Maxwell modules");
20 params.
addRequiredParam<Real>(
"young_modulus",
"initial elastic modulus of the material");
21 params.
addRequiredParam<Real>(
"poisson_ratio",
"initial poisson ratio of the material");
23 "creep_modulus",
"list of the elastic moduli of the different springs in the material");
26 "list of the characteristic times of the different dashpots in the material");
28 "creep_ratio",
"list of the poisson ratios of the different springs in the material");
29 params.
set<
bool>(
"force_recompute_properties") =
false;
36 _Ci(getParam<
std::vector<Real>>(
"creep_modulus").size()),
37 _eta_i(getParam<
std::vector<Real>>(
"creep_viscosity")),
38 _Si(getParam<
std::vector<Real>>(
"creep_modulus").size())
40 Real young_modulus = getParam<Real>(
"young_modulus");
41 Real poisson_ratio = getParam<Real>(
"poisson_ratio");
45 std::vector<Real> creep_modulus = getParam<std::vector<Real>>(
"creep_modulus");
46 std::vector<Real> creep_ratio;
47 if (isParamValid(
"creep_ratio"))
48 creep_ratio = getParam<std::vector<Real>>(
"creep_ratio");
50 creep_ratio.resize(
_Ci.size(), poisson_ratio);
52 if (creep_modulus.size() !=
_Ci.size())
53 mooseError(
"incompatible number of creep moduli and viscosities");
54 if (creep_ratio.size() !=
_Ci.size())
55 mooseError(
"incompatible number of creep ratios and viscosities");
57 mooseError(
"incompatible number of creep ratios and viscosities");
59 for (
unsigned int i = 0; i <
_Ci.size(); ++i)
61 _Ci[i].fillFromInputVector({creep_modulus[i], creep_ratio[i]},
67 if (MooseUtils::absoluteFuzzyEqual(
_C0.
L2norm(), 0.0))
72 for (
unsigned int i = 0; i <
_eta_i.size(); ++i)
74 if (
_eta_i[i] < 0 || MooseUtils::absoluteFuzzyEqual(
_eta_i[i], 0.0))
75 mooseError(
"material viscosity must be strictly > 0");
90 for (
unsigned int i = 0; i <
_Ci.size(); ++i)
93 for (
unsigned int i = 0; i <
_eta_i.size(); ++i)
100 (*_first_elasticity_tensor_inv)[_qp] =
_S0;
102 for (
unsigned int i = 0; i <
_Si.size(); ++i)
registerMooseObject("SolidMechanicsApp", GeneralizedMaxwellModel)
void mooseError(Args &&... args)
std::string _elasticity_tensor_name
This class represents an assembly of springs and dashpots following a generalized Maxwell model (an a...
static InputParameters validParams()
This class is an implementation of a generalized Maxwell model with constant mechanical properties.
virtual void computeQpViscoelasticProperties()
This method assigns the mechanical properties of each spring and dashpot in the system.
std::vector< RankFourTensor > _Ci
The elasticity tensor of each subsequent spring.
std::vector< Real > _eta_i
The viscosity of each dashpot.
RankFourTensor _C0
The elasticity tensor associated with the first spring.
std::vector< RankFourTensor > _Si
The inverse of each subsequent spring elasticity tensor.
RankFourTensor _S0
The inverse of the elasticity tensor of the first spring.
static InputParameters validParams()
GeneralizedMaxwellModel(const InputParameters ¶meters)
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)
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors
List of elasticity tensor of each subsequent spring in the chain.
bool _has_longterm_dashpot
Indicates if the spring-dashpot assembly has a single dashpot not associated with a spring.
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv
virtual void declareViscoelasticProperties()
Declare all necessary MaterialProperties for the model.
std::vector< MaterialProperty< Real > * > _dashpot_viscosities
List of viscosities of each subsequent dashpot in the chain.
unsigned int _components
This is the number of internal variables required by the model.
MaterialProperty< RankFourTensor > & _first_elasticity_tensor
Elasticity tensor of a stand-alone elastic spring in the chain.
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method)
RankFourTensorTempl< T > invSymm() const