Connect MITC4 drilling evidence across analysis procedures
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user