tadd debugging information for bond deformation - slidergrid - grid of elastic sliders on a frictional surface
(HTM) git clone git://src.adamsgaard.dk/slidergrid
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 3246bf804bdc996d1bd737dbeb3acadad09fae2d
(DIR) parent f42ed36e0b3fd01a46ca70e29a11c5ded205f809
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Tue, 12 Apr 2016 15:03:53 -0700
add debugging information for bond deformation
Diffstat:
M Makefile | 2 +-
M slidergrid/debug.h | 9 ++++++---
M slidergrid/slider.c | 53 +++++++++++++++++++++++++------
M tests/elasticity/normal.c | 1 +
M tests/elasticity/shear.c | 9 +++++----
5 files changed, 57 insertions(+), 17 deletions(-)
---
(DIR) diff --git a/Makefile b/Makefile
t@@ -10,7 +10,7 @@ ESSENTIALOBJS=$(SRCFOLDER)/main.o \
$(SRCFOLDER)/simulation.o
BIN=example
-default: example tests run-example
+default: example tests
run-example: $(BIN)
./$(BIN)
(DIR) diff --git a/slidergrid/debug.h b/slidergrid/debug.h
t@@ -5,16 +5,19 @@
// slider-bond initialization function
//#define DEBUG_FIND_AND_BOND_TO_NEIGHBORS
+// if defined, show information on the resolved inter-slider bond deformation
+#define DEBUG_BOND_DEFORMATION
+
// if defined, verbose information to stdout will be shown about the individual
// 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
(DIR) diff --git a/slidergrid/slider.c b/slidergrid/slider.c
t@@ -238,7 +238,7 @@ void bond_normal_deformation(slider* s1, const slider s2,
s1->neighbor_relative_tangential_displacement[idx_neighbor] =
tangential_displacement;
else
- s1->neighbor_relative_distance_displacement[idx_neighbor] =
+ s1->neighbor_relative_tangential_displacement[idx_neighbor] =
add_float3(
s1->neighbor_relative_tangential_displacement[idx_neighbor],
dtangential_displacement);
t@@ -332,18 +332,36 @@ void bond_shear_kelvin_voigt(slider* s1, const slider s2,
s1->neighbor_relative_tangential_velocity[idx_neighbor]);
// bond-parallel Kelvin-Voigt force, counteracts tension and compression
- const Float3 f_t = multiply_scalar_float3(-1.0,
+ const Float3 f_t = multiply_scalar_float3( 1.0, // TODO: test sign
add_float3(f_t_elastic, f_t_viscous));
- // add bond-parallel Kelvin-Voigt force to sum of forces on slider
+ // add bond-shear Kelvin-Voigt force to sum of forces on slider
s1->force = add_float3(s1->force, f_t);
+ const Float3 torque = multiply_scalar_float3( -1.0,
+ cross_float3(
+ multiply_float3_scalar(
+ s1->neighbor_distance[idx_neighbor], 0.5),
+ f_t));
+
+ // add bond-shear Kelvin-Voigt force to sum of torques on slider
+ //s1->torque = add_float3(s1->torque, f_t);
+ /*s1->torque = add_float3(s1->torque,
+ multiply_scalar_float3( -1.0,
+ cross_float3(
+ multiply_float3_scalar(s1->neighbor_distance[idx_neighbor], 0.5)
+ , // midpoint distance between sliders
+ f_t)));*/
+
#ifdef DEBUG_SLIDER_FORCE_COMPONENTS
- printf("slider_interaction KV-shear: f_t = %f %f %f, "
+ 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",
f_t.x,
f_t.y,
f_t.z,
+ torque.x,
+ torque.y,
+ torque.z,
f_t_elastic.x,
f_t_elastic.y,
f_t_elastic.z,
t@@ -358,7 +376,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@@ -387,12 +405,29 @@ void slider_neighbor_interaction(
s, sliders[s->neighbors[idx_neighbor]],
idx_neighbor, iteration, dt);
- /*printf("- %d: rel_disp = %f %f %f\n",
- idx_neighbor,
+#ifdef DEBUG_BOND_DEFORMATION
+ int j;
+ for (j=0; j<MAX_NEIGHBORS; j++)
+ printf("%p = %d:\n"
+ "\trel_dist_disp = %f %f %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].z,
+ s->neighbor_relative_distance_velocity[idx_neighbor].x,
+ s->neighbor_relative_distance_velocity[idx_neighbor].y,
+ s->neighbor_relative_distance_velocity[idx_neighbor].z,
+ s->neighbor_relative_tangential_displacement[idx_neighbor].x,
+ s->neighbor_relative_tangential_displacement[idx_neighbor].y,
+ s->neighbor_relative_tangential_displacement[idx_neighbor].z,
+ s->neighbor_relative_tangential_velocity[idx_neighbor].x,
+ s->neighbor_relative_tangential_velocity[idx_neighbor].y,
+ s->neighbor_relative_tangential_velocity[idx_neighbor].z
+ );
+#endif
slider_interaction(
s, sliders[s->neighbors[idx_neighbor]], idx_neighbor);
(DIR) diff --git a/tests/elasticity/normal.c b/tests/elasticity/normal.c
t@@ -33,6 +33,7 @@ simulation setup_simulation()
sim.sliders[i].moment_of_inertia = 1.0e3;
sim.sliders[i].bond_parallel_kv_stiffness = 1.0e5;
//sim.sliders[i].bond_parallel_kv_viscosity = 1.0e2;
+ sim.sliders[i].bond_shear_kv_stiffness = 1.0e5;
}
sim.sliders[0].vel.x = 0.01;
(DIR) diff --git a/tests/elasticity/shear.c b/tests/elasticity/shear.c
t@@ -33,16 +33,17 @@ simulation setup_simulation()
sim.sliders[i].moment_of_inertia = 1.0e3;
sim.sliders[i].bond_parallel_kv_stiffness = 1.0e5;
//sim.sliders[i].bond_parallel_kv_viscosity = 1.0e2;
+ sim.sliders[i].bond_shear_kv_stiffness = 1.0e5;
}
sim.sliders[0].vel.y = 0.01;
// set temporal parameters
- sim.time = 0.0;
- //sim.time_end = 1000.0;
+ //sim.time_end = 100.0;
//sim.file_interval = 1.0;
- sim.time_end = 100.0;
- sim.file_interval = 0.1;
+ sim.time_end = 1.0;
+ sim.file_interval = 1.0e-3;
+ sim.time = 0.0;
return sim;
}