tsimulation.c: add VTK export for grains - granular - granular dynamics simulation
(HTM) git clone git://src.adamsgaard.dk/granular
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 22b76f0ca163f3753c5f6b973c6320e50edd4491
(DIR) parent 99c38f2f6c2fd472b1056e8cf72e55a56358f573
(HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Fri, 19 Mar 2021 18:32:00 +0100
simulation.c: add VTK export for grains
Diffstat:
M simulation.c | 51 ++++++++++++++++++++++++++++++-
M simulation.h | 5 +----
2 files changed, 51 insertions(+), 5 deletions(-)
---
(DIR) diff --git a/simulation.c b/simulation.c
t@@ -13,7 +13,56 @@ print_grains(FILE *stream, const struct grain *grains, size_t n)
{
size_t i;
- /* fprintf(stream, "N = %zu\n", n); */
for (i = 0; i < n; i++)
grain_print(stream, &grains[i]);
}
+
+void
+print_grains_vtk(FILE *stream, const struct grain *grains, size_t n)
+{
+ size_t i;
+
+ fprintf(stream,
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+ "<VTKFile type=\"UnstructuredGrid\" version=\"1.0\" "
+ "byte_order=\"LittleEndian\">\n"
+ "\t<UnstructuredGrid>\n"
+ "\t\t<Piece NumberOfPoints=\"%zu\" NumberOfCells=\"0\">\n", n);
+ fprintf(stream,
+ "\t\t\t<Points>\n"
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Points\" "
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g %.17g %.17g ",
+ grains[i].pos[0], grains[i].pos[1], grains[i].pos[2]);
+ fprintf(stream, "\n");
+ fprintf(stream,
+ "\t\t\t\t</DataArray>\n"
+ "\t\t\t</Points>\n");
+
+ fprintf(stream,
+ "\t\t\t<Cells>\n"
+ "\t\t\t\t<DataArray type=\"Int32\" Name=\"connectivity\" "
+ "NumberOfComponents=\"1\" format=\"ascii\"/>\n"
+ "\t\t\t\t<DataArray type=\"Int32\" Name=\"offsets\" "
+ "NumberOfComponents=\"1\" format=\"ascii\"/>\n"
+ "\t\t\t\t<DataArray type=\"UInt8\" Name=\"types\" "
+ "NumberOfComponents=\"1\" format=\"ascii\"/>\n"
+ "\t\t\t</Cells>\n");
+
+ fprintf(stream,
+ "\t\t\t<PointData>\n"
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Diameter [m]\" "
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].radius * 2.0);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n"
+ "\t\t\t</PointData>\n");
+
+ fprintf(stream,
+ "\t\t</Piece>\n"
+ "\t</UnstructuredGrid>\n"
+ "</VTKFile>\n");
+}
(DIR) diff --git a/simulation.h b/simulation.h
t@@ -37,12 +37,9 @@ struct simulation {
struct grain *grains;
};
-void init_sim(struct simulation *sim);
void free_sim(struct simulation *sim);
void print_grains(FILE *stream, const struct grain *grains, size_t n);
-
-void write_output_file(struct simulation *sim, const int normalize);
-void print_output(FILE *stream, struct simulation *sim);
+void print_grains_vtk(FILE *stream, const struct grain *grains, size_t n);
#endif