Connect MITC4 drilling evidence across analysis procedures

This commit is contained in:
KOKO\Mimi
2026-10-20 09:21:39 +09:00
parent 294ffbf8a1
commit c6188b3ad7
30 changed files with 763 additions and 28 deletions
+16
View File
@@ -958,6 +958,22 @@ Result<ElementResultBundle> Mitc4Shell::Recover(
ShellElementResultRows rows{};
rows.rows.reserve(kNodeCount);
rows.physical_strain_energy = recovered.Value().strain_energy;
const auto stiffness = Stiffness();
if (!stiffness.HasValue())
return Result<ElementResultBundle>::Failure(stiffness.GetStatus());
const Vector drilling_force =
stiffness.Value().drilling_global24.Multiply(element_displacement);
rows.drilling_mode = DrillingMode();
Vector3 drilling_moment;
for (std::size_t node = 0U; node < kNodeCount; ++node) {
const std::size_t first = 6U * node;
const Vector3 force{drilling_force[first], drilling_force[first + 1U],
drilling_force[first + 2U]};
const Vector3 moment{drilling_force[first + 3U], drilling_force[first + 4U],
drilling_force[first + 5U]};
drilling_moment = drilling_moment + coordinates_[node].Cross(force) + moment;
}
rows.drilling_moment = drilling_moment.Components();
for (std::size_t point = 0U; point < recovered.Value().points.size();
++point) {
const auto& physical_point = recovered.Value().points[point];