Introduction
Introduction Statistics Contact Development Disclaimer Help
tadd function to write to VTK files - slidergrid - grid of elastic sliders on a…
git clone git://src.adamsgaard.dk/slidergrid
Log
Files
Refs
README
LICENSE
---
commit 61541ba4e7dc9660c1dd91aba87dc25c282682c7
parent 3008c9edbbaac56bcfe215ade860e106f79127b8
Author: Anders Damsgaard <[email protected]>
Date: Thu, 17 Mar 2016 15:38:43 -0700
add function to write to VTK files
Diffstat:
M slidergrid/simulation.c | 153 +++++++++++++++++++++++++++++…
M slidergrid/slider.h | 6 +++---
2 files changed, 156 insertions(+), 3 deletions(-)
---
diff --git a/slidergrid/simulation.c b/slidergrid/simulation.c
t@@ -142,3 +142,156 @@ int save_general_state_to_file(const simulation sim, con…
fclose(f);
return 0;
}
+
+/* save slider information as an unstructured grid to a VTK xml file. The
+ * filename extension should be '.vtu' in order for Paraview to correctly hand…
+ * the file upon import. See VTK-file-formats.pdf for documentation on the fil…
+ * format. */
+int save_sliders_to_vtk_file(
+ const slider* sliders,
+ const int N,
+ const char* filename)
+{
+ FILE* f = fopen(filename, "w");
+ if (f == NULL) {
+ fprintf(stderr, "Error: Could not open output file %s.", filename);
+ return 1;
+ }
+ int i;
+
+ fprintf(f, "<?xml version=\"1.0\"?>\n");
+ fprintf(f, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" "
+ "byte_order=\"LittleEndian\">\n");
+ fprintf(f, " <UnstructuredGrid>\n");
+ fprintf(f, " <Piece NumberOfPoints=\"%d\" NumberOfCells=\"0\">\n", N);
+ fprintf(f, " <PointData Scalars=\"Mass [kg]\" "
+ "Vectors=\"Position [m]\">\n");
+
+ // positions
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Position [m]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].pos.x, sliders[i].pos.y, sliders[i].pos.z);
+ fprintf(f, " </DataArray>\n");
+
+ // velocities
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Velocity [m/s]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].vel.x, sliders[i].vel.y, sliders[i].vel.z);
+ fprintf(f, " </DataArray>\n");
+
+ // accelerations
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Acceleration [m/(s*s)]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].acc.x, sliders[i].acc.y, sliders[i].acc.z);
+ fprintf(f, " </DataArray>\n");
+
+ // force
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Force [N]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].force.x, sliders[i].force.y, sliders[i].force.z);
+ fprintf(f, " </DataArray>\n");
+
+ // angular positions
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Angular position [m]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].angpos.x, sliders[i].angpos.y, sliders[i].angpos.z);
+ fprintf(f, " </DataArray>\n");
+
+ // angular velocities
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Angular velocity [rad/s]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].angvel.x, sliders[i].angvel.y, sliders[i].angvel.z);
+ fprintf(f, " </DataArray>\n");
+
+ // angular accelerations
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Angular acceleration [rad/(s*s)]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].angacc.x, sliders[i].angacc.y, sliders[i].angacc.z);
+ fprintf(f, " </DataArray>\n");
+
+ // torque
+ fprintf(f, " <DataArray NumberOfComponents=\"3\" type=\"Float32\" "
+ "Name=\"Torque [N*m]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f %f %f ",
+ sliders[i].torque.x, sliders[i].torque.y, sliders[i].torque.z);
+ fprintf(f, " </DataArray>\n");
+
+ // mass
+ fprintf(f, " <DataArray type=\"Float32\" "
+ "Name=\"Mass [kg]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f ", sliders[i].mass);
+ fprintf(f, " </DataArray>\n");
+
+ // moment of inertia
+ fprintf(f, " <DataArray type=\"Float32\" "
+ "Name=\"Moment of inertia [kg*m*m]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f ", sliders[i].moment_of_inertia);
+ fprintf(f, " </DataArray>\n");
+
+ // bond-parallel stiffness
+ fprintf(f, " <DataArray type=\"Float32\" "
+ "Name=\"Bond-parallel stiffness [N/m]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f ", sliders[i].bond_parallel_stiffness);
+ fprintf(f, " </DataArray>\n");
+
+ // bond-parallel viscosity
+ fprintf(f, " <DataArray type=\"Float32\" "
+ "Name=\"Bond-parallel viscosity [N/(m/s)]\" format=\"ascii\">\n");
+ fprintf(f, " ");
+ for (i=0; i<N; i++)
+ fprintf(f, "%f ", sliders[i].bond_parallel_viscosity);
+ fprintf(f, " </DataArray>\n");
+
+ fprintf(f, " </PointData>\n");
+ fprintf(f, " <CellData>\n");
+ fprintf(f, " </CellData>\n");
+ fprintf(f, " <Points>\n");
+ fprintf(f, " </Points>\n");
+ fprintf(f, " <Cells>\n");
+ fprintf(f, " <DataArray type=\"Int32\" Name=\"connectivity\" "
+ "format=\"ascii\">\n");
+ fprintf(f, " </DataArray>\n");
+ fprintf(f, " <DataArray type=\"Int32\" Name=\"offsets\" "
+ "format=\"ascii\">\n");
+ fprintf(f, " </DataArray>\n");
+ fprintf(f, " <DataArray type=\"UInt8\" Name=\"types\" "
+ "format=\"ascii\">\n");
+ fprintf(f, " </DataArray>\n");
+ fprintf(f, " </Cells>\n");
+ fprintf(f, " </Piece>\n");
+ fprintf(f, " </UnstructuredGrid>\n");
+ fprintf(f, "</VTKFile>\n");
+
+ fclose(f);
+ return 0;
+}
+
diff --git a/slidergrid/slider.h b/slidergrid/slider.h
t@@ -13,9 +13,9 @@ typedef struct {
Float3 acc; // [m/(s*s)]
// angular position, velocity, acceleration of this slider
- Float3 angpos; // [m]
- Float3 angvel; // [m/s]
- Float3 angacc; // [m/(s*s)]
+ Float3 angpos; // [rad]
+ Float3 angvel; // [rad/s]
+ Float3 angacc; // [rad/(s*s)]
// sum of forces acting on this slider [N]
Float3 force;
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.