Preserve empty MITC4 hidden-constraint boundary

This commit is contained in:
KOKO\Mimi
2026-10-20 09:27:58 +09:00
parent c6188b3ad7
commit df1bf94369
3 changed files with 90 additions and 12 deletions
@@ -1938,4 +1938,24 @@ TEST(Mitc4DrillingEvidence, DirectHiddenCertificateUsesCanonicalPrimitive) {
EXPECT_DOUBLE_EQ(frame.hidden_velocity_defect[row], 0.0);
EXPECT_DOUBLE_EQ(frame.hidden_acceleration_defect[row], 0.0);
}
const auto accepted = frame;
for (const bool missing : {true, false}) {
auto invalid = assembly.Value();
if (missing)
invalid.hidden_constraint = fesa::Vector(0U);
else
invalid.hidden_constraint[0U] = std::numeric_limits<double>::infinity();
const auto rejected = fesa::hht_internal::CompleteConstraintEvidence(
*fixture.domain, fixture.dofs, invalid, length.Value(), null_nodes,
positive, tangent, &frame);
EXPECT_FALSE(rejected.IsOk());
for (const auto& pair : {
std::make_pair(&frame.hidden_constraint, &accepted.hidden_constraint),
std::make_pair(&frame.hidden_velocity_defect, &accepted.hidden_velocity_defect),
std::make_pair(&frame.hidden_acceleration_defect, &accepted.hidden_acceleration_defect)}) {
ASSERT_EQ(pair.first->Size(), pair.second->Size());
for (std::size_t row = 0U; row < pair.first->Size(); ++row)
ExpectSameBits((*pair.first)[row], (*pair.second)[row]);
}
}
}