#pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace fesa { struct Hdf5NodeSnapshot final { std::uint64_t dense_index; NodeId id; EntityOrigin origin; Vec3 coordinates; }; struct Hdf5ElementSnapshot final { std::uint64_t dense_index; ElementId id; std::array connectivity; SectionId section; }; struct Hdf5SectionSnapshot final { SectionId id; double shear_area_y; double shear_area_z; ShearPropertySource shear_source; }; struct Hdf5ModelSnapshot final { std::vector nodes; std::vector elements; std::vector sections; }; struct Hdf5ReadResult final { std::optional database; std::vector diagnostics; std::optional model; }; [[nodiscard]] std::vector write_hdf5( const std::filesystem::path& path, const Domain& domain, const ResultDatabase& database); [[nodiscard]] Hdf5ReadResult read_hdf5_results( const std::filesystem::path& path); } // namespace fesa