Skip to content

Commit 796634f

Browse files
added xdmf
1 parent 1c9dc3e commit 796634f

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

src/io/hdf5_save.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,46 @@ void SaveHDF5(const std::vector<Particle>& p, const std::string& filename)
5757
H5Sclose(space1);
5858
H5Gclose(group);
5959
H5Fclose(file);
60+
61+
// ===============================
62+
// Write XDMF sidecar for ParaView
63+
// ===============================
64+
std::string xdmf = filename.substr(0, filename.find_last_of('.')) + ".xdmf";
65+
std::ofstream xmf(xdmf);
66+
67+
xmf << "<?xml version=\"1.0\" ?>\n";
68+
xmf << "<Xdmf Version=\"3.0\">\n";
69+
xmf << " <Domain>\n";
70+
xmf << " <Grid Name=\"Particles\" GridType=\"Uniform\">\n";
71+
xmf << " <Topology TopologyType=\"Polyvertex\" NumberOfElements=\"" << N << "\"/>\n";
72+
xmf << " <Geometry GeometryType=\"XYZ\">\n";
73+
xmf << " <DataItem Dimensions=\"" << N << " 3\" NumberType=\"Float\" Precision=\"4\" Format=\"HDF\">\n";
74+
xmf << " " << filename << ":/PartType1/Coordinates\n";
75+
xmf << " </DataItem>\n";
76+
xmf << " </Geometry>\n";
77+
78+
xmf << " <Attribute Name=\"Velocity\" AttributeType=\"Vector\" Center=\"Node\">\n";
79+
xmf << " <DataItem Dimensions=\"" << N << " 3\" NumberType=\"Float\" Precision=\"4\" Format=\"HDF\">\n";
80+
xmf << " " << filename << ":/PartType1/Velocities\n";
81+
xmf << " </DataItem>\n";
82+
xmf << " </Attribute>\n";
83+
84+
xmf << " <Attribute Name=\"Mass\" AttributeType=\"Scalar\" Center=\"Node\">\n";
85+
xmf << " <DataItem Dimensions=\"" << N << "\" NumberType=\"Float\" Precision=\"4\" Format=\"HDF\">\n";
86+
xmf << " " << filename << ":/PartType1/Masses\n";
87+
xmf << " </DataItem>\n";
88+
xmf << " </Attribute>\n";
89+
90+
xmf << " <Attribute Name=\"ID\" AttributeType=\"Scalar\" Center=\"Node\">\n";
91+
xmf << " <DataItem Dimensions=\"" << N << "\" NumberType=\"Int\" Precision=\"4\" Format=\"HDF\">\n";
92+
xmf << " " << filename << ":/PartType1/ParticleIDs\n";
93+
xmf << " </DataItem>\n";
94+
xmf << " </Attribute>\n";
95+
96+
xmf << " </Grid>\n";
97+
xmf << " </Domain>\n";
98+
xmf << "</Xdmf>\n";
99+
100+
xmf.close();
101+
60102
}

0 commit comments

Comments
 (0)