Preface |
|
xi | |
Author |
|
xiii | |
|
SECTION I Getting Your Feet on the Ground |
|
|
|
1 Building Your Basic Tool Box |
|
|
3 | (24) |
|
1.1 Introduction: When are Computer Simulations Useful? |
|
|
3 | (6) |
|
1.2 How Much Should a Simulation be Trusted? |
|
|
9 | (2) |
|
1.3 Who First Used Them and Why They Came About |
|
|
11 | (4) |
|
1.4 What's the State of the Art? What Limits Have Been Pushed? |
|
|
15 | (1) |
|
1.5 The Simulation's New Clothes |
|
|
16 | (2) |
|
1.6 Computer Modeling is a Very Interdisciplinary Field |
|
|
18 | (2) |
|
1.7 What Types of Models are Most Important for Everyday Things? |
|
|
20 | (3) |
|
1.8 When Do You Build Your Own Tools and When are Black Boxes the Best? |
|
|
23 | (4) |
|
|
25 | (1) |
|
|
25 | (2) |
|
2 Getting to Know the Neighborhood |
|
|
27 | (32) |
|
|
27 | (1) |
|
2.2 The UNIX Operating System |
|
|
28 | (8) |
|
|
36 | (1) |
|
2.4 A Working Introduction to C++: Basic Coding |
|
|
37 | (8) |
|
2.5 How Do I Choose a Good Algorithm? |
|
|
45 | (1) |
|
2.6 Compiling, Linking, and Executing Simple Programs |
|
|
46 | (1) |
|
2.7 Examples of What Can be Done Wrong: Compile Errors, Execution Errors, and Bugs |
|
|
47 | (5) |
|
2.8 Doing it Without a Supercomputer: Computing on Macs and PC's |
|
|
52 | (1) |
|
2.9 Mapping Your C++ Knowledge to Other Computing Languages |
|
|
52 | (2) |
|
2.10 Critically Thinking about Your Work: Relevance, Applicability, and Limits |
|
|
54 | (1) |
|
2.11 Your Work in the Broader Context of the Scientific and Technological Community |
|
|
55 | (4) |
|
|
55 | (2) |
|
|
57 | (1) |
|
|
57 | (2) |
|
3 Visualizing Your Work and Representing Your Best Story |
|
|
59 | (42) |
|
3.1 Introductory Thoughts |
|
|
59 | (1) |
|
3.2 Visualizing Two-Dimensional Data Sets |
|
|
60 | (3) |
|
3.3 Visualizing Three-Dimensional Data Sets |
|
|
63 | (1) |
|
3.4 Making Pictures and Movies |
|
|
63 | (1) |
|
3.5 A Sample Visualization Program |
|
|
64 | (1) |
|
3.6 Four- and Higher-Dimensional Visualization: Yes, It Really Works! |
|
|
65 | (1) |
|
3.7 Cross-Sensory Visualization: What If You Can't See or Hear? |
|
|
66 | (2) |
|
3.8 Limiting Cases and Effective (Reduced) Systems |
|
|
68 | (3) |
|
3.9 Visualizing Calculus Part I: Derivatives |
|
|
71 | (2) |
|
3.10 Visualizing Calculus Part II: Integrals |
|
|
73 | (2) |
|
3.11 Critically Thinking about How Best to Visualize Your Results |
|
|
75 | (1) |
|
3.12 Examples of Visualization and Presentation of Data |
|
|
75 | (8) |
|
3.13 Visualizing Various Stages of Cancer Cell Growth |
|
|
83 | (18) |
|
|
95 | (2) |
|
|
97 | (4) |
|
SECTION II Models of Everyday Things |
|
|
|
4 Things We See in the News: The Fun and the Dangerous |
|
|
101 | (50) |
|
4.1 Modeling the Flight of Objects through Fluids: Using Science to Play a Better Game |
|
|
101 | (10) |
|
4.2 Physics on the Field: Achieving More Efficient Football Tackles |
|
|
111 | (13) |
|
4.3 A Physics Nerd, a Cool Guy, and a Pool Table |
|
|
124 | (13) |
|
4.4 Understanding Things of Danger in Hindsight and Foresight |
|
|
137 | (4) |
|
|
141 | (10) |
|
|
147 | (3) |
|
|
150 | (1) |
|
5 The Many Faces of Music |
|
|
151 | (22) |
|
5.1 Introductory Thoughts |
|
|
151 | (1) |
|
5.2 A Finite Difference Simulation of a Guitar String |
|
|
151 | (4) |
|
5.3 A Little Mathematical Overhead that Provides a Wealth of Understanding |
|
|
155 | (3) |
|
5.4 Living in 2D: Sheets and Drums |
|
|
158 | (3) |
|
5.5 Sometimes You Win and Sometimes You Lose: Advantages and Disadvantages of Each Method |
|
|
161 | (1) |
|
5.6 When Resonance Isn't Your Friend: The Tacoma Narrows Bridge |
|
|
161 | (1) |
|
5.7 Matter Waves: Schrodinger's Equation |
|
|
162 | (11) |
|
|
171 | (1) |
|
|
172 | (1) |
|
|
173 | (52) |
|
6.1 Introductory Thoughts |
|
|
173 | (1) |
|
6.2 How Fluids Move around Boundaries |
|
|
174 | (6) |
|
6.3 A Sample Program that Calculates Wind Velocity in Cartesian Coordinates |
|
|
180 | (11) |
|
|
191 | (3) |
|
6.5 A Sample Program that Simulates a Snowstorm |
|
|
194 | (9) |
|
6.6 How Fluids Move through Porous Media |
|
|
203 | (13) |
|
|
216 | (9) |
|
|
220 | (2) |
|
|
222 | (3) |
|
SECTION III Beyond Everyday Phenomena |
|
|
|
7 One of the Most Versatile Simulation Tools Around |
|
|
225 | (44) |
|
|
225 | (1) |
|
7.2 Theory Behind the Material Point Method |
|
|
225 | (7) |
|
7.3 A Material Point Method Program |
|
|
232 | (28) |
|
7.4 Applications of the Material Point Method Simulation |
|
|
260 | (9) |
|
|
266 | (1) |
|
|
267 | (2) |
|
8 Simulations that Explore Atoms and Planets |
|
|
269 | (52) |
|
8.1 Introduction to Molecular Dynamics Computer Simulations |
|
|
269 | (1) |
|
8.2 Molecular Dynamics Simulation of a System of Particles |
|
|
270 | (18) |
|
8.3 Monte Carlo Simulations |
|
|
288 | (13) |
|
8.4 How Do We Choose MD or MC? |
|
|
301 | (2) |
|
8.5 The Dynamics of Planetary and Galactic Systems |
|
|
303 | (10) |
|
8.6 Advanced Planetary Dynamics Methods Designed to Save Time: Go Climb a Tree |
|
|
313 | (8) |
|
|
314 | (2) |
|
|
316 | (5) |
|
SECTION IV A Glimpse into More Advanced Computing |
|
|
|
9 Parallel Computing, Scripting and GPU's |
|
|
321 | (18) |
|
9.1 Introductory Thoughts |
|
|
321 | (1) |
|
9.2 Decompositions: Breaking Up is Easy to Do |
|
|
322 | (1) |
|
9.3 Example Parallel Programs |
|
|
322 | (12) |
|
9.4 Compiling and Executing MPI Codes |
|
|
334 | (1) |
|
|
334 | (2) |
|
9.6 Graphics Processing Units (GPU's) |
|
|
336 | (3) |
|
|
336 | (2) |
|
|
338 | (1) |
Appendix A Integrated C++ / Python Simulation of Guitar Sounds |
|
339 | (6) |
Index |
|
345 | |