20 params.addClassDescription(
"Compute a constant isotropic elasticity tensor.");
21 params.addParam<Real>(
"bulk_modulus",
"The bulk modulus for the material.");
22 params.addParam<Real>(
"lambda",
"Lame's first constant for the material.");
23 params.addParam<Real>(
"poissons_ratio",
"Poisson's ratio for the material.");
24 params.addParam<Real>(
"shear_modulus",
"The shear modulus of the material.");
25 params.addParam<Real>(
"youngs_modulus",
"Young's modulus of the material.");
30 const InputParameters & parameters)
32 _bulk_modulus_set(parameters.isParamValid(
"bulk_modulus")),
33 _lambda_set(parameters.isParamValid(
"lambda")),
34 _poissons_ratio_set(parameters.isParamValid(
"poissons_ratio")),
35 _shear_modulus_set(parameters.isParamValid(
"shear_modulus")),
36 _youngs_modulus_set(parameters.isParamValid(
"youngs_modulus")),
37 _bulk_modulus(_bulk_modulus_set ? getParam<Real>(
"bulk_modulus") : -1),
38 _lambda(_lambda_set ? getParam<Real>(
"lambda") : -1),
39 _poissons_ratio(_poissons_ratio_set ? getParam<Real>(
"poissons_ratio") : -1),
40 _shear_modulus(_shear_modulus_set ? getParam<Real>(
"shear_modulus") : -1),
41 _youngs_modulus(_youngs_modulus_set ? getParam<Real>(
"youngs_modulus") : -1),
42 _effective_stiffness_local(parameters.isParamValid(
"effective_stiffness_local"))
46 if (num_elastic_constants != 2)
47 mooseError(
"Exactly two elastic constants must be defined for material '" +
name() +
"'.");
52 if (!isParamValid(
"elasticity_tensor_prefactor"))
56 mooseError(
"Bulk modulus must be positive in material '" +
name() +
"'.");
59 mooseError(
"Poissons ratio must be greater than -1 and less than 0.5 in "
64 mooseError(
"Shear modulus must not be negative in material '" +
name() +
"'.");
67 mooseError(
"Youngs modulus must be positive in material '" +
name() +
"'.");
69 std::vector<Real> iso_const(2);
90 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
101 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
112 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
113 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
122 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
123 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
133 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
134 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
143 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
144 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
154 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
155 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
164 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
165 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
179 std::max(std::sqrt((elas_mod * (1 - poiss_rat)) / ((1 + poiss_rat) * (1 - 2 * poiss_rat))),
180 std::sqrt(elas_mod / (2 * (1 + poiss_rat))));
183 mooseError(
"Incorrect combination of elastic properties in ComputeIsotropicElasticityTensor.");
186 _Cijkl.fillFromInputVector(iso_const, RankFourTensor::symmetric_isotropic);