About the Authors |
|
xv | |
Preface |
|
xvii | |
Acknowledgements |
|
xix | |
List of Abbreviations |
|
xxi | |
1 Mechanics |
|
1 | (64) |
|
|
1 | (4) |
|
1.1.1 Particle mechanics and constraints |
|
|
1 | (2) |
|
1.1.2 From point particles to rigid bodies |
|
|
3 | (1) |
|
1.1.3 More context and terminology |
|
|
4 | (1) |
|
1.2 Dynamics of rectilinear degrees of freedom |
|
|
5 | (1) |
|
1.3 Dynamics of angular degrees of freedom |
|
|
6 | (23) |
|
1.3.1 Rotation in two dimensions |
|
|
6 | (1) |
|
|
7 | (2) |
|
1.3.3 From two to three dimensions |
|
|
9 | (3) |
|
1.3.4 Rotation matrix in three dimensions |
|
|
12 | (1) |
|
1.3.5 Three-dimensional moments of inertia |
|
|
13 | (3) |
|
1.3.6 Space-fixed and body-fixed coordinate systems and equations of motion |
|
|
16 | (3) |
|
1.3.7 Problems with Euler angles |
|
|
19 | (1) |
|
1.3.8 Rotations represented using complex numbers |
|
|
20 | (1) |
|
|
21 | (6) |
|
1.3.10 Derivation of quaternion dynamics |
|
|
27 | (2) |
|
|
29 | (10) |
|
1.4.1 Qualitative discussion of the time dependence of linear oscillations |
|
|
31 | (3) |
|
|
34 | (1) |
|
1.4.3 The flow in phase space |
|
|
35 | (4) |
|
|
39 | (8) |
|
|
40 | (2) |
|
1.5.2 Resonance in nonlinear systems |
|
|
42 | (2) |
|
1.5.3 Higher harmonics and frequency mixing |
|
|
44 | (1) |
|
1.5.4 The van der Pol oscillator |
|
|
45 | (2) |
|
1.6 From higher harmonics to chaos |
|
|
47 | (6) |
|
1.6.1 The bifurcation cascade |
|
|
47 | (1) |
|
1.6.2 The nonlinear frictional oscillator and Poincare maps |
|
|
47 | (4) |
|
|
51 | (1) |
|
1.6.4 Boundary conditions and many-particle systems |
|
|
52 | (1) |
|
1.7 Stability and conservation laws |
|
|
53 | (8) |
|
1.7.1 Stability in statics |
|
|
54 | (1) |
|
1.7.2 Stability in dynamics |
|
|
55 | (1) |
|
1.7.3 Stable axes of rotation around the principal axis |
|
|
56 | (2) |
|
1.7.4 Noether's theorem and conservation laws |
|
|
58 | (3) |
|
|
61 | (1) |
|
|
61 | (2) |
|
|
63 | (2) |
2 Numerical Integration of Ordinary Differential Equations |
|
65 | (64) |
|
2.1 Fundamentals of numerical analysis |
|
|
65 | (10) |
|
2.1.1 Floating point numbers |
|
|
65 | (2) |
|
|
67 | (2) |
|
2.1.3 Relative and absolute error |
|
|
69 | (1) |
|
|
69 | (2) |
|
2.1.5 Local and global error |
|
|
71 | (3) |
|
|
74 | (1) |
|
2.1.7 Stable integrators for unstable problems |
|
|
74 | (1) |
|
2.2 Numerical analysis for ordinary differential equations |
|
|
75 | (4) |
|
2.2.1 Variable notation and transformation of the order of a differential equation |
|
|
75 | (1) |
|
2.2.2 Differences in the simulation of atoms and molecules, as compared to macroscopic particles |
|
|
76 | (1) |
|
2.2.3 Truncation error for solutions of ordinary differential equations |
|
|
76 | (1) |
|
2.2.4 Fundamental approaches |
|
|
77 | (1) |
|
2.2.5 Explicit Euler method |
|
|
77 | (1) |
|
2.2.6 Implicit Euler method |
|
|
78 | (1) |
|
|
79 | (3) |
|
2.3.1 Adaptive step-size control |
|
|
79 | (2) |
|
2.3.2 Dense output and event location |
|
|
81 | (1) |
|
2.3.3 Partitioned Runge-Kutta methods |
|
|
82 | (1) |
|
|
82 | (10) |
|
2.4.1 The classical Verlet method |
|
|
82 | (1) |
|
2.4.2 Velocity-Verlet methods |
|
|
83 | (2) |
|
2.4.3 Higher-order velocity-Verlet methods |
|
|
85 | (3) |
|
2.4.4 Pseudo-symplectic methods |
|
|
88 | (1) |
|
2.4.5 Order, accuracy and energy conservation |
|
|
88 | (1) |
|
2.4.6 Backward error analysis |
|
|
89 | (1) |
|
2.4.7 Case study: the harmonic oscillator with and without viscous damping |
|
|
90 | (2) |
|
|
92 | (2) |
|
2.5.1 Evaluating computational costs |
|
|
93 | (1) |
|
2.5.2 Stiff solutions and error as noise |
|
|
94 | (1) |
|
|
94 | (1) |
|
2.6 Backward difference formulae |
|
|
94 | (4) |
|
2.6.1 Implicit integrators of the predictor-corrector formulae |
|
|
94 | (2) |
|
|
96 | (1) |
|
2.6.3 Multiple corrector steps |
|
|
97 | (1) |
|
|
98 | (1) |
|
2.6.5 Variable time-step and variable order |
|
|
98 | (1) |
|
|
98 | (5) |
|
2.7.1 Why not to use self-written or novel integrators |
|
|
98 | (2) |
|
2.7.2 Stochastic differential equations |
|
|
100 | (1) |
|
2.7.3 Extrapolation and high-order methods |
|
|
100 | (1) |
|
2.7.4 Multi-rate integrators |
|
|
101 | (1) |
|
2.7.5 Zero-order algorithms |
|
|
101 | (2) |
|
2.8 Differential algebraic equations |
|
|
103 | (6) |
|
2.8.1 The pendulum in Cartesian coordinates |
|
|
103 | (3) |
|
|
106 | (1) |
|
2.8.3 Drift and stabilization |
|
|
107 | (2) |
|
2.9 Selecting an integrator |
|
|
109 | (2) |
|
2.9.1 Performance and stability |
|
|
109 | (1) |
|
2.9.2 Angular degrees of freedom |
|
|
109 | (1) |
|
|
109 | (1) |
|
2.9.4 Exploring new fields |
|
|
110 | (1) |
|
2.9.5 ODE solvers unsuitable for DEM simulations |
|
|
110 | (1) |
|
|
111 | (2) |
|
|
113 | (12) |
|
|
125 | (4) |
3 Friction |
|
129 | (32) |
|
3.1 Sliding Coulomb friction |
|
|
129 | (7) |
|
|
130 | (2) |
|
3.1.2 Static and dynamic friction coefficients |
|
|
132 | (2) |
|
3.1.3 Apparent and actual contact area |
|
|
134 | (1) |
|
3.1.4 Roughness and the friction coefficient |
|
|
135 | (1) |
|
3.1.5 Adhesion and chemical bonding |
|
|
136 | (1) |
|
3.2 Other contact geometries of Coulomb friction |
|
|
136 | (8) |
|
|
137 | (1) |
|
|
138 | (2) |
|
3.2.3 Sliding and rolling friction: the billiard problem |
|
|
140 | (3) |
|
3.2.4 Sliding and rolling friction: cylinder on a slope |
|
|
143 | (1) |
|
3.2.5 Pivoting and rolling friction |
|
|
144 | (1) |
|
3.3 Exact implementation of friction |
|
|
144 | (9) |
|
3.3.1 Establishing the difference between dynamic and static friction |
|
|
145 | (3) |
|
3.3.2 Single-particle contact |
|
|
148 | (3) |
|
3.3.3 Frictional linear chain |
|
|
151 | (1) |
|
|
152 | (1) |
|
3.4 Modeling and regularizations |
|
|
153 | (2) |
|
3.4.1 The Cundall-Strack model |
|
|
153 | (2) |
|
3.4.2 Cundall-Strack friction in three dimensions |
|
|
155 | (1) |
|
3.5 Unfortunate treatment of Coulomb friction in the literature |
|
|
155 | (3) |
|
3.5.1 Insufficient models |
|
|
156 | (2) |
|
3.5.2 Misunderstandings concerning surface roughness and friction |
|
|
158 | (1) |
|
3.5.3 The Painleve paradox |
|
|
158 | (1) |
|
|
158 | (1) |
|
|
159 | (1) |
|
|
159 | (2) |
4 Phenomenology of Granular Materials |
|
161 | (14) |
|
4.1 Phenomenology of grains |
|
|
161 | (3) |
|
|
161 | (1) |
|
4.1.2 Friction and dissipation |
|
|
162 | (1) |
|
4.1.3 Length and time scales |
|
|
162 | (1) |
|
4.1.4 Particle shape, and rolling and sliding |
|
|
163 | (1) |
|
4.2 General phenomenology of granular agglomerates |
|
|
164 | (4) |
|
|
164 | (1) |
|
|
165 | (1) |
|
4.2.3 Tri-axial compression and shear band formation |
|
|
166 | (2) |
|
|
168 | (1) |
|
|
168 | (1) |
|
4.3 History effects in granular materials |
|
|
168 | (5) |
|
|
169 | (1) |
|
|
170 | (1) |
|
4.3.3 Pressure distribution under heaps |
|
|
171 | (2) |
|
|
173 | (1) |
|
|
173 | (2) |
5 Condensed Matter and Solid State Physics |
|
175 | (38) |
|
5.1 Structure and properties of matter |
|
|
176 | (10) |
|
5.1.1 Crystal structures in two dimensions |
|
|
176 | (2) |
|
5.1.2 Crystal structures in three dimensions |
|
|
178 | (2) |
|
5.1.3 From the Wigner-Seitz cell to the Voronoi construction |
|
|
180 | (2) |
|
5.1.4 Strength parameters of materials |
|
|
182 | (3) |
|
5.1.5 Strength of granular assemblies |
|
|
185 | (1) |
|
5.2 From wave numbers to the Fourier transform |
|
|
186 | (8) |
|
5.2.1 Wave numbers and the reciprocal lattice |
|
|
186 | (2) |
|
5.2.2 The Fourier transform in one dimension |
|
|
188 | (1) |
|
5.2.3 Properties of the FFT |
|
|
189 | (4) |
|
5.2.4 Other Fourier variables |
|
|
193 | (1) |
|
|
193 | (1) |
|
|
194 | (12) |
|
5.3.1 Phase and group velocities |
|
|
194 | (2) |
|
5.3.2 Phase and group velocities for particle systems |
|
|
196 | (3) |
|
5.3.3 Numerical computation of the dispersion relation |
|
|
199 | (1) |
|
|
200 | (2) |
|
5.3.5 Dispersion relation for disordered systems |
|
|
202 | (2) |
|
|
204 | (2) |
|
|
206 | (1) |
|
|
206 | (4) |
|
|
210 | (3) |
6 Modeling and Simulation |
|
213 | (10) |
|
6.1 Experiments, theory and simulation |
|
|
213 | (1) |
|
6.2 Computability, observables and auxiliary quantities |
|
|
214 | (1) |
|
6.3 Experiments, theories and the discrete element method |
|
|
215 | (2) |
|
6.4 The discrete element method and other particle simulation methods |
|
|
217 | (1) |
|
6.5 Other simulation methods for granular materials |
|
|
218 | (3) |
|
6.5.1 Continuum mechanics |
|
|
218 | (1) |
|
|
219 | (1) |
|
6.5.3 The Monte Carlo method |
|
|
220 | (1) |
|
|
221 | (2) |
7 The Discrete Element Method in Two Dimensions |
|
223 | (66) |
|
7.1 The discrete element method with soft particles |
|
|
223 | (6) |
|
7.1.1 The bouncing ball as a prototype for the DEM approach |
|
|
224 | (3) |
|
7.1.2 Using two different stiffness constants to model damping |
|
|
227 | (1) |
|
7.1.3 Simulation of round DEM particles in one dimension |
|
|
228 | (1) |
|
7.1.4 Simulation of round particles in two dimensions |
|
|
228 | (1) |
|
7.2 Modeling of polygonal particles |
|
|
229 | (8) |
|
7.2.1 Initializing two-dimensional particles |
|
|
229 | (2) |
|
7.2.2 Computation of the mass, center of mass and moment of inertia |
|
|
231 | (6) |
|
7.2.3 Non-convex polygons |
|
|
237 | (1) |
|
|
237 | (13) |
|
7.3.1 Shape-dependent elastic force law |
|
|
238 | (2) |
|
7.3.2 Computation of the overlap geometry |
|
|
240 | (4) |
|
7.3.3 Computation of other dynamic quantities |
|
|
244 | (2) |
|
|
246 | (2) |
|
|
248 | (1) |
|
7.3.6 Penetrating particle overlaps |
|
|
249 | (1) |
|
7.4 Initial and boundary conditions |
|
|
250 | (7) |
|
7.4.1 Initializing convex polygons |
|
|
250 | (2) |
|
7.4.2 General considerations |
|
|
252 | (1) |
|
|
253 | (2) |
|
7.4.4 Boundary conditions |
|
|
255 | (2) |
|
7.5 Neighborhood algorithms |
|
|
257 | (14) |
|
7.5.1 Algorithms not recommended for elongated particles |
|
|
258 | (5) |
|
|
263 | (8) |
|
|
271 | (1) |
|
|
272 | (8) |
|
|
272 | (2) |
|
7.7.2 Program initialization |
|
|
274 | (1) |
|
|
274 | (2) |
|
7.7.4 Proposed stages for the development of programs |
|
|
276 | (2) |
|
|
278 | (2) |
|
7.8 Computing observables |
|
|
280 | (5) |
|
|
280 | (1) |
|
7.8.2 Homogenization and spatial averages |
|
|
281 | (1) |
|
7.8.3 Computing error bars |
|
|
282 | (2) |
|
7.8.4 Autocorrelation functions |
|
|
284 | (1) |
|
|
285 | (1) |
|
|
286 | (1) |
|
|
286 | (3) |
8 The Discrete Element Method in Three Dimensions |
|
289 | (46) |
|
8.1 Generalization of the force law to three dimensions |
|
|
289 | (3) |
|
|
290 | (1) |
|
8.1.2 Contact velocity and related forces |
|
|
291 | (1) |
|
8.2 Initialization of particles and their properties |
|
|
292 | (9) |
|
8.2.1 Basic concepts and data structures |
|
|
292 | (2) |
|
8.2.2 Particle generation and geometry update |
|
|
294 | (2) |
|
8.2.3 Decomposition of a polyhedron into tetrahedra |
|
|
296 | (3) |
|
8.2.4 Volume, mass and center of mass |
|
|
299 | (1) |
|
|
300 | (1) |
|
|
301 | (21) |
|
8.3.1 Triangle intersection by using the point-direction form |
|
|
301 | (4) |
|
8.3.2 Triangle intersection by using the point-normal form |
|
|
305 | (4) |
|
8.3.3 Comparison of the two algorithms |
|
|
309 | (1) |
|
8.3.4 Determination of inherited vertices |
|
|
310 | (2) |
|
8.3.5 Determination of generated vertices |
|
|
312 | (3) |
|
8.3.6 Determination of the faces of the overlap polyhedron |
|
|
315 | (5) |
|
8.3.7 Determination of the contact area and normal |
|
|
320 | (2) |
|
8.4 Optimization for vertex computation |
|
|
322 | (3) |
|
8.4.1 Determination of neighboring features |
|
|
323 | (1) |
|
8.4.2 Neighboring features for vertex computation |
|
|
324 | (1) |
|
8.5 The neighborhood algorithm for polyhedra |
|
|
325 | (4) |
|
8.5.1 'Sort and sweep' in three dimensions |
|
|
325 | (1) |
|
8.5.2 Worst-case performance in three dimensions |
|
|
326 | (1) |
|
8.5.3 Refinement of the contact list |
|
|
327 | (2) |
|
8.6 Programming strategy for the polyhedral simulation |
|
|
329 | (3) |
|
8.7 The effect of dimensionality and the choice of boundaries |
|
|
332 | (1) |
|
8.7.1 Force networks and dimensionality |
|
|
332 | (1) |
|
8.7.2 Quasi-two-dimensional geometries |
|
|
332 | (1) |
|
8.7.3 Packings and sound propagation |
|
|
333 | (1) |
|
|
333 | (1) |
|
|
333 | (2) |
9 Alternative Modeling Approaches |
|
335 | (18) |
|
9.1 Rigidly connected spheres |
|
|
335 | (1) |
|
|
336 | (9) |
|
9.2.1 Elliptical potentials |
|
|
337 | (1) |
|
9.2.2 Overlap computation for ellipses |
|
|
337 | (2) |
|
9.2.3 Newton-Raphson iteration |
|
|
339 | (1) |
|
9.2.4 Ellipse intersection computed with generalized eigenvalues |
|
|
340 | (4) |
|
|
344 | (1) |
|
|
344 | (1) |
|
|
345 | (2) |
|
9.3.1 Composites of arcs and cylinders |
|
|
345 | (1) |
|
|
345 | (2) |
|
|
347 | (1) |
|
|
347 | (2) |
|
9.4.1 Collision dynamics ('event-driven method') |
|
|
347 | (1) |
|
|
348 | (1) |
|
9.5 Discontinuous deformation analysis |
|
|
349 | (1) |
|
|
349 | (1) |
|
|
349 | (4) |
10 Running, Debugging and Optimizing Programs |
|
353 | (42) |
|
|
353 | (9) |
|
|
354 | (1) |
|
10.1.2 Choosing a programming language |
|
|
355 | (1) |
|
10.1.3 Composite data types, strong typing and object orientation |
|
|
356 | (1) |
|
|
356 | (1) |
|
10.1.5 Selecting variable names |
|
|
357 | (2) |
|
|
359 | (2) |
|
10.1.7 Particle simulations versus solving ordinary differential equations |
|
|
361 | (1) |
|
10.2 Hardware, memory and parallelism |
|
|
362 | (7) |
|
10.2.1 Architecture and programming model |
|
|
362 | (2) |
|
10.2.2 Memory hierarchy and cache |
|
|
364 | (1) |
|
10.2.3 Multiprocessors, multi-core processors and shared memory |
|
|
365 | (1) |
|
10.2.4 Peak performance and benchmarks |
|
|
365 | (2) |
|
10.2.5 Amdahl's law, speed-up and efficiency |
|
|
367 | (2) |
|
|
369 | (9) |
|
|
370 | (1) |
|
|
370 | (1) |
|
|
371 | (1) |
|
10.3.4 Writing and testing code |
|
|
372 | (5) |
|
|
377 | (1) |
|
10.4 Measuring load, time and profiles |
|
|
378 | (5) |
|
|
379 | (1) |
|
|
379 | (1) |
|
10.4.3 Performance monitor for multi-core processors |
|
|
380 | (1) |
|
10.4.4 The 'time' command |
|
|
380 | (3) |
|
|
383 | (1) |
|
10.4.6 Interactive profilers |
|
|
383 | (1) |
|
10.5 Speeding up programs |
|
|
383 | (8) |
|
10.5.1 Estimating the time consumption of operations |
|
|
383 | (1) |
|
10.5.2 Compiler optimization options |
|
|
384 | (5) |
|
10.5.3 Optimizations by hand |
|
|
389 | (1) |
|
10.5.4 Avoiding unnecessary disk output |
|
|
390 | (1) |
|
10.5.5 Look up or compute |
|
|
390 | (1) |
|
10.5.6 Shared-memory parallelism andOpenMP |
|
|
390 | (1) |
|
|
391 | (1) |
|
|
392 | (1) |
|
|
392 | (3) |
11 Beyond the Scope of This Book |
|
395 | (12) |
|
11.1 Non-convex particles |
|
|
395 | (1) |
|
11.2 Contact dynamics and friction |
|
|
395 | (1) |
|
|
396 | (1) |
|
11.4 Fragmentation and fracturing |
|
|
396 | (1) |
|
11.5 Coupling codes for particles and elastic continua |
|
|
396 | (2) |
|
11.6 Coupling of particles and fluid |
|
|
398 | (4) |
|
11.6.1 Basic considerations for the fluid simulation |
|
|
398 | (1) |
|
11.6.2 Verification of the fluid code |
|
|
398 | (1) |
|
11.6.3 Macroscopic simulations |
|
|
399 | (1) |
|
11.6.4 Microscopic simulations |
|
|
399 | (1) |
|
11.6.5 Particle approach for both particles and fluid |
|
|
400 | (2) |
|
11.6.6 Mesh-based modeling approaches |
|
|
402 | (1) |
|
11.7 The finite element method for contact problems |
|
|
402 | (1) |
|
11.8 Long-range interactions |
|
|
403 | (1) |
|
|
403 | (4) |
A MATLAB® as Programming Language |
|
407 | (26) |
|
A.1 Getting started with MATLAB® |
|
|
407 | (1) |
|
|
408 | (1) |
|
A.3 Matrix functions and linear algebra |
|
|
409 | (4) |
|
A.4 Syntax and control structures |
|
|
413 | (2) |
|
A.5 Self-written functions |
|
|
415 | (1) |
|
A.6 Function overwriting and overloading |
|
|
416 | (1) |
|
|
417 | (1) |
|
A.8 Solving ordinary differential equations |
|
|
418 | (2) |
|
A.9 Pitfalls of using MATLAB® |
|
|
420 | (4) |
|
A.10 Profiling and optimization |
|
|
424 | (1) |
|
A.11 Free alternatives to MATLAB® |
|
|
425 | (1) |
|
|
425 | (1) |
|
|
426 | (4) |
|
|
430 | (3) |
B Geometry and Computational Geometry |
|
433 | (18) |
|
B.1 Trigonometric functions |
|
|
433 | (2) |
|
B.2 Points, line segments and vectors |
|
|
435 | (1) |
|
|
436 | (5) |
|
B.3.1 Inner product (scalar product, dot product) |
|
|
436 | (1) |
|
|
437 | (1) |
|
|
438 | (1) |
|
|
438 | (2) |
|
|
440 | (1) |
|
B.4 Projections and rejections |
|
|
441 | (1) |
|
B.4.1 Projection of a vector onto another vector |
|
|
441 | (1) |
|
B.4.2 Rejection of one vector with respect to another vector |
|
|
442 | (1) |
|
|
442 | (4) |
|
B.5.1 Lines and line segments |
|
|
442 | (2) |
|
|
444 | (2) |
|
B.6 Oriented quantities: distance, area, volume etc. |
|
|
446 | (3) |
|
|
449 | (1) |
|
|
449 | (2) |
Index |
|
451 | |