tgrain.h - granular - granular dynamics simulation | |
git clone git://src.adamsgaard.dk/granular | |
Log | |
Files | |
Refs | |
README | |
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 |