tadd Kelvin-Voigt parameters for twist and bending - 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 7394876c00fe2230bb855621da3aa936ddd35baf
 (DIR) parent bbf7010bcf7ceae41f9d8bf35c2f7d1f1e66ae78
 (HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
       Date:   Tue, 19 Apr 2016 12:09:55 -0700
       
       add Kelvin-Voigt parameters for twist and bending
       
       Diffstat:
         M slidergrid/slider.c                 |      35 +++++++++++++++++--------------
         M slidergrid/slider.h                 |       8 ++++++++
       
       2 files changed, 27 insertions(+), 16 deletions(-)
       ---
 (DIR) diff --git a/slidergrid/slider.c b/slidergrid/slider.c
       t@@ -32,6 +32,12 @@ void initialize_slider_values(slider* s)
            s->bond_shear_kv_stiffness = 0.0;
            s->bond_shear_kv_viscosity = 0.0;
        
       +    s->bond_twist_kv_stiffness = 0.0;
       +    s->bond_twist_kv_viscosity = 0.0;
       +
       +    s->bond_bend_kv_stiffness = 0.0;
       +    s->bond_bend_kv_viscosity = 0.0;
       +
            s->damping_viscosity_linear  = 0.0;
            s->damping_viscosity_angular = 0.0;
            s->damping_coefficient = 0.0;
       t@@ -479,31 +485,28 @@ void bond_shear_kelvin_voigt(slider* s1, const slider s2,
        void bond_twist_kelvin_voigt(slider* s1, const slider s2,
                const int idx_neighbor)
        {
       -    // determine the bond-shear KV stiffness from the harmonic mean.
       -    const Float bond_shear_kv_stiffness =
       -        2.*s1->bond_shear_kv_stiffness*s2.bond_shear_kv_stiffness/
       -        (s1->bond_shear_kv_stiffness + s2.bond_shear_kv_stiffness
       +    // determine the bond-twist KV stiffness from the harmonic mean.
       +    const Float bond_twist_kv_stiffness =
       +        2.*s1->bond_twist_kv_stiffness*s2.bond_twist_kv_stiffness/
       +        (s1->bond_twist_kv_stiffness + s2.bond_twist_kv_stiffness
                 + 1.0e-40);
        
       -    // determine the bond-shear KV viscosity from the harmonic mean.
       -    const Float bond_shear_kv_viscosity =
       -        2.*s1->bond_shear_kv_viscosity*s2.bond_shear_kv_viscosity/
       -        (s1->bond_shear_kv_viscosity + s2.bond_shear_kv_viscosity
       +    // determine the bond-twist KV viscosity from the harmonic mean.
       +    const Float bond_twist_kv_viscosity =
       +        2.*s1->bond_twist_kv_viscosity*s2.bond_twist_kv_viscosity/
       +        (s1->bond_twist_kv_viscosity + s2.bond_twist_kv_viscosity
                 + 1.0e-40);
        
            // bond-parallel Kelvin-Voigt elasticity
       -    const Float3 m_n_elastic =
       -        multiply_scalar_float3(bond_shear_kv_stiffness,
       -                s1->neighbor_relative_twist[idx_neighbor]);
       +    const Float m_n_elastic = bond_twist_kv_stiffness
       +        *s1->neighbor_relative_twist[idx_neighbor];
        
            // bond-parallel Kelvin-Voigt viscosity
       -    const Float3 m_n_viscous =
       -        multiply_scalar_float3(bond_shear_kv_viscosity,
       -                s1->neighbor_relative_twist_velocity[idx_neighbor]);
       +    const Float m_n_viscous = bond_twist_kv_viscosity
       +        *s1->neighbor_relative_twist_velocity[idx_neighbor];
        
            // bond-parallel Kelvin-Voigt moment, counteracts twisting
       -    const Float3 m_n = multiply_scalar_float3( -1.0,
       -            add_float3(m_n_elastic, m_n_viscous));
       +    const Float m_n = -1.0*(m_n_elastic + m_n_viscous);
        
            // determine torque on slider from shear on this bond
            /*const Float3 torque = multiply_scalar_float3( -1.0,
 (DIR) diff --git a/slidergrid/slider.h b/slidergrid/slider.h
       t@@ -39,6 +39,14 @@ typedef struct {
            Float bond_shear_kv_stiffness;  // Hookean elastic stiffness [N/m]
            Float bond_shear_kv_viscosity;  // viscosity [N/(m*s)]
        
       +    // inter-slider bond-twist Kelvin-Voigt contact model parameters
       +    Float bond_twist_kv_stiffness;  // Hookean elastic stiffness [N/m]
       +    Float bond_twist_kv_viscosity;  // viscosity [N/(m*s)]
       +
       +    // inter-slider bond-bend Kelvin-Voigt contact model parameters
       +    Float bond_bend_kv_stiffness;  // Hookean elastic stiffness [N/m]
       +    Float bond_bend_kv_viscosity;  // viscosity [N/(m*s)]
       +
            // Damping parameters
            Float damping_viscosity_linear;   // Linear velocity damping [N/(m/s)]
            Float damping_viscosity_angular;  // Angular velocity damping [N*m/(rad/s)]