19 "Generalized Maxwell model composed of a parallel assembly of unit Maxwell modules");
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;
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]},
72 for (
unsigned int i = 0; i <
_eta_i.size(); ++i)
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)
std::vector< RankFourTensor > _Si
The inverse of each subsequent spring elasticity tensor.
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors_inv
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
void issueGuarantee(const MaterialPropertyName &prop_name, Guarantee guarantee)
This class represents an assembly of springs and dashpots following a generalized Maxwell model (an a...
virtual void computeQpViscoelasticPropertiesInv()
This method computes the inverse elasticity tensor of each spring in the system (if required)...
std::vector< MaterialProperty< RankFourTensor > * > _springs_elasticity_tensors
List of elasticity tensor of each subsequent spring in the chain.
GeneralizedMaxwellModel(const InputParameters ¶meters)
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method)
void declareViscoelasticProperties()
Declare all necessary MaterialProperties for the model.
bool _has_longterm_dashpot
Indicates if the spring-dashpot assembly has a single dashpot not associated with a spring...
This class is an implementation of a generalized Maxwell model with constant mechanical properties...
registerMooseObject("SolidMechanicsApp", GeneralizedMaxwellModel)
bool isParamValid(const std::string &name) const
virtual void computeQpViscoelasticProperties()
This method assigns the mechanical properties of each spring and dashpot in the system.
std::vector< MaterialProperty< Real > * > _dashpot_viscosities
List of viscosities of each subsequent dashpot in the chain.
MaterialProperty< RankFourTensor > & _first_elasticity_tensor
Elasticity tensor of a stand-alone elastic spring in the chain.
RankFourTensor _S0
The inverse of the elasticity tensor of the first spring.
const T & getParam(const std::string &name) const
unsigned int _components
This is the number of internal variables required by the model.
static InputParameters validParams()
std::vector< Real > _eta_i
The viscosity of each dashpot.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::string _elasticity_tensor_name
void mooseError(Args &&... args) const
std::vector< RankFourTensor > _Ci
The elasticity tensor of each subsequent spring.
RankFourTensor _C0
The elasticity tensor associated with the first spring.
RankFourTensorTempl< T > invSymm() const
static InputParameters validParams()