@@ -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