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;