Introduction
Introduction Statistics Contact Development Disclaimer Help
timprove debugging output, save bond-parallel displacement as scalar - slidergr…
git clone git://src.adamsgaard.dk/slidergrid
Log
Files
Refs
README
LICENSE
---
commit dea4dc1c1b2f140a281656f0f58b35625d90d027
parent 3246bf804bdc996d1bd737dbeb3acadad09fae2d
Author: Anders Damsgaard <[email protected]>
Date: Thu, 14 Apr 2016 12:24:45 -0700
improve debugging output, save bond-parallel displacement as scalar
Diffstat:
M slidergrid/debug.h | 8 ++++----
M slidergrid/main.c | 15 ++++++++++++++-
M slidergrid/slider.c | 69 +++++++++++++++++------------…
M slidergrid/slider.h | 2 +-
4 files changed, 58 insertions(+), 36 deletions(-)
---
diff --git a/slidergrid/debug.h b/slidergrid/debug.h
t@@ -6,18 +6,18 @@
//#define DEBUG_FIND_AND_BOND_TO_NEIGHBORS
// if defined, show information on the resolved inter-slider bond deformation
-#define DEBUG_BOND_DEFORMATION
+//#define DEBUG_BOND_DEFORMATION
// if defined, verbose information to stdout will be shown about the individua…
// components of the sum of forces
-#define DEBUG_SLIDER_FORCE_COMPONENTS
+//#define DEBUG_SLIDER_FORCE_COMPONENTS
// if defined, verbose information to stdout will be shown before the slider
// integration
-#define DEBUG_SLIDER_FORCE_TORQUE_AND_NEIGHBORS
+//#define DEBUG_SLIDER_FORCE_TORQUE_AND_NEIGHBORS
// if defined, verbose information to stdout will be shown after the slider
// integration
-#define DEBUG_SLIDER_KINEMATICS
+//#define DEBUG_SLIDER_KINEMATICS
#endif
diff --git a/slidergrid/main.c b/slidergrid/main.c
t@@ -127,6 +127,14 @@ int main(int argc, char** argv)
sim.time <= sim.time_end;
sim.time += sim.dt) {
+#if defined(DEBUG_FIND_AND_BOND_TO_NEIGHBORS) ||\
+ defined(DEBUG_BOND_DEFORMATION) ||\
+ defined(DEBUG_SLIDER_FORCE_COMPONENTS) ||\
+ defined(DEBUG_SLIDER_FORCE_TORQUE_AND_NEIGHBORS) ||\
+ defined(DEBUG_SLIDER_KINEMATICS)
+ printf("\n---- ITERATION %d ----\n", sim.iteration);
+#endif
+
/*for (i=0; i<sim.N; i++)
printf("%d: vel = %f %f %f\n", i,
sim.sliders[i].vel.x,
t@@ -149,6 +157,10 @@ int main(int argc, char** argv)
// resolve slider-to-slider interaction
for (i=0; i<sim.N; i++) {
+#ifdef DEBUG_BOND_DEFORMATION
+ printf("\n-- Loop of slider %d (%p) --\n",
+ i, &sim.sliders[i]);
+#endif
slider_neighbor_interaction(
&sim.sliders[i],
t@@ -159,7 +171,8 @@ int main(int argc, char** argv)
#ifdef DEBUG_SLIDER_FORCE_TORQUE_AND_NEIGHBORS
int j;
- printf("main.c: Slider %d: F = %f %f %f, T = %f %f %f, mass = %f, …
+ printf(" main.c: Slider %d:\n\tF = %f %f %f\n"
+ "\tT = %f %f %f\n\tmass = %f\n\tcontacts = ",
i,
sim.sliders[i].force.x,
sim.sliders[i].force.y,
diff --git a/slidergrid/slider.c b/slidergrid/slider.c
t@@ -41,7 +41,7 @@ void initialize_slider_values(slider* s)
for (i=0; i<MAX_NEIGHBORS; i++) {
s->neighbors[i] = -1;
s->neighbor_distance[i] = zeroes_float3();
- s->neighbor_relative_distance_displacement[i] = zeroes_float3();
+ s->neighbor_relative_distance_displacement[i] = 0.0;
s->neighbor_relative_distance_velocity[i] = zeroes_float3();
s->neighbor_relative_tangential_displacement[i] = zeroes_float3();
s->neighbor_relative_tangential_velocity[i] = zeroes_float3();
t@@ -143,6 +143,17 @@ void bond_parallel_deformation(slider* s1, const slider s…
// unit vector pointing from neighbor (s2) to slider s1
const Float3 n = divide_float3_scalar(dist, dist_norm);
+#ifdef DEBUG_BOND_DEFORMATION
+ printf("\tdist = %f %f %f\n\tdist_norm = %f\n\tn = %f %f %f\n",
+ dist.x,
+ dist.y,
+ dist.z,
+ dist_norm,
+ n.x,
+ n.y,
+ n.z);
+#endif
+
// relative contact interface velocity w/o rolling
const Float3 vel_linear = subtract_float3(s1->vel, s2.vel);
t@@ -165,12 +176,11 @@ void bond_parallel_deformation(slider* s1, const slider …
// total relative displacement in inter-slider distance
if (iteration == 0)
- s1->neighbor_relative_distance_displacement[idx_neighbor] = ddist;
- else
s1->neighbor_relative_distance_displacement[idx_neighbor] =
- add_float3(
- s1->neighbor_relative_distance_displacement[idx_neighbor],
- ddist);
+ dot_float3(n, ddist);
+ else
+ s1->neighbor_relative_distance_displacement[idx_neighbor] +=
+ dot_float3(n, ddist);
// total relative displacement in inter-slider distance
s1->neighbor_relative_distance_velocity[idx_neighbor] =
t@@ -254,13 +264,17 @@ void bond_deformation(slider* s1, const slider s2,
const int idx_neighbor, const int iteration, const Float dt)
{
bond_parallel_deformation(s1, s2, idx_neighbor, iteration);
- bond_normal_deformation(s1, s2, idx_neighbor, iteration, dt);
+ //bond_normal_deformation(s1, s2, idx_neighbor, iteration, dt);
}
void bond_parallel_kelvin_voigt(slider* s1, const slider s2,
const int idx_neighbor)
{
+ // unit vector pointing from neighbor (s2) to slider s1
+ const Float3 n = divide_float3_scalar(s1->neighbor_distance[idx_neighbor],
+ norm_float3(s1->neighbor_distance[idx_neighbor]));
+
// determine the bond-parallel KV stiffness from the harmonic mean.
// differs from Potyondy & Stack 2004, eq. 6.
const Float bond_parallel_kv_stiffness =
t@@ -276,8 +290,9 @@ void bond_parallel_kelvin_voigt(slider* s1, const slider s…
// bond-parallel Kelvin-Voigt elasticity
const Float3 f_n_elastic =
- multiply_scalar_float3(bond_parallel_kv_stiffness,
- s1->neighbor_relative_distance_displacement[idx_neighbor]);
+ multiply_scalar_float3(bond_parallel_kv_stiffness *
+ s1->neighbor_relative_distance_displacement[idx_neighbor],
+ n);
// bond-parallel Kelvin-Voigt viscosity
const Float3 f_n_viscous =
t@@ -292,8 +307,12 @@ void bond_parallel_kelvin_voigt(slider* s1, const slider …
s1->force = add_float3(s1->force, f_n);
#ifdef DEBUG_SLIDER_FORCE_COMPONENTS
- printf("slider_interaction KV-parallel: f_n = %f %f %f, "
- "f_n_elastic = %f %f %f, f_n_viscous = %f %f %f\n",
+ printf(" slider_interaction KV-parallel:\n"
+ "\tn = %f %f %f\n\tf_n = %f %f %f\n\t"
+ "f_n_elastic = %f %f %f\n\tf_n_viscous = %f %f %f\n",
+ n.x,
+ n.y,
+ n.z,
f_n.x,
f_n.y,
f_n.z,
t@@ -354,8 +373,9 @@ void bond_shear_kelvin_voigt(slider* s1, const slider s2,
f_t)));*/
#ifdef DEBUG_SLIDER_FORCE_COMPONENTS
- printf("slider_interaction KV-shear: f_t = %f %f %f, torque = %f %f %f, "
- "f_t_elastic = %f %f %f, f_t_viscous = %f %f %f\n",
+ printf(" slider_interaction KV-shear:\n\tf_t = %f %f %f\n"
+ "\ttorque = %f %f %f\n\t"
+ "f_t_elastic = %f %f %f\n\tf_t_viscous = %f %f %f\n",
f_t.x,
f_t.y,
f_t.z,
t@@ -376,7 +396,7 @@ void bond_shear_kelvin_voigt(slider* s1, const slider s2,
void slider_interaction(slider* s1, const slider s2, const int idx_neighbor)
{
bond_parallel_kelvin_voigt(s1, s2, idx_neighbor);
- //bond_shear_kelvin_voigt(s1, s2, idx_neighbor);
+ bond_shear_kelvin_voigt(s1, s2, idx_neighbor);
}
t@@ -391,32 +411,21 @@ void slider_neighbor_interaction(
int idx_neighbor;
for (idx_neighbor=0; idx_neighbor<MAX_NEIGHBORS; idx_neighbor++) {
- // reset sum of forces and torques on slider
- /*s->force.x = 0.;
- s->force.y = 0.;
- s->force.z = 0.;
- s->torque.x = 0.;
- s->torque.y = 0.;
- s->torque.z = 0.;*/
-
if (s->neighbors[idx_neighbor] != -1) {
+#ifdef DEBUG_BOND_DEFORMATION
+ printf("%p = %d:\n", s, idx_neighbor);
+#endif
bond_deformation(
s, sliders[s->neighbors[idx_neighbor]],
idx_neighbor, iteration, dt);
#ifdef DEBUG_BOND_DEFORMATION
- int j;
- for (j=0; j<MAX_NEIGHBORS; j++)
- printf("%p = %d:\n"
- "\trel_dist_disp = %f %f %f\n"
+ printf("\trel_dist_disp = %f \n"
"\trel_dist_vel = %f %f %f\n"
"\trel_tan_disp = %f %f %f\n"
"\trel_tan_vel = %f %f %f\n",
- s, idx_neighbor,
- s->neighbor_relative_distance_displacement[idx_neighbor].x,
- s->neighbor_relative_distance_displacement[idx_neighbor].y,
- s->neighbor_relative_distance_displacement[idx_neighbor].z,
+ s->neighbor_relative_distance_displacement[idx_neighbor],
s->neighbor_relative_distance_velocity[idx_neighbor].x,
s->neighbor_relative_distance_velocity[idx_neighbor].y,
s->neighbor_relative_distance_velocity[idx_neighbor].z,
diff --git a/slidergrid/slider.h b/slidergrid/slider.h
t@@ -51,7 +51,7 @@ typedef struct {
// relative spatial movement between this slider and its neighbors
Float3 neighbor_distance[MAX_NEIGHBORS];
- Float3 neighbor_relative_distance_displacement[MAX_NEIGHBORS];
+ Float neighbor_relative_distance_displacement[MAX_NEIGHBORS];
Float3 neighbor_relative_distance_velocity[MAX_NEIGHBORS];
Float3 neighbor_relative_tangential_displacement[MAX_NEIGHBORS];
Float3 neighbor_relative_tangential_velocity[MAX_NEIGHBORS];
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.