URI:
       tslider.h - slidergrid - grid of elastic sliders on a frictional surface
  HTML git clone git://src.adamsgaard.dk/slidergrid
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tslider.h (3234B)
       ---
            1 #ifndef SLIDER_H_
            2 #define SLIDER_H_
            3 
            4 #include "typedefs.h"
            5 
            6 #define MAX_NEIGHBORS 32
            7 
            8 typedef struct {
            9 
           10     // linear position, velocity, acceleration of this slider
           11     Float3 pos_future;  // [m]
           12     Float3 pos;  // [m]
           13     Float3 vel;  // [m/s]
           14     Float3 acc;  // [m/(s*s)]
           15 
           16     // angular position, velocity, acceleration of this slider
           17     Float3 angpos_future;  // [rad]
           18     Float3 angpos;  // [rad]
           19     Float3 angvel;  // [rad/s]
           20     Float3 angacc;  // [rad/(s*s)]
           21 
           22     // sum of forces acting on this slider [N]
           23     Float3 force;
           24 
           25     // sum of torques acting on this slider [N*m]
           26     Float3 torque;
           27 
           28     // slider mass [kg]
           29     Float mass;
           30 
           31     // moment of inertia [kg m*m]
           32     Float moment_of_inertia;
           33 
           34     // Macroscopic mechanical properties
           35     Float youngs_modulus;
           36     Float shear_modulus;
           37     Float torsion_stiffness;
           38 
           39     // inter-slider bond-parallel Kelvin-Voigt contact model parameters
           40     Float bond_parallel_kv_stiffness;  // Hookean elastic stiffness [N/m]
           41     Float bond_parallel_kv_viscosity;  // viscosity [N/(m*s)]
           42 
           43     // inter-slider bond-shear Kelvin-Voigt contact model parameters
           44     Float bond_shear_kv_stiffness;  // Hookean elastic stiffness [N/m]
           45     Float bond_shear_kv_viscosity;  // viscosity [N/(m*s)]
           46 
           47     // inter-slider bond-twist Kelvin-Voigt contact model parameters
           48     Float bond_twist_kv_stiffness;  // Hookean elastic stiffness [N/m]
           49     Float bond_twist_kv_viscosity;  // viscosity [N/(m*s)]
           50 
           51     // inter-slider bond-bend Kelvin-Voigt contact model parameters
           52     Float bond_bend_kv_stiffness;  // Hookean elastic stiffness [N/m]
           53     Float bond_bend_kv_viscosity;  // viscosity [N/(m*s)]
           54 
           55     // Damping parameters
           56     Float damping_viscosity_linear;   // Linear velocity damping [N/(m/s)]
           57     Float damping_viscosity_angular;  // Angular velocity damping [N*m/(rad/s)]
           58     Float damping_coefficient;        // Dimensionless damping [-]
           59 
           60     // The uniquely identifying indexes of the slider neighbors which are bonded 
           61     // to this slider.  A value of -1 denotes an empty field.  Preallocated for 
           62     // speed.
           63     int neighbors[MAX_NEIGHBORS];
           64 
           65     // relative spatial movement between this slider and its neighbors
           66     Float3 neighbor_distance[MAX_NEIGHBORS];
           67     Float neighbor_relative_distance_displacement[MAX_NEIGHBORS];
           68     Float3 neighbor_relative_distance_velocity[MAX_NEIGHBORS];  // Float?
           69     Float3 neighbor_relative_tangential_displacement[MAX_NEIGHBORS];
           70     Float3 neighbor_relative_tangential_velocity[MAX_NEIGHBORS];
           71     Float neighbor_relative_twist[MAX_NEIGHBORS];
           72     Float neighbor_relative_twist_velocity[MAX_NEIGHBORS];
           73     Float3 neighbor_relative_bend[MAX_NEIGHBORS];
           74     Float3 neighbor_relative_bend_velocity[MAX_NEIGHBORS];
           75 } slider;
           76 
           77 
           78 void print_slider_position(slider s);
           79 void initialize_slider_values(slider* s);
           80 
           81 void project_slider_position(slider* s, Float dt, long int iteration);
           82 void zero_slider_force_torque(slider* s);
           83 void update_kinematics(slider* s, Float dt, long int iteration);
           84 
           85 void slider_neighbor_interaction(
           86         slider* s,
           87         const slider* sliders,
           88         const int N,
           89         const int iteration,
           90         const Float dt);
           91 
           92 void slider_viscous_damping(slider* s);
           93 void slider_nonviscous_damping(slider* s);
           94 
           95 #endif