17 container.addString(
"law",
"Name of the hardening law (e.g. PowerLawHardening)").required(
true);
18 container.addDouble(
"sigma_y",
"Yield strength");
19 container.addDouble(
"eta",
"Plastic viscosity");
22 container.addDouble(
"Hi",
"Isotropic hardening modulus");
25 container.addDouble(
"n",
"Hardening index in reciprocal form");
26 container.addDouble(
"eps0",
"Reference value of accumulated plastic strain");
29 container.addDouble(
"sigma_sat",
"Saturation value of flow strength");
30 container.addDouble(
"strain_constant",
"Constant dictating how fast the exponential decays");
33 container.registerVerifier([](
const axom::inlet::Container& c) ->
bool {
34 axom::inlet::InletType double_type = axom::inlet::InletType::Double;
35 bool sigma_y_present = c.contains(
"sigma_y") && (c[
"sigma_y"].type() == double_type);
36 bool Hi_present = c.contains(
"Hi") && (c[
"Hi"].type() == double_type);
37 bool n_present = c.contains(
"n") && (c[
"n"].type() == double_type);
38 bool eps0_present = c.contains(
"eps0") && (c[
"eps0"].type() == double_type);
39 bool sigma_sat_present = c.contains(
"sigma_sat") && (c[
"sigma_sat"].type() == double_type);
40 bool strain_constant_present = c.contains(
"strain_constant") && (c[
"strain_constant"].type() == double_type);
41 bool eta_present = c.contains(
"eta") && (c[
"eta"].type() == double_type);
43 std::string law = c[
"law"];
44 if (law ==
"LinearHardening") {
45 return sigma_y_present && Hi_present && eta_present && !n_present && !eps0_present && !sigma_sat_present &&
46 !strain_constant_present;
47 }
else if (law ==
"PowerLawHardening") {
48 return sigma_y_present && !Hi_present && n_present && eps0_present && eta_present && !sigma_sat_present &&
49 !strain_constant_present;
50 }
else if (law ==
"VoceHardening") {
51 return sigma_y_present && !Hi_present && eta_present && !n_present && !eps0_present && sigma_sat_present &&
52 strain_constant_present;
64 std::string law = base[
"law"];
65 if (law ==
"LinearHardening") {
67 }
else if (law ==
"PowerLawHardening") {
69 .
sigma_y = base[
"sigma_y"], .n = base[
"n"], .eps0 = base[
"eps0"], .eta = base[
"eta"]};
70 }
else if (law ==
"VoceHardening") {
72 .sigma_sat = base[
"sigma_sat"],
73 .strain_constant = base[
"strain_constant"],
Accelerator functionality.
std::variant< solid_mechanics::LinearHardening, solid_mechanics::PowerLawHardening, solid_mechanics::VoceHardening > var_hardening_t
Holds all possible isotropic hardening laws that can be utilized in our input file.
The material and load types for the solid functional physics module.
smith::var_hardening_t operator()(const axom::inlet::Container &base)
Returns created object from Inlet container.
Linear isotropic hardening law.
double sigma_y
yield strength
Power-law isotropic hardening law.
double sigma_y
yield strength
Voce's isotropic hardening law.
double sigma_y
yield strength