Add MITC4 drilling diagnostics output and comparison contract
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
#ifndef FESA_TESTS_REFERENCE_MITC4_DRILLING_REPORT_H_
|
||||
#define FESA_TESTS_REFERENCE_MITC4_DRILLING_REPORT_H_
|
||||
|
||||
#include <array>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace fesa::test {
|
||||
|
||||
struct Mitc4DrillingFrameReport {
|
||||
std::string storage_step;
|
||||
std::uint64_t frame_index;
|
||||
std::array<double, 6> raw_equilibrium;
|
||||
std::array<double, 3> drilling_moment;
|
||||
std::array<double, 6> equilibrium_with_drilling;
|
||||
};
|
||||
|
||||
struct Mitc4DrillingDiagnosticsReport {
|
||||
std::string formulation;
|
||||
std::uint64_t version;
|
||||
std::vector<Mitc4DrillingFrameReport> frames;
|
||||
};
|
||||
|
||||
inline void WriteDrillingDiagnosticsJson(
|
||||
std::ostream& stream, const std::optional<Mitc4DrillingDiagnosticsReport>& report) {
|
||||
if (!report) { stream << "null"; return; }
|
||||
stream << "{\"formulation\":\"" << report->formulation
|
||||
<< "\",\"version\":" << report->version << ",\"frames\":[";
|
||||
const auto numbers = [&](const auto& values) {
|
||||
stream << '[';
|
||||
for (std::size_t i = 0; i < values.size(); ++i) {
|
||||
if (i != 0U) stream << ',';
|
||||
stream << values[i];
|
||||
}
|
||||
stream << ']';
|
||||
};
|
||||
for (std::size_t i = 0; i < report->frames.size(); ++i) {
|
||||
if (i != 0U) stream << ',';
|
||||
const auto& frame = report->frames[i];
|
||||
stream << "{\"storage_step\":\"Step-1\",\"frame_index\":" << frame.frame_index
|
||||
<< ",\"raw_equilibrium\":";
|
||||
numbers(frame.raw_equilibrium);
|
||||
stream << ",\"drilling_moment\":";
|
||||
numbers(frame.drilling_moment);
|
||||
stream << ",\"equilibrium_with_drilling\":";
|
||||
numbers(frame.equilibrium_with_drilling);
|
||||
stream << '}';
|
||||
}
|
||||
stream << "]}";
|
||||
}
|
||||
|
||||
} // namespace fesa::test
|
||||
|
||||
#endif // FESA_TESTS_REFERENCE_MITC4_DRILLING_REPORT_H_
|
||||
Reference in New Issue
Block a user