tfix normal-impact simulation parameters - slidergrid - grid of elastic sliders… | |
git clone git://src.adamsgaard.dk/slidergrid | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 86fc15639894a4f2ebaaba73678afc6245e2d8e7 | |
parent 8767c0aedd2863ea48fb447851a62fa232a9a8f1 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Fri, 15 Apr 2016 14:52:12 -0700 | |
fix normal-impact simulation parameters | |
Diffstat: | |
M slidergrid/debug.h | 8 ++++---- | |
M slidergrid/slider.c | 17 +++++++++-------- | |
A tests/elasticity/normal-2d.c | 48 +++++++++++++++++++++++++++++… | |
A tests/elasticity/normal-3d.c | 49 +++++++++++++++++++++++++++++… | |
M tests/elasticity/normal.c | 9 ++++----- | |
M tests/elasticity/shear.c | 12 ++++++------ | |
6 files changed, 120 insertions(+), 23 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/slider.c b/slidergrid/slider.c | |
t@@ -256,13 +256,14 @@ void bond_normal_deformation(slider* s1, const slider s2, | |
// total relative displacement in inter-slider distance | |
s1->neighbor_relative_tangential_velocity[idx_neighbor] = vel_t; | |
- //* | |
+#ifdef DEBUG_BOND_DEFORMATION | |
printf("\t------\n" | |
- "tan_disp0_u = %f %f %f\n" | |
- "tan_disp0 = %f %f %f\n" | |
- "tan_disp = %f %f %f\n" | |
- "dtan_disp = %f %f %f\n" | |
- "vel_t = %f %f %f\n" | |
+ "\ttan_disp0_u = %f %f %f\n" | |
+ "\ttan_disp0 = %f %f %f\n" | |
+ "\ttan_disp = %f %f %f\n" | |
+ "\tdtan_disp = %f %f %f\n" | |
+ "\tvel_t = %f %f %f\n" | |
+ "\t------\n" | |
, | |
tangential_displacement0_uncor.x, | |
tangential_displacement0_uncor.y, | |
t@@ -279,7 +280,7 @@ void bond_normal_deformation(slider* s1, const slider s2, | |
vel_t.x, | |
vel_t.y, | |
vel_t.z); | |
- // */ | |
+#endif | |
} | |
t@@ -375,7 +376,7 @@ 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, // TODO: test sign | |
+ const Float3 f_t = multiply_scalar_float3( -1.0, | |
add_float3(f_t_elastic, f_t_viscous)); | |
// add bond-shear Kelvin-Voigt force to sum of forces on slider | |
diff --git a/tests/elasticity/normal-2d.c b/tests/elasticity/normal-2d.c | |
t@@ -0,0 +1,48 @@ | |
+#include "../../slidergrid/simulation.h" | |
+#include "../../slidergrid/grid.h" | |
+#include "../../slidergrid/slider.h" | |
+ | |
+#include <stdio.h> | |
+ | |
+// test a regular, 2d, orthogonal grid of sliders | |
+simulation setup_simulation() | |
+{ | |
+ // create empty simulation structure with default values | |
+ simulation sim = create_simulation(); | |
+ sim.id = "normal-2d"; | |
+ | |
+ // initialize grid of sliders | |
+ int nx = 50; | |
+ int ny = 50; | |
+ int nz = 1; | |
+ sim.N = nx*ny*nz; | |
+ sim.sliders = create_regular_slider_grid(nx, ny, nz, 1.0, 1.0, 1.0); | |
+ | |
+ sim.bond_length_limit = 1.5; | |
+ | |
+ // set slider masses and moments of inertia | |
+ int i; | |
+ for (i=0; i<sim.N; i++) { | |
+ | |
+ // set default values | |
+ initialize_slider_values(&sim.sliders[i]); | |
+ | |
+ // set custom values for certain parameters | |
+ sim.sliders[i].mass = 10.0; | |
+ sim.sliders[i].moment_of_inertia = 1.0e3; | |
+ sim.sliders[i].bond_parallel_kv_stiffness = 1.0e4; | |
+ //sim.sliders[i].bond_parallel_kv_viscosity = 1.0e2; | |
+ sim.sliders[i].bond_shear_kv_stiffness = 1.0e5; | |
+ } | |
+ | |
+ sim.sliders[1250].vel.x = 1.0e1; | |
+ | |
+ // set temporal parameters | |
+ sim.time = 0.0; | |
+ //sim.time_end = 100.0; | |
+ //im.file_interval = 1.0; | |
+ sim.time_end = 2.0; | |
+ sim.file_interval = 1.0e-3; | |
+ | |
+ return sim; | |
+} | |
diff --git a/tests/elasticity/normal-3d.c b/tests/elasticity/normal-3d.c | |
t@@ -0,0 +1,49 @@ | |
+#include "../../slidergrid/simulation.h" | |
+#include "../../slidergrid/grid.h" | |
+#include "../../slidergrid/slider.h" | |
+ | |
+#include <stdio.h> | |
+ | |
+// test a regular, 2d, orthogonal grid of sliders | |
+simulation setup_simulation() | |
+{ | |
+ // create empty simulation structure with default values | |
+ simulation sim = create_simulation(); | |
+ sim.id = "normal-3d"; | |
+ | |
+ // initialize grid of sliders | |
+ int nx = 20; | |
+ int ny = 20; | |
+ int nz = 20; | |
+ sim.N = nx*ny*nz; | |
+ sim.sliders = create_regular_slider_grid(nx, ny, nz, 1.0, 1.0, 1.0); | |
+ | |
+ sim.bond_length_limit = 1.5; | |
+ | |
+ // set slider masses and moments of inertia | |
+ int i; | |
+ for (i=0; i<sim.N; i++) { | |
+ | |
+ // set default values | |
+ initialize_slider_values(&sim.sliders[i]); | |
+ | |
+ // set custom values for certain parameters | |
+ sim.sliders[i].mass = 10.0; | |
+ sim.sliders[i].moment_of_inertia = 1.0e3; | |
+ sim.sliders[i].bond_parallel_kv_stiffness = 1.0e4; | |
+ //sim.sliders[i].bond_parallel_kv_viscosity = 1.0e2; | |
+ sim.sliders[i].bond_shear_kv_stiffness = 1.0e5; | |
+ } | |
+ | |
+ sim.sliders[200].vel.x = 1.0e1; | |
+ sim.sliders[200].vel.z = 1.0e1; | |
+ | |
+ // set temporal parameters | |
+ sim.time = 0.0; | |
+ //sim.time_end = 100.0; | |
+ //im.file_interval = 1.0; | |
+ sim.time_end = 2.0; | |
+ sim.file_interval = 1.0e-3; | |
+ | |
+ return sim; | |
+} | |
diff --git a/tests/elasticity/normal.c b/tests/elasticity/normal.c | |
t@@ -12,7 +12,7 @@ simulation setup_simulation() | |
sim.id = "normal"; | |
// initialize grid of sliders | |
- int nx = 10; | |
+ int nx = 20; | |
//int nx = 2; | |
int ny = 1; | |
int nz = 1; | |
t@@ -29,17 +29,16 @@ simulation setup_simulation() | |
initialize_slider_values(&sim.sliders[i]); | |
// set custom values for certain parameters | |
- sim.sliders[i].mass = 1.0; | |
+ sim.sliders[i].mass = 10.0; | |
sim.sliders[i].moment_of_inertia = 1.0e3; | |
- sim.sliders[i].bond_parallel_kv_stiffness = 1.0e5; | |
+ sim.sliders[i].bond_parallel_kv_stiffness = 1.0e4; | |
//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; | |
+ sim.sliders[0].vel.x = 1.0e1; | |
// set temporal parameters | |
- sim.time = 0.0; | |
sim.time_end = 100.0; | |
sim.file_interval = 1.0; | |
diff --git a/tests/elasticity/shear.c b/tests/elasticity/shear.c | |
t@@ -12,8 +12,8 @@ simulation setup_simulation() | |
sim.id = "shear"; | |
// initialize grid of sliders | |
- //int nx = 10; | |
- int nx = 2; | |
+ int nx = 20; | |
+ //int nx = 2; | |
int ny = 1; | |
int nz = 1; | |
sim.N = nx*ny*nz; | |
t@@ -39,10 +39,10 @@ simulation setup_simulation() | |
sim.sliders[0].vel.y = 0.1; | |
// set temporal parameters | |
- //sim.time_end = 100.0; | |
- //sim.file_interval = 1.0; | |
- sim.time_end = 1.0; | |
- sim.file_interval = 1.0e-3; | |
+ sim.time_end = 200.0; | |
+ sim.file_interval = 0.1; | |
+ //sim.time_end = 1.0; | |
+ //sim.file_interval = 1.0e-3; | |
return sim; | |
} |