feat(cpp-object-oriented-modular-refactoring): step 14 - runtime-element-factory

This commit is contained in:
KOKO\Mimi
2026-08-16 09:38:30 +09:00
parent ace493ee57
commit aaa488211b
14 changed files with 991 additions and 27 deletions
+10 -10
View File
@@ -535,7 +535,7 @@ TEST(EulerBeam3D, HermiteAndBMatrixMatchReviewedSigns) {
displacement[10U] = -slope(w, length);
displacement[11U] = slope(v, length);
const BeamRecovery recovery = beam.Recover(displacement);
const BeamRecovery recovery = beam.RecoverBeam(displacement);
const double inverse_sqrt_three = 1.0 / std::sqrt(3.0);
const std::array<double, 2> gauss_xi = {-inverse_sqrt_three,
inverse_sqrt_three};
@@ -718,7 +718,7 @@ TEST(EulerBeam3D, RotatedTransformPreservesWorkAndEnergy) {
ExpectScaledNear(global_variation.Dot(global_force),
local_variation.Dot(local_force), kMatrixTolerance);
const BeamRecovery recovery = beam.Recover(global_displacement);
const BeamRecovery recovery = beam.RecoverBeam(global_displacement);
EXPECT_NEAR(recovery.gauss_generalized_strains[0U][0U],
(local_displacement[6U] - local_displacement[0U]) / 3.0, 1.0e-14);
}
@@ -738,7 +738,7 @@ TEST(EulerBeam3D, PreservesExactRotatedResultsAcrossVector3Migration) {
for (std::size_t index = 0U; index < displacement.Size(); ++index) {
displacement[index] = 0.01 * static_cast<double>(index + 1U) - 0.04;
}
const BeamRecovery recovery = beam.Recover(displacement);
const BeamRecovery recovery = beam.RecoverBeam(displacement);
EXPECT_DOUBLE_EQ(global(0U, 0U), 0x1.65f135da12f68p+28);
EXPECT_DOUBLE_EQ(global(0U, 1U), 0x1.6261c084bda12p+28);
@@ -829,7 +829,7 @@ TEST(EulerBeam3D, AnalyticalAxialTorsionAndTwoPlaneBendingRecover) {
axial[6U],
axial_force * length / (material.youngs_modulus * section.area),
kAnalyticalTolerance);
const BeamRecovery axial_recovery = beam.Recover(axial);
const BeamRecovery axial_recovery = beam.RecoverBeam(axial);
ExpectRelativeNear(axial_recovery.equilibrium_end_actions[0U][0U],
-axial_force, kAnalyticalTolerance);
ExpectRelativeNear(axial_recovery.equilibrium_end_actions[1U][0U],
@@ -846,7 +846,7 @@ TEST(EulerBeam3D, AnalyticalAxialTorsionAndTwoPlaneBendingRecover) {
torsion[9U],
torque * length / (shear_modulus * section.torsional_constant),
kAnalyticalTolerance);
const BeamRecovery torsion_recovery = beam.Recover(torsion);
const BeamRecovery torsion_recovery = beam.RecoverBeam(torsion);
ExpectRelativeNear(torsion_recovery.equilibrium_end_actions[0U][3U], -torque,
kAnalyticalTolerance);
ExpectRelativeNear(torsion_recovery.equilibrium_end_actions[1U][3U], torque,
@@ -865,7 +865,7 @@ TEST(EulerBeam3D, AnalyticalAxialTorsionAndTwoPlaneBendingRecover) {
local_yforce * length * length /
(2.0 * material.youngs_modulus * section.i22),
kAnalyticalTolerance);
const BeamRecovery local_yrecovery = beam.Recover(local_y);
const BeamRecovery local_yrecovery = beam.RecoverBeam(local_y);
ExpectRelativeNear(local_yrecovery.equilibrium_end_actions[0U][1U],
-local_yforce, kAnalyticalTolerance);
ExpectRelativeNear(local_yrecovery.equilibrium_end_actions[1U][1U],
@@ -887,7 +887,7 @@ TEST(EulerBeam3D, AnalyticalAxialTorsionAndTwoPlaneBendingRecover) {
-local_zforce * length * length /
(2.0 * material.youngs_modulus * section.i11),
kAnalyticalTolerance);
const BeamRecovery local_zrecovery = beam.Recover(local_z);
const BeamRecovery local_zrecovery = beam.RecoverBeam(local_z);
ExpectRelativeNear(local_zrecovery.equilibrium_end_actions[0U][2U],
-local_zforce, kAnalyticalTolerance);
ExpectRelativeNear(local_zrecovery.equilibrium_end_actions[1U][2U],
@@ -1028,7 +1028,7 @@ TEST(EulerBeam3D, RecoversSectionPointAndDefaultCentroidS11) {
displacement[10U] = kappa_y * length;
displacement[11U] = kappa_z * length;
const BeamRecovery recovery = beam.Recover(displacement);
const BeamRecovery recovery = beam.RecoverBeam(displacement);
ASSERT_EQ(recovery.stress_points.size(), 4U);
for (std::size_t gauss_point = 0; gauss_point < 2U; ++gauss_point) {
for (std::size_t point = 0; point < section.section_points.size();
@@ -1050,7 +1050,7 @@ TEST(EulerBeam3D, RecoversSectionPointAndDefaultCentroidS11) {
}
const auto default_beam = AlignedBeam(length, MakeSection(), material);
const BeamRecovery default_recovery = default_beam.Recover(displacement);
const BeamRecovery default_recovery = default_beam.RecoverBeam(displacement);
ASSERT_EQ(default_recovery.stress_points.size(), 2U);
for (std::size_t gauss_point = 0; gauss_point < 2U; ++gauss_point) {
const BeamStressPoint& stress = default_recovery.stress_points[gauss_point];
@@ -1091,7 +1091,7 @@ TEST(EulerBeam3D, ReproducesConstantStrainTwistAndCurvaturePatches) {
shear_modulus * section.torsional_constant * twist,
material.youngs_modulus * section.i11 * kappa_y,
material.youngs_modulus * section.i22 * kappa_z};
const BeamRecovery recovery = beam.Recover(displacement);
const BeamRecovery recovery = beam.RecoverBeam(displacement);
for (std::size_t point = 0; point < 2U; ++point) {
for (std::size_t component = 0; component < 4U; ++component) {
ExpectScaledNear(recovery.gauss_generalized_strains[point][component],