Introduction
Introduction Statistics Contact Development Disclaimer Help
tsimulation.c: add remaining fields to VTK output - granular - granular dynamic…
git clone git://src.adamsgaard.dk/granular
Log
Files
Refs
README
LICENSE
---
commit 2fdfacdd7bf02059dfd4531d0e04fc3ad9822d92
parent e19a5c31b7b04c8849ed5d8af8582eea0e765330
Author: Anders Damsgaard <[email protected]>
Date: Thu, 25 Mar 2021 19:08:19 +0100
simulation.c: add remaining fields to VTK output
Diffstat:
M simulation.c | 291 +++++++++++++++++++++++++++--…
1 file changed, 261 insertions(+), 30 deletions(-)
---
diff --git a/simulation.c b/simulation.c
t@@ -69,51 +69,282 @@ sim_print_grains(FILE *stream, const struct simulation *s…
void
print_grains_vtk(FILE *stream, const struct grain *grains, size_t n)
{
- size_t i;
+ size_t i, d;
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\"…
+ "<?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");
+ "\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]);
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].pos[d]);
fprintf(stream, "\n");
fprintf(stream,
- "\t\t\t\t</DataArray>\n"
- "\t\t\t</Points>\n");
+ "\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<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");
+ "\t\t\t<PointData Scalars=\"Diameter [m]\" "
+ "Vectors=\"Angular position [-]\">\n");
fprintf(stream,
- "\t\t\t<PointData>\n"
- "\t\t\t\t<DataArray type=\"Float64\" Name=\"Diameter […
- "NumberOfComponents=\"1\" format=\"ascii\">\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");
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Velocity [m/s]\" "
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].vel[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Acceleration [m/s^…
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].acc[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Force [N]\" "
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].force[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Angular position […
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].angpos[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Angular velocity […
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].angvel[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Angular accelerati…
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].angacc[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Torque [N/m]\" "
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].torque[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Displacement [N]\"…
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].disp[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"External body forc…
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].forceext[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Density [kg/m^3]\"…
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].density);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Int64\" Name=\"Fixed [-]\" "
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%d ", grains[i].fixed);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Int64\" Name=\"Rotating [-]\" "
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%d ", grains[i].rotating);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Int64\" Name=\"Enabled [-]\" "
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%d ", grains[i].enabled);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Young's modulus [P…
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].youngs_modulus);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Poisson's ratio [-…
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].poissons_ratio);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Friction coefficie…
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].friction_coeff);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Tensile strength […
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].tensile_strength);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Shear strength [Pa…
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].shear_strength);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Fracture toughness…
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].fracture_toughness);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"UInt64\" Name=\"Grid position [-]\"…
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%zu ", grains[i].gridpos[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"UInt64\" Name=\"Number of contacts …
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%zu ", grains[i].ncontacts);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Contact stress [Pa…
+ "NumberOfComponents=\"3\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ for (d = 0; d < 3; d++)
+ fprintf(stream, "%.17g ", grains[i].contact_stress[d]);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Float64\" Name=\"Thermal energy [J]…
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%.17g ", grains[i].thermal_energy);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream,
+ "\t\t\t\t<DataArray type=\"Int64\" Name=\"Color [-]\" "
+ "NumberOfComponents=\"1\" format=\"ascii\">\n");
+ for (i = 0; i < n; i++)
+ fprintf(stream, "%d ", grains[i].color);
+ fprintf(stream,
+ "\n"
+ "\t\t\t\t</DataArray>\n");
+
+ fprintf(stream, "\t\t\t</PointData>\n");
fprintf(stream,
- "\t\t</Piece>\n"
- "\t</UnstructuredGrid>\n"
- "</VTKFile>\n");
+ "\t\t</Piece>\n"
+ "\t</UnstructuredGrid>\n"
+ "</VTKFile>\n");
}
void
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.