Skip to content

Commit

Permalink
Add tests for the Cowper-Symonds and Johnson-Cook's rate sensitivity …
Browse files Browse the repository at this point in the history
…factors
  • Loading branch information
thelfer committed Dec 16, 2024
1 parent de14029 commit ab0567b
Show file tree
Hide file tree
Showing 34 changed files with 2,426 additions and 8 deletions.
12 changes: 6 additions & 6 deletions mfront/src/CowperSymondsStrainRateSensitivityFactor.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ namespace mfront::bbrick {
StrainRateSensitivityFactor::getVariableId("dp0", fid, id);
const auto nn = StrainRateSensitivityFactor::getVariableId("E", fid, id);
const auto dpn = "dp" + fid;
auto c = "const auto " + Rs + " = [&](){\n";
auto c = "const auto " + Rs + " = [&]() -> real {\n";
c += "if(" + dpn + " < strain{0}){\n";
c += " return real{1};\n";
c += "}\n";
Expand Down Expand Up @@ -147,7 +147,7 @@ namespace mfront::bbrick {
const auto nn = StrainRateSensitivityFactor::getVariableId("E", fid, id);
const auto dpn = "dp" + fid;
auto c = this->computeStrainRateSensitivityFactor(bd, fid, id);
c += "const auto " + dRs + " = [&](){\n";
c += "const auto " + dRs + " = [&]() -> real {\n";
c += "if(" + dpn + " < strain{0}){\n";
c += " return real{};\n";
c += "}\n";
Expand All @@ -164,11 +164,11 @@ namespace mfront::bbrick {
c += "if(" + dpn + " < " + delta_p_epsn + "){\n";
c += " return " + initial_slope_n + ";\n";
c += "}\n";
c += "return " + nn + " * (" + Rs + " - 1) / std::max(" + dpn + ", " +
c += "return " + nn + " * (" + Rs + " - 1) / std::max(strain(" + dpn + "), " +
delta_p_epsn + ");\n";
} else {
c += "return " + nn + " * (" + Rs + " - 1) / std::max(" + dpn +
", this->epsilon);\n";
c += "return " + nn + " * (" + Rs + " - 1) / std::max(strain(" + dpn +
"), static_cast<strain>(this->epsilon));\n";
}
c += "}();\n";
return c;
Expand Down Expand Up @@ -216,4 +216,4 @@ namespace mfront::bbrick {
CowperSymondsStrainRateSensitivityFactor::
~CowperSymondsStrainRateSensitivityFactor() = default;

} // end of namespace mfront::bbrick
} // end of namespace mfront::bbrick
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
@DSL Implicit;
@Behaviour StandardElastoViscoPlasticityPlasticityTest22;
@Author Thomas Helfer;
@Date 03 / 12 / 2024;

@Algorithm NewtonRaphson;
@Epsilon 1.e-14;
@Theta 1;

@Parameter real alpha = 0.62;
alpha.setEntryName("ProportionOfIsotropicHardeningRules");

@Parameter stress Ks = 1115.15e6;
Ks.setEntryName("SwiftCoefficient");
@Parameter strain p0s = 0.0013;
p0s.setEntryName("SwiftStrainShift");
@Parameter real ns = 0.31;
ns.setEntryName("SwiftExponent");

@Parameter stress Q1 = 1050.3e6;
Q1.setEntryName("VoceUltimateStrength");
@Parameter real Q2 = 0.445;
Q2.setEntryName("SecondVoceParameter");
@Parameter real Q3 = 13.06;
Q3.setEntryName("ThirdVoceParameter");

@Parameter strainrate dp0cs = 9013;
dp0cs.setEntryName("CowperSymondsReferenceStrainRate");
@Parameter real ncs = 0.31347962382445144;
ncs.setEntryName("CowperSymondsExponent");

@Brick StandardElastoViscoPlasticity{
stress_potential : "Hooke" {young_modulus : 210e9, poisson_ratio : 0.3},
inelastic_flow : "Plastic" {
criterion : "Mises",
isotropic_hardening : "StrainRateSensitive" {
rate_independent_isotropic_hardening :
"Swift" {R0 : "alpha * Ks * (p0s ** ns)", p0 : "p0s", n : "ns"},
rate_independent_isotropic_hardening : "Voce" {
R0 : "(1 - alpha) * Q1 * (1 - Q2)",
Rinf : "(1 - alpha) * Q1",
b : "Q3"
},
rate_sensitivity_factor :
"CowperSymonds" {dp0 : "dp0cs", n : "ncs", Rs_eps : 1e-8}
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
@DSL Implicit;
@Behaviour StandardElastoViscoPlasticityPlasticityTest22_nj;
@Author Thomas Helfer;
@Date 03 / 12 / 2024;

@Algorithm NewtonRaphson_NumericalJacobian;
@PerturbationValueForNumericalJacobianComputation 1e-8;
@Epsilon 1.e-14;
@Theta 1;

@Parameter real alpha = 0.62;
alpha.setEntryName("ProportionOfIsotropicHardeningRules");

@Parameter stress Ks = 1115.15e6;
Ks.setEntryName("SwiftCoefficient");
@Parameter strain p0s = 0.0013;
p0s.setEntryName("SwiftStrainShift");
@Parameter real ns = 0.31;
ns.setEntryName("SwiftExponent");

@Parameter stress Q1 = 1050.3e6;
Q1.setEntryName("VoceUltimateStrength");
@Parameter real Q2 = 0.445;
Q2.setEntryName("SecondVoceParameter");
@Parameter real Q3 = 13.06;
Q3.setEntryName("ThirdVoceParameter");

@Parameter strainrate dp0cs = 9013;
dp0cs.setEntryName("CowperSymondsReferenceStrainRate");
@Parameter real ncs = 0.31347962382445144;
ncs.setEntryName("CowperSymondsExponent");

@Brick StandardElastoViscoPlasticity{
stress_potential : "Hooke" {young_modulus : 210e9, poisson_ratio : 0.3},
inelastic_flow : "Plastic" {
criterion : "Mises",
isotropic_hardening : "StrainRateSensitive" {
rate_independent_isotropic_hardening :
"Swift" {R0 : "alpha * Ks * (p0s ** ns)", p0 : "p0s", n : "ns"},
rate_independent_isotropic_hardening : "Voce" {
R0 : "(1 - alpha) * Q1 * (1 - Q2)",
Rinf : "(1 - alpha) * Q1",
b : "Q3"
},
rate_sensitivity_factor :
"CowperSymonds" {dp0 : "dp0cs", n : "ncs", Rs_eps : 1e-8}
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
@DSL Implicit;
@Behaviour StandardElastoViscoPlasticityPlasticityTest22_qt;
@Author Thomas Helfer;
@Date 03 / 12 / 2024;

@UseQt true;
@Algorithm NewtonRaphson;
@Epsilon 1.e-14;
@Theta 1;

@Parameter real alpha = 0.62;
alpha.setEntryName("ProportionOfIsotropicHardeningRules");

@Parameter stress Ks = 1115.15e6;
Ks.setEntryName("SwiftCoefficient");
@Parameter strain p0s = 0.0013;
p0s.setEntryName("SwiftStrainShift");
@Parameter real ns = 0.31;
ns.setEntryName("SwiftExponent");

@Parameter stress Q1 = 1050.3e6;
Q1.setEntryName("VoceUltimateStrength");
@Parameter real Q2 = 0.445;
Q2.setEntryName("SecondVoceParameter");
@Parameter real Q3 = 13.06;
Q3.setEntryName("ThirdVoceParameter");

@Parameter strainrate dp0cs = 9013;
dp0cs.setEntryName("CowperSymondsReferenceStrainRate");
@Parameter real ncs = 0.31347962382445144;
ncs.setEntryName("CowperSymondsExponent");

@Brick StandardElastoViscoPlasticity{
stress_potential : "Hooke" {young_modulus : 210e9, poisson_ratio : 0.3},
inelastic_flow : "Plastic" {
criterion : "Mises",
isotropic_hardening : "StrainRateSensitive" {
rate_independent_isotropic_hardening :
"Swift" {R0 : "alpha * Ks * (p0s ** ns)", p0 : "p0s", n : "ns"},
rate_independent_isotropic_hardening : "Voce" {
R0 : "(1 - alpha) * Q1 * (1 - Q2)",
Rinf : "(1 - alpha) * Q1",
b : "Q3"
},
rate_sensitivity_factor :
"CowperSymonds" {dp0 : "dp0cs", n : "ncs", Rs_eps : 1e-8}
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
@DSL Implicit;
@Behaviour StandardElastoViscoPlasticityPlasticityTest22_qt_nj;
@Author Thomas Helfer;
@Date 03 / 12 / 2024;

@UseQt true;
@Algorithm NewtonRaphson_NumericalJacobian;
@PerturbationValueForNumericalJacobianComputation 1e-8;
@Epsilon 1.e-14;
@Theta 1;

@Parameter real alpha = 0.62;
alpha.setEntryName("ProportionOfIsotropicHardeningRules");

@Parameter stress Ks = 1115.15e6;
Ks.setEntryName("SwiftCoefficient");
@Parameter strain p0s = 0.0013;
p0s.setEntryName("SwiftStrainShift");
@Parameter real ns = 0.31;
ns.setEntryName("SwiftExponent");

@Parameter stress Q1 = 1050.3e6;
Q1.setEntryName("VoceUltimateStrength");
@Parameter real Q2 = 0.445;
Q2.setEntryName("SecondVoceParameter");
@Parameter real Q3 = 13.06;
Q3.setEntryName("ThirdVoceParameter");

@Parameter strainrate dp0cs = 9013;
dp0cs.setEntryName("CowperSymondsReferenceStrainRate");
@Parameter real ncs = 0.31347962382445144;
ncs.setEntryName("CowperSymondsExponent");

@Brick StandardElastoViscoPlasticity{
stress_potential : "Hooke" {young_modulus : 210e9, poisson_ratio : 0.3},
inelastic_flow : "Plastic" {
criterion : "Mises",
isotropic_hardening : "StrainRateSensitive" {
rate_independent_isotropic_hardening :
"Swift" {R0 : "alpha * Ks * (p0s ** ns)", p0 : "p0s", n : "ns"},
rate_independent_isotropic_hardening : "Voce" {
R0 : "(1 - alpha) * Q1 * (1 - Q2)",
Rinf : "(1 - alpha) * Q1",
b : "Q3"
},
rate_sensitivity_factor :
"CowperSymonds" {dp0 : "dp0cs", n : "ncs", Rs_eps : 1e-8}
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
@DSL Implicit;
@Behaviour StandardElastoViscoPlasticityPlasticityTest23;
@Author Thomas Helfer;
@Date 03 / 12 / 2024;

@Algorithm NewtonRaphson;
@Epsilon 1.e-14;
@Theta 1;

@Parameter real alpha = 0.62;
alpha.setEntryName("ProportionOfIsotropicHardeningRules");

@Parameter stress Ks = 1115.15e6;
Ks.setEntryName("SwiftCoefficient");
@Parameter strain p0s = 0.0013;
p0s.setEntryName("SwiftStrainShift");
@Parameter real ns = 0.31;
ns.setEntryName("SwiftExponent");

@Parameter stress Q1 = 1050.3e6;
Q1.setEntryName("VoceUltimateStrength");
@Parameter real Q2 = 0.445;
Q2.setEntryName("SecondVoceParameter");
@Parameter real Q3 = 13.06;
Q3.setEntryName("ThirdVoceParameter");

@Parameter strainrate dp0cs = 9013;
dp0cs.setEntryName("CowperSymondsReferenceStrainRate");
@Parameter real ncs = 3.2;
ncs.setEntryName("CowperSymondsExponent");

@Brick StandardElastoViscoPlasticity{
stress_potential : "Hooke" {young_modulus : 210e9, poisson_ratio : 0.3},
inelastic_flow : "Plastic" {
criterion : "Mises",
isotropic_hardening : "StrainRateSensitive" {
rate_independent_isotropic_hardening :
"Swift" {R0 : "alpha * Ks * (p0s ** ns)", p0 : "p0s", n : "ns"},
rate_independent_isotropic_hardening : "Voce" {
R0 : "(1 - alpha) * Q1 * (1 - Q2)",
Rinf : "(1 - alpha) * Q1",
b : "Q3"
},
rate_sensitivity_factor : "CowperSymonds" {dp0 : "dp0cs", n : "ncs"}
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
@DSL Implicit;
@Behaviour StandardElastoViscoPlasticityPlasticityTest23_nj;
@Author Thomas Helfer;
@Date 03 / 12 / 2024;

@Algorithm NewtonRaphson_NumericalJacobian;
@PerturbationValueForNumericalJacobianComputation 1e-8;
@Epsilon 1.e-14;
@Theta 1;

@Parameter real alpha = 0.62;
alpha.setEntryName("ProportionOfIsotropicHardeningRules");

@Parameter stress Ks = 1115.15e6;
Ks.setEntryName("SwiftCoefficient");
@Parameter strain p0s = 0.0013;
p0s.setEntryName("SwiftStrainShift");
@Parameter real ns = 0.31;
ns.setEntryName("SwiftExponent");

@Parameter stress Q1 = 1050.3e6;
Q1.setEntryName("VoceUltimateStrength");
@Parameter real Q2 = 0.445;
Q2.setEntryName("SecondVoceParameter");
@Parameter real Q3 = 13.06;
Q3.setEntryName("ThirdVoceParameter");

@Parameter strainrate dp0cs = 9013;
dp0cs.setEntryName("CowperSymondsReferenceStrainRate");
@Parameter real ncs = 3.2;
ncs.setEntryName("CowperSymondsExponent");

@Brick StandardElastoViscoPlasticity{
stress_potential : "Hooke" {young_modulus : 210e9, poisson_ratio : 0.3},
inelastic_flow : "Plastic" {
criterion : "Mises",
isotropic_hardening : "StrainRateSensitive" {
rate_independent_isotropic_hardening :
"Swift" {R0 : "alpha * Ks * (p0s ** ns)", p0 : "p0s", n : "ns"},
rate_independent_isotropic_hardening : "Voce" {
R0 : "(1 - alpha) * Q1 * (1 - Q2)",
Rinf : "(1 - alpha) * Q1",
b : "Q3"
},
rate_sensitivity_factor : "CowperSymonds" {dp0 : "dp0cs", n : "ncs"}
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
@DSL Implicit;
@Behaviour StandardElastoViscoPlasticityPlasticityTest23_qt;
@Author Thomas Helfer;
@Date 03 / 12 / 2024;
@UseQt true;

@Algorithm NewtonRaphson;
@Epsilon 1.e-14;
@Theta 1;

@Parameter real alpha = 0.62;
alpha.setEntryName("ProportionOfIsotropicHardeningRules");

@Parameter stress Ks = 1115.15e6;
Ks.setEntryName("SwiftCoefficient");
@Parameter strain p0s = 0.0013;
p0s.setEntryName("SwiftStrainShift");
@Parameter real ns = 0.31;
ns.setEntryName("SwiftExponent");

@Parameter stress Q1 = 1050.3e6;
Q1.setEntryName("VoceUltimateStrength");
@Parameter real Q2 = 0.445;
Q2.setEntryName("SecondVoceParameter");
@Parameter real Q3 = 13.06;
Q3.setEntryName("ThirdVoceParameter");

@Parameter strainrate dp0cs = 9013;
dp0cs.setEntryName("CowperSymondsReferenceStrainRate");
@Parameter real ncs = 3.2;
ncs.setEntryName("CowperSymondsExponent");

@Brick StandardElastoViscoPlasticity{
stress_potential : "Hooke" {young_modulus : 210e9, poisson_ratio : 0.3},
inelastic_flow : "Plastic" {
criterion : "Mises",
isotropic_hardening : "StrainRateSensitive" {
rate_independent_isotropic_hardening :
"Swift" {R0 : "alpha * Ks * (p0s ** ns)", p0 : "p0s", n : "ns"},
rate_independent_isotropic_hardening : "Voce" {
R0 : "(1 - alpha) * Q1 * (1 - Q2)",
Rinf : "(1 - alpha) * Q1",
b : "Q3"
},
rate_sensitivity_factor : "CowperSymonds" {dp0 : "dp0cs", n : "ncs"}
}
}
};
Loading

0 comments on commit ab0567b

Please sign in to comment.