tgrain.h - granular - granular dynamics simulation
 (HTM) git clone git://src.adamsgaard.dk/granular
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tgrain.h (1776B)
       ---
            1 #ifndef GRANULAR_GRAIN_
            2 #define GRANULAR_GRAIN_
            3 
            4 #include <stdio.h>
            5 #include "contact.h"
            6 
            7 #define MAXCONTACTS 32
            8 
            9 struct grain {
           10 
           11         double diameter;
           12         double pos[3];
           13         double vel[3];
           14         double acc[3];
           15         int acc_lock[3];
           16         double force[3];
           17         double angpos[3];
           18         double angvel[3];
           19         double angacc[3];
           20         double torque[3];
           21         double disp[3];
           22         double forceext[3];
           23         double density;
           24         int fixed;
           25         int rotating;
           26         int enabled;
           27         double youngs_modulus;
           28         double poissons_ratio;
           29         double friction_coeff;
           30         double damping_n;
           31         double damping_t;
           32         double tensile_strength;
           33         double shear_strength;
           34         double fracture_toughness;
           35         size_t gridpos[3];
           36         size_t ncontacts;
           37         struct contact contacts[MAXCONTACTS];
           38         double contact_stress[3];
           39         double thermal_energy;
           40         int color;
           41 };
           42 
           43 struct grain grain_new(void);
           44 void grain_defaults(struct grain *g);
           45 
           46 void grain_print(FILE *stream, const struct grain *g);
           47 struct grain * grain_read(char *line);
           48 
           49 int grain_check_values(const struct grain *g);
           50 
           51 double grain_volume(const struct grain *g);
           52 double grain_mass(const struct grain *g);
           53 double grain_moment_of_inertia(const struct grain *g);
           54 void grain_zero_kinematics(struct grain *g);
           55 void grain_force_reset(struct grain *g);
           56 double grain_translational_kinetic_energy(const struct grain *g);
           57 double grain_rotational_kinetic_energy(const struct grain *g);
           58 double grain_kinetic_energy(const struct grain *g);
           59 double grain_thermal_energy(const struct grain *g);
           60 void grain_temporal_integration(struct grain *g, double dt);
           61 
           62 void grain_register_contact(struct grain *g, size_t i, size_t j,
           63                             double centerdist[3], double overlap);
           64 
           65 double grain_stiffness_normal(const struct grain *g);
           66 double grain_stiffness_tangential(const struct grain *g);
           67 double grain_collision_time(const struct grain *g);
           68 
           69 #endif