41 auto const add_time_series = [
this](
Dataset &&dataset,
bool link =
true) {
42 auto const group = dataset.
group;
43 m_datasets.push_back(std::move(dataset));
44 m_datasets.push_back({group,
"step", 1, H5T_NATIVE_INT, 1, link});
45 m_datasets.push_back({group,
"time", 1, H5T_NATIVE_DOUBLE, 1, link});
49 add_time_series({
"/particles/atoms/box/edges",
"value", 2,
50 H5T_NATIVE_DOUBLE, 3,
false});
53 add_time_series({
"/particles/atoms/lees_edwards/offset",
"value", 2,
54 H5T_NATIVE_DOUBLE, 1,
false});
57 add_time_series({
"/particles/atoms/lees_edwards/direction",
"value", 2,
58 H5T_NATIVE_INT, 1,
false});
61 add_time_series({
"/particles/atoms/lees_edwards/normal",
"value", 2,
62 H5T_NATIVE_INT, 1,
false});
66 {
"/particles/atoms/mass",
"value", 2, H5T_NATIVE_DOUBLE, 1,
false});
70 {
"/particles/atoms/charge",
"value", 2, H5T_NATIVE_DOUBLE, 1,
false});
72 add_time_series({
"/particles/atoms/id",
"value", 2, H5T_NATIVE_INT, 1,
false},
76 {
"/particles/atoms/species",
"value", 2, H5T_NATIVE_INT, 1,
false});
80 {
"/particles/atoms/position",
"value", 3, H5T_NATIVE_DOUBLE, 3,
false});
84 {
"/particles/atoms/velocity",
"value", 3, H5T_NATIVE_DOUBLE, 3,
false});
88 {
"/particles/atoms/force",
"value", 3, H5T_NATIVE_DOUBLE, 3,
false});
92 {
"/particles/atoms/image",
"value", 3, H5T_NATIVE_INT, 3,
false});
96 {
"/connectivity/atoms",
"value", 3, H5T_NATIVE_INT, 2,
false});
101 HighFive::File h5md_file(file.string(), HighFive::File::ReadOnly);
103 auto const all_groups_exist =
104 std::ranges::all_of(m_datasets, [&h5md_file](
auto const &d) {
105 return h5md_file.exist(d.group);
107 auto const all_datasets_exist =
108 std::ranges::all_of(m_datasets, [&h5md_file](
auto const &d) {
109 return h5md_file.exist(d.path());
111 return all_groups_exist and all_datasets_exist;