Add MITC4 drilling diagnostics output and comparison contract
This commit is contained in:
@@ -17,6 +17,8 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "io/hdf5/mitc4_drilling_diagnostics.h"
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr const char* kStepRoot = "/steps/Step-1/frames/0";
|
||||
@@ -525,4 +527,40 @@ TEST(Mitc4ShellCli, WritesShellHdf5ThroughTheExistingApplicationRoute) {
|
||||
const auto result = RunApplication({input.string()});
|
||||
ASSERT_EQ(result.exit_code, 0) << result.standard_error;
|
||||
ExpectShellHdf5Identity(output, input);
|
||||
const auto file = OpenFile(output);
|
||||
const auto drilling = fesa::hdf5_internal::ReadDrillingDiagnostics(file.Get());
|
||||
ASSERT_TRUE(drilling);
|
||||
EXPECT_EQ(drilling->formulation, "direct-initial-director-spring");
|
||||
EXPECT_EQ(drilling->version, 1U);
|
||||
ASSERT_EQ(drilling->frames.size(), 1U);
|
||||
EXPECT_EQ(drilling->frames.front().frame_index, 0U);
|
||||
}
|
||||
|
||||
|
||||
TEST(Mitc4ShellCli, DrillingActualHhtPipelineWritesInitialAndAcceptedDiagnostics) {
|
||||
TempDirectory directory{"shell-drilling-hht"};
|
||||
const auto input = directory.Path() / "shell.inp";
|
||||
const auto output = directory.Path() / "shell_results.h5";
|
||||
std::string deck = AllConstrainedShellDeck();
|
||||
const auto material = deck.find("*Material, name=Steel\n");
|
||||
ASSERT_NE(material, std::string::npos);
|
||||
deck.insert(material + std::string{"*Material, name=Steel\n"}.size(), "*Density\n2.\n");
|
||||
const auto step = deck.find("*Step,");
|
||||
ASSERT_NE(step, std::string::npos);
|
||||
deck.replace(step, std::string::npos,
|
||||
"*Step, name=Load, nlgeom=YES\n*Dynamic, Direct\n0.25, 0.5\n*Cload\nAll, 3, 1.\n*End Step\n");
|
||||
WriteText(input, deck);
|
||||
const auto result = RunApplication({input.string()});
|
||||
ASSERT_EQ(result.exit_code, 0) << result.standard_error;
|
||||
const auto file = OpenFile(output);
|
||||
const auto drilling = fesa::hdf5_internal::ReadDrillingDiagnostics(file.Get());
|
||||
ASSERT_TRUE(drilling);
|
||||
EXPECT_EQ(drilling->formulation, "direct-initial-director-spring");
|
||||
ASSERT_EQ(drilling->frames.size(), 3U);
|
||||
for (std::size_t i = 0; i < 3U; ++i) {
|
||||
EXPECT_EQ(drilling->frames[i].frame_index, i);
|
||||
EXPECT_EQ(drilling->frames[i].raw_equilibrium, (std::array<double, 6>{}));
|
||||
EXPECT_EQ(drilling->frames[i].drilling_moment, (std::array<double, 3>{}));
|
||||
EXPECT_EQ(drilling->frames[i].equilibrium_with_drilling, (std::array<double, 6>{}));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user