tenable shear resisting forces - 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 0098826894734f6e3f5db2e76a707860f42c8c7e
(DIR) parent bb119cc1c3bf9c0fe083b7137eadd76e39f0d0f5
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Tue, 5 Apr 2016 14:16:13 -0700
enable shear resisting forces
Diffstat:
M slidergrid/main.c | 3 ++-
M slidergrid/slider.c | 47 ++++++++++++++++---------------
M slidergrid/slider.h | 3 ++-
M tests/elasticity/normal.c | 2 +-
4 files changed, 29 insertions(+), 26 deletions(-)
---
(DIR) diff --git a/slidergrid/main.c b/slidergrid/main.c
t@@ -154,7 +154,8 @@ int main(int argc, char** argv)
&sim.sliders[i],
sim.sliders,
sim.N,
- sim.iteration);
+ sim.iteration,
+ sim.dt);
#ifdef DEBUG_SLIDER_FORCE_TORQUE_AND_NEIGHBORS
int j;
(DIR) diff --git a/slidergrid/slider.c b/slidergrid/slider.c
t@@ -251,10 +251,10 @@ void bond_normal_deformation(slider* s1, const slider s2,
// Find the bond deformation
void bond_deformation(slider* s1, const slider s2,
- const int idx_neighbor, const int iteration)
+ 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);
+ bond_normal_deformation(s1, s2, idx_neighbor, iteration, dt);
}
t@@ -322,34 +322,34 @@ void bond_shear_kelvin_voigt(slider* s1, const slider s2,
+ 1.0e-40);
// bond-parallel Kelvin-Voigt elasticity
- const Float3 f_n_elastic =
+ const Float3 f_t_elastic =
multiply_scalar_float3(bond_shear_kv_stiffness,
- s1->neighbor_relative_distance_displacement[idx_neighbor]);
+ s1->neighbor_relative_tangential_displacement[idx_neighbor]);
// bond-parallel Kelvin-Voigt viscosity
- const Float3 f_n_viscous =
+ const Float3 f_t_viscous =
multiply_scalar_float3(bond_shear_kv_viscosity,
- s1->neighbor_relative_distance_velocity[idx_neighbor]);
+ s1->neighbor_relative_tangential_velocity[idx_neighbor]);
// bond-parallel Kelvin-Voigt force, counteracts tension and compression
- const Float3 f_n = multiply_scalar_float3(-1.0,
- add_float3(f_n_elastic, f_n_viscous));
+ const Float3 f_t = multiply_scalar_float3(-1.0,
+ add_float3(f_t_elastic, f_t_viscous));
// add bond-parallel Kelvin-Voigt force to sum of forces on slider
- s1->force = add_float3(s1->force, f_n);
+ s1->force = add_float3(s1->force, f_t);
#ifdef DEBUG_SLIDER_FORCE_COMPONENTS
- printf("slider_interaction KV-shear: f_n = %f %f %f, "
- "f_n_elastic = %f %f %f, f_n_viscous = %f %f %f\n",
- f_n.x,
- f_n.y,
- f_n.z,
- f_n_elastic.x,
- f_n_elastic.y,
- f_n_elastic.z,
- f_n_viscous.x,
- f_n_viscous.y,
- f_n_viscous.z);
+ printf("slider_interaction KV-shear: f_t = %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,
+ f_t_elastic.x,
+ f_t_elastic.y,
+ f_t_elastic.z,
+ f_t_viscous.x,
+ f_t_viscous.y,
+ f_t_viscous.z);
#endif
}
t@@ -358,7 +358,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_normal_kelvin_voigt(s1, s2, idx_neighbor);
+ bond_shear_kelvin_voigt(s1, s2, idx_neighbor);
}
t@@ -367,7 +367,8 @@ void slider_neighbor_interaction(
slider* s,
const slider* sliders,
const int N,
- const int iteration)
+ const int iteration,
+ const Float dt)
{
int idx_neighbor;
for (idx_neighbor=0; idx_neighbor<MAX_NEIGHBORS; idx_neighbor++) {
t@@ -384,7 +385,7 @@ void slider_neighbor_interaction(
bond_deformation(
s, sliders[s->neighbors[idx_neighbor]],
- idx_neighbor, iteration);
+ idx_neighbor, iteration, dt);
/*printf("- %d: rel_disp = %f %f %f\n",
idx_neighbor,
(DIR) diff --git a/slidergrid/slider.h b/slidergrid/slider.h
t@@ -69,7 +69,8 @@ void slider_neighbor_interaction(
slider* s,
const slider* sliders,
const int N,
- const int iteration);
+ const int iteration,
+ const Float dt);
void slider_viscous_damping(slider* s);
void slider_nonviscous_damping(slider* s);
(DIR) diff --git a/tests/elasticity/normal.c b/tests/elasticity/normal.c
t@@ -39,7 +39,7 @@ simulation setup_simulation()
// set temporal parameters
sim.time = 0.0;
- sim.time_end = 1000.0;
+ sim.time_end = 100.0;
sim.file_interval = 1.0;
return sim;