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
@@ -26,6 +26,8 @@
#include "reference_tolerance_policy.h"
#include "mitc4_drilling_reader.h"
namespace fesa::test {
namespace {
@@ -573,6 +575,7 @@ std::vector<double> ReadDisplacement(const hid_t file,
}
struct Hdf5Projection {
std::optional<Mitc4DrillingDiagnosticsReport> drilling_diagnostics;
std::vector<WideRow> rows;
std::string source_element_type;
std::string internal_formulation;
@@ -619,7 +622,7 @@ Hdf5Projection ReadHdf5(const Mitc4ReferenceCase& reference_case) {
values.begin() + static_cast<std::ptrdiff_t>(row * kComponents.size()),
kComponents.size(), rows[row].values.begin());
}
return {std::move(rows), reference_case.expected_source_element_type,
return {ReadMitc4DrillingReport(file.Get()), std::move(rows), reference_case.expected_source_element_type,
kInternalFormulation, kIntegrationRule};
}
@@ -739,6 +742,7 @@ Result<Mitc4ComparisonReport> Mitc4ReferenceComparison::Compare(
}
Mitc4ComparisonReport report{};
report.drilling_diagnostics = std::move(hdf5.drilling_diagnostics);
report.case_id = reference_case.case_id;
report.source_element_type = std::move(hdf5.source_element_type);
report.internal_formulation = std::move(hdf5.internal_formulation);
@@ -889,7 +893,9 @@ Status Mitc4ReferenceComparison::WriteDeterministicJson(
}
stream.imbue(std::locale::classic());
stream << std::setprecision(std::numeric_limits<double>::max_digits10);
stream << "{\"case_id\":\"" << JsonEscape(report.case_id)
stream << "{\"drilling_diagnostics\":";
WriteDrillingDiagnosticsJson(stream, report.drilling_diagnostics);
stream << ",\"case_id\":\"" << JsonEscape(report.case_id)
<< "\",\"source_element_type\":\""
<< JsonEscape(report.source_element_type)
<< "\",\"internal_formulation\":\""