Introduction
Introduction Statistics Contact Development Disclaimer Help
twrite all kinematic values to text file - slidergrid - grid of elastic sliders…
git clone git://src.adamsgaard.dk/slidergrid
Log
Files
Refs
README
LICENSE
---
commit 18aacc6e97a8d8b41b307dbd97051738a3218759
parent b315e491a0bfd7a53ef281f41933220f8de8e0c2
Author: Anders Damsgaard <[email protected]>
Date: Wed, 30 Mar 2016 13:37:43 -0700
write all kinematic values to text file
Diffstat:
M slidergrid/simulation.c | 29 +++++++++++++++++++++++++----
M slidergrid/simulation.h | 4 ++--
M slidergrid/slider.c | 21 +++++++++++++++------
3 files changed, 42 insertions(+), 12 deletions(-)
---
diff --git a/slidergrid/simulation.c b/slidergrid/simulation.c
t@@ -102,7 +102,7 @@ Float find_time_step(const slider* sliders, const int N, c…
return safety/sqrt(largest_stiffness/smallest_mass);
}
-int save_slider_positions_to_file(
+int save_slider_data_to_file(
const slider* sliders,
const int N,
const char* filename)
t@@ -115,8 +115,29 @@ int save_slider_positions_to_file(
int i;
for (i=0; i<N; i++)
- fprintf(f, "%f\t%f\t%f\n",
- sliders[i].pos.x, sliders[i].pos.y, sliders[i].pos.z);
+ fprintf(f,
+ "%f\t%f\t%f\t" // pos
+ "%f\t%f\t%f\t" // vel
+ "%f\t%f\t%f\t" // acc
+ "%f\t%f\t%f\t" // force
+ "%f\t%f\t%f\t" // angpos
+ "%f\t%f\t%f\t" // angvel
+ "%f\t%f\t%f\t" // angacc
+ "%f\t%f\t%f\t" // torque
+ "%f\t" // mass
+ "%f" // moment of inertia
+ "\n",
+ sliders[i].pos.x, sliders[i].pos.y, sliders[i].pos.z,
+ sliders[i].vel.x, sliders[i].vel.y, sliders[i].vel.z,
+ sliders[i].acc.x, sliders[i].acc.y, sliders[i].acc.z,
+ sliders[i].force.x, sliders[i].force.y, sliders[i].force.z,
+ sliders[i].angpos.x, sliders[i].angpos.y, sliders[i].angpos.z,
+ sliders[i].angvel.x, sliders[i].angvel.y, sliders[i].angvel.z,
+ sliders[i].angacc.x, sliders[i].angacc.y, sliders[i].angacc.z,
+ sliders[i].torque.x, sliders[i].torque.y, sliders[i].torque.z,
+ sliders[i].mass,
+ sliders[i].moment_of_inertia
+ );
fclose(f);
return 0;
t@@ -307,7 +328,7 @@ int write_simulation_output(simulation* sim, char* output_…
// slider parameters
sprintf(filename, "%s/%s.sliders.%06d.txt",
output_folder, sim->id, sim->file_number);
- if (save_slider_positions_to_file(sim->sliders, sim->N, filename)) {
+ if (save_slider_data_to_file(sim->sliders, sim->N, filename)) {
fprintf(stderr, "\nFatal error: Could not save to output file "
"'%s'.\n", filename);
return 1;
diff --git a/slidergrid/simulation.h b/slidergrid/simulation.h
t@@ -26,8 +26,8 @@ Float find_time_step(const slider* sliders, const int N, con…
// check if simulation parameters have reasonable values
int check_simulation_values(const simulation* sim);
-// save slider positions to a file on the disk
-int save_slider_positions_to_file(
+// save slider information to a file on the disk
+int save_slider_data_to_file(
const slider* sliders,
const int N,
const char* filename);
diff --git a/slidergrid/slider.c b/slidergrid/slider.c
t@@ -127,6 +127,9 @@ void update_kinematics(slider* s, Float dt, long int itera…
s->angvel = add_float3(s->angvel, dangvel_dt);
}
+
+// determine time step increment bond-parallel deformation (tension or
+// compression)
void bond_parallel_deformation(slider* s1, const slider s2,
const int idx_neighbor, const int iteration)
{
t@@ -151,8 +154,8 @@ void bond_parallel_deformation(slider* s1, const slider s2,
// determine projected future displacement
const Float3 dist_future = subtract_float3(s1->pos_future, s2.pos_future);
- // increment in inter-slider distance, divide by two to get displacement
- // over 1 time step
+ // increment in inter-slider distance with central differences, divide by
+ // two to get displacement over 1 time step
const Float3 ddist = divide_float3_scalar(
subtract_float3(dist_future, dist0), 2.0);
t@@ -173,8 +176,11 @@ void bond_parallel_deformation(slider* s1, const slider s…
multiply_float3_scalar(n, vel_n);
}
+
+// determine time step increment bond-oblique deformation (shear, bending,
+// and/or twist)
void bond_normal_deformation(slider* s1, const slider s2,
- const int idx_neighbor, const int iteration)
+ const int idx_neighbor, const int iteration, const Float dt)
{
// vector pointing from neighbor (s2) position to this slider position (s1)
const Float3 dist = subtract_float3(s1->pos, s2.pos);
t@@ -217,14 +223,17 @@ void bond_normal_deformation(slider* s1, const slider s2,
multiply_float3(n, tangential_displacement0_uncor)));
// project future tangential displacement
-
+ const Float3 dtangential_displacement = multiply_float3_scalar(vel_t, dt);
+ const Float3 tangential_displacement_future =
+ add_float3(tangential_displacement0, dtangential_displacement);
// determine dtangential_displacement by central differences
- // use dtangential_displacement for elastic response
+ // use dtangential_displacement for elastic response on shear motion
+
+ // use vel_t for viscous response on shear motion
- // use vel_t for viscous response
}
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.