Add MITC4 drilling diagnostics output and comparison contract

This commit is contained in:
KOKO\Mimi
2026-10-20 09:45:58 +09:00
parent 3d5c296651
commit a73d3fc9ca
31 changed files with 1175 additions and 45 deletions
@@ -123,6 +123,25 @@ TEST(EigenReferenceComparison,
EXPECT_EQ(ok.Value().policy_id, "mitc4-eigen-first-implementation");
EXPECT_DOUBLE_EQ(ok.Value().relative_rms_tolerance, 0.05);
EXPECT_EQ(ok.Value().families.size(), 2U);
EXPECT_FALSE(ok.Value().drilling_diagnostics);
for (const std::string mode : {"direct-initial-director-spring", "legacy-corotated-twist"}) {
f = H5Fopen(h5.string().c_str(), H5F_ACC_RDWR, H5P_DEFAULT);
m = H5Gopen2(f, "/metadata", H5P_DEFAULT);
if (H5Aexists(m, "mitc4_drilling_formulation") > 0) H5Adelete(m, "mitc4_drilling_formulation");
if (H5Aexists(m, "drilling_diagnostics_version") > 0) H5Adelete(m, "drilling_diagnostics_version");
Str(m, "mitc4_drilling_formulation", mode);
U(m, "drilling_diagnostics_version", 1U);
H5Gclose(m);
H5Fclose(f);
const auto compared = fesa::test::EigenReferenceComparison::Compare(reference_case);
ASSERT_TRUE(compared.HasValue());
ASSERT_TRUE(compared.Value().drilling_diagnostics);
EXPECT_EQ(compared.Value().drilling_diagnostics->formulation, mode);
EXPECT_EQ(compared.Value().drilling_diagnostics->version, 1U);
EXPECT_TRUE(compared.Value().drilling_diagnostics->frames.empty());
EXPECT_EQ(compared.Value().families.size(), 2U);
}
// Only synthetic FESA output is changed; each TXT mode remains an independent
// scalar family, including at both inclusive five-percent boundaries.
for (const auto& sample :