tAdded wall viscosities to wall contact model, added static/dynamic frictions - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
 (HTM) git clone git://src.adamsgaard.dk/sphere
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit f07848d9a5dda616d45ce0e8fe5696882370b9fc
 (DIR) parent af2de06847aae3374f42f0ba99feeb25149ae8dc
 (HTM) Author: Anders Damsgaard <adc@geo.au.dk>
       Date:   Wed, 31 Oct 2012 08:57:19 +0100
       
       Added wall viscosities to wall contact model, added static/dynamic frictions
       
       Diffstat:
         M src/contactmodels.cuh               |      13 ++++++++++---
       
       1 file changed, 10 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/src/contactmodels.cuh b/src/contactmodels.cuh
       t@@ -44,7 +44,7 @@ __device__ Float contactLinear_wall(Float3* F, Float3* T, Float* es_dot,
          //Float3 f_n = -devC_params.k_n * delta * n;
        
          // Normal force component: Elastic - viscous damping
       -  Float3 f_n = (-devC_params.k_n * delta - devC_params.gamma_n * vel_n) * n;
       +  Float3 f_n = (-devC_params.k_n * delta - devC_params.gamma_wn * vel_n) * n;
        
          // Make sure the viscous damping doesn't exceed the elastic component,
          // i.e. the damping factor doesn't exceed the critical damping, 2*sqrt(m*k_n)
       t@@ -61,8 +61,15 @@ __device__ Float contactLinear_wall(Float3* F, Float3* T, Float* es_dot,
          // divide by zero (producing a NaN)
          if (vel_t_length > 0.f) {
        
       -    Float f_t_visc  = devC_params.gamma_t * vel_t_length; // Tangential force by viscous model
       -    Float f_t_limit = devC_params.mu_s * f_n_length;      // Max. friction
       +    Float f_t_visc  = devC_params.gamma_wt * vel_t_length; // Tangential force by viscous model
       +
       +    // Determine max. friction
       +    Float f_t_limit;
       +    if (vel_t_length > 0.001f) { // Dynamic
       +      f_t_limit = devC_params.mu_rd * f_n_length;
       +    } else { // Static
       +      f_t_limit = devC_params.mu_rs * f_n_length;
       +    }
        
            // If the shear force component exceeds the friction,
            // the particle slips and energy is dissipated