Ball and Spring Model: Difference between revisions
(76 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Page created by Ashley Fleck. | Page created by Ashley Fleck. | ||
The | The interactions of atoms can be modeled using balls to represent the atoms and a spring to represent the chemical bond between them. | ||
== | ==The Main Idea== | ||
Everything that has mass (solids, liquids, gases, etc.) is made of matter, which is made up of atoms. Each atom is composed of a dense positively charged nucleus and a much less dense negatively charged electron cloud (1). [ | :Everything that has mass (solids, liquids, gases, etc.) is made of matter, which is made up of atoms. Each atom is composed of a dense positively charged nucleus and a much less dense negatively charged electron cloud (1). [[File:Atom diagram.png|200px|right]] The charges of the atom affect how they interact with other atoms. Simply, the positive charge of one positively charged nucleus of one atom is attracted to the negatively charged electron cloud of the other atom, which bounds the two atoms together. This interaction is known as the electric force. However, this attraction only occurs up to a specific point. Once the atoms near too close to one another, the attractive forces of the nucleus and electron cloud are outweighed by the repulsive forces of the two atoms’ electron clouds (while opposite charges attract, alike charges repel). Therefore, if the atoms are pushed too close to one another, they will repel each other rather than attract. (1). | ||
These interactions can be modeled using a familiar object: a spring! Every spring has a relaxed length. Once the spring is stretched past this relaxed length, the spring exerts a force inward in order to restore it to its original, relaxed length. If the spring is compressed smaller than the relaxed length, then it exerts a force outward in order to restore it to its original, relaxed length. Atoms can be modeled in the same way. Suppose two balls represent two atoms. These two atoms are connected by a spring, which represents the chemical bond (a bond between atoms that is a result of electric forces that bind protons and electrons to each other) between the two atoms (5 | :These interactions can be modeled using a familiar object: a spring! Every spring has a relaxed length. Once the spring is stretched past this relaxed length, the spring exerts a force inward in order to restore it to its original, relaxed length. If the spring is compressed smaller than the relaxed length, then it exerts a force outward in order to restore it to its original, relaxed length. Atoms can be modeled in the same way. Suppose two balls represent two atoms. These two atoms are connected by a spring, which represents the chemical bond (a bond between atoms that is a result of electric forces that bind protons and electrons to each other) between the two atoms (5). | ||
:This simple model of just two atoms connected by a spring can then be extended to represent an entire solid! If each atom was connected to six atoms (each at a 90 degree angle to the others), it would form a cube, or what’s known as a simple cubic lattice. A simple cubic lattice is the simplest model of a solid. A model of this can be seen below. [[File: Imageedit_3_2948105260.gif| thumb | 200px | right |Example of Coded Simple Cubic Lattice]] If one of the atoms is moved in any direction, it has a ripple effect with the other atoms (causing some to move away and some to come closer). Because they are all connected by these springs (which again, represents the electric forces between the atoms through a chemical bond), the movement of one atom affects all the other atoms (4). | |||
'''Macroscopic Stretch''' | |||
:That force exerted by a spring, mentioned earlier, in order to restore it back to its relaxed length after it has been compressed or stretched can be calculated. Every spring has a specific stiffness that is unique to that particular spring known as the spring constant (stiffness), k. It has units N/m. The stretch or compression of the spring is modeled by the difference in the final length minus the initial (relaxed length) and is denoted as ∆L = L – L0, where L is the final length and L0 is the relaxed length. Change in L is referred to as the macroscopic stretch. The force the spring exerts is a direct relationship between the spring stiffness and the macroscopic stretch, and is therefore: | |||
:::Fspring = k*∆L | |||
'''Microscopic Stretch''' | |||
The ball-and-spring model of a solid consists of balls that represent atoms held together by springs representing chemical bonds as a result of electric forces. As with a spring, a relaxed length is needed as a reference point to determine stretch or compression; the relaxed length of the spring between the two atoms is the center-to-center distance between the atoms, d. This distance would simply be twice the radius since the atoms would fill the space up entirely, minimizing the space between atoms. Since these bonds are modeled as springs, they also maintain a spring stiffness, k, specific to the spring and how much it will stretch. This stretch is defined as s, and is referred to as the microscopic stretch. | :The ball-and-spring model of a solid consists of balls that represent atoms held together by springs representing chemical bonds as a result of electric forces. As with a spring, a relaxed length is needed as a reference point to determine stretch or compression; the relaxed length of the spring between the two atoms is the center-to-center distance between the atoms, d. This distance would simply be twice the radius since the atoms would fill the space up entirely, minimizing the space between atoms. Since these bonds are modeled as springs, they also maintain a spring stiffness, k, specific to the spring and how much it will stretch. This stretch is defined as s, and is referred to as the microscopic stretch. | ||
'''Young’s modulus''' | |||
:Recall that the stiffness of a wire depends on how long the wire is and the thickness of that wire only; it does not depend on the material of wire, so different wires from the same material could still have different stiffnesses. | |||
:Calculating Young’s modulus is a way to measure the “springiness” of a material and factor out the size and shape of the particular wire. Young’s modulus is the ratio of the force exerted per square meter of area (F/A) and the stretch of the wire (∆L/L). It is a way to measure the “springiness” of a material. | |||
===A Mathematical Model=== | ===A Mathematical Model=== | ||
[[File:formulas.png]] | |||
===A Computational Model=== | ===A Computational Model=== | ||
This model of a solid can be simulated using VPython (written by Bruce Sherwood and licensed under Creative Commons 4.0). | |||
<code> | |||
N = 3 | |||
k = 1 | |||
m = 1 | |||
spacing = 1 | |||
atom_radius = 0.3*spacing | |||
L0 = spacing-1.8*atom_radius | |||
V0 = pi*(0.5*atom_radius)**2*L0 | |||
scene.background = color.white | |||
scene.center = 0.5*(N-1)*vector(1,1,1) | |||
dt = 0.04*(2*pi*sqrt(m/k)) | |||
axes = [vector(1,0,0), vector(0,1,0), vector(0,0,1)] | |||
class crystal: | |||
def atomAt(self, np): | |||
if (np.x>=0 and np.y>=0 and np.z>=0 and np.x<N and np.y<N and np.z<N): | |||
return self.atoms[int(np.x + np.y*N + np.z*N*N)] | |||
w = box() | |||
w.visible = False | |||
w.radius = atom_radius | |||
w.pos = np*spacing | |||
w.momentum = vector(0,0,0) | |||
return w | |||
def __init__(self, N, atom_radius, spacing, momentumRange ): | |||
self.atoms = [] | |||
self.springs = [] | |||
for z in range(N): | |||
for y in range(N): | |||
for x in range(N): | |||
atom = sphere() | |||
atom.pos = vector(x,y,z)*spacing | |||
atom.radius = atom_radius | |||
atom.color = vector(0,0.58,0.69) | |||
px = 2*random()-1 # ranges from -1 to +1 | |||
py = 2*random()-1 | |||
pz = 2*random()-1 | |||
atom.momentum = momentumRange*vector(px,py,pz) | |||
self.atoms.append( atom ) | |||
for d in range(3): | |||
for z in range(-1,N): | |||
for y in range(-1,N): | |||
for x in range(-1,N): | |||
atom = self.atomAt(vector(x,y,z)) | |||
neighbor = self.atomAt(vector(x,y,z)+axes[d]) | |||
if (atom.visible or neighbor.visible): | |||
spring = helix() | |||
spring.visible = atom.visible and neighbor.visible | |||
spring.thickness = 0.05 | |||
spring.radius = 0.5*atom_radius | |||
spring.length = spacing | |||
spring.up = vector(1,1,1) | |||
spring.atoms = [ atom, neighbor ] | |||
spring.color = vector(1,0.5,0) | |||
self.springs.append(spring) | |||
[[File: Imageedit_3_2948105260.gif| thumb | 200px | right |Example of Coded Simple Cubic Lattice]] | |||
c = crystal(N, atom_radius, spacing, 0.1*spacing*sqrt(k/m)) | |||
while True: | |||
rate(30) | |||
for atom in c.atoms: | |||
atom.pos = atom.pos + atom.momentum/m*dt | |||
for spring in c.springs: | |||
spring.axis = spring.atoms[1].pos - spring.atoms[0].pos | |||
L = mag(spring.axis) | |||
spring.axis = spring.axis.norm() | |||
spring.pos = spring.atoms[0].pos+0.5*atom_radius*spring.axis | |||
Ls = L-1*atom_radius | |||
spring.length = Ls | |||
Fdt = spring.axis * (k*dt * (1-spacing/L)) | |||
spring.atoms[0].momentum = spring.atoms[0].momentum + Fdt | |||
spring.atoms[1].momentum = spring.atoms[1].momentum - Fdt | |||
==Examples== | ==Examples== | ||
===Simple=== | |||
[[File:simple ex.png| 200px |right]] | |||
'''Question''' | |||
Young’s modulus for brass is 8.96*10^11 Pa. A 100N weight is attached to a 5m length of brass wire. Find the increase in length of the wire. The diameter is 1.5mm. | |||
'''Solution''' | |||
[[File:Simple exam.png]] | |||
===Middling=== | ===Middling=== | ||
'''Question''' | |||
You stack 1000 pennies, face to face, and apply a force of 25,000N to the top penny. While the force is applied, you find the thickness of the stack decrease by 1mm. The diameter of a penny is 1.905e-2m. The thickness of a penny is 1.3*10^-3m). | |||
A) Calculate Young’s modulus of zinc. | |||
B) Calculate the interatomic spring stiffness for zinc. The diameter of a single zinc atom is 2.5 * 10^-10m. | |||
'''Solution | |||
A)[[File:Part 1.png]] | |||
B)[[file:Part 2.png]] | |||
===Difficult=== | ===Difficult=== | ||
'''Question''' | |||
A wire made of an unknown alloy hangs from a support in the ceiling. You measure the relaxed length of the wire to be 1.8m long, and the radius of the wire to be 0.00025m. When you hang a 5kg mass from the wire, you measure that it stretches a distance of 4 x 10^-3m. the average bond length between atoms is 1.3 x 10^-10m for this alloy. | |||
A) If you treat the wire as a macroscopic spring, what is the overall spring stiffness of the wire? | |||
B) What is the value of Young’s modulus for this alloy? | |||
C) What is the stiffness of a typical interatomic bond in the alloy? | |||
D) You cut the wire into four pieces of equal length and hang a 5kg mass from one of the wires. How much does this wire stretch? | |||
E) You bundle (side by side) each of the four pieces of wire together and hang a 5kg mass from the bundle. How much does this bundle of wires stretch? | |||
'''Solution''' | |||
A)[[File:Part A.png]] | |||
B)[[File: New2.png]] | |||
C)[[File: New3.png]] | |||
D)[[File: New4.png]] | |||
E)[[File: New5.png]] | |||
==Connectedness== | ==Connectedness== | ||
1. How is this topic connected to something that you are interested in? | |||
One of my favorite hobbies is baking. I bake something just about every day and will make anything from snickerdoodles to lemon bars to banana bread. An important factor that often determines the success of the final product is its consistency. A brownie that is too soft won't support its own geometry, yet one too hard will be difficult to chew. The stiffness and consistency of a baked good is determined by its Young's modulus, which is a function of the applied stress and the resulting strain of the material. | |||
2. How is it connected to your major? | |||
I am majoring in Biomedical Engineering, a major in which we use different biomaterials. When developing devices for medical purposes (crutches, prosthetics, wheelchairs, etc.) from biomaterials or using biomaterials to replace parts of the body (i.e. bone structure replacement), there are many factors to take in to consideration. One of these factors deals with Young's modulus, stress, and strain. Understanding the ball-and-spring model and subsequently Young's modulus is important to ensure that the proper materials are used for the appropriate devices and won't degrade, break, or deform when in use. | |||
3. Is there an interesting industrial application? | |||
Yes! As mentioned before, one of the ways that the ball and spring model of a solid (and specifically Young's modulus, stress, and strain that stem from the model) related to the biomedical industry is through bone structure replacement. Using this model, it can be determined whether or not the biomaterial has similar deformable properties with the material it will replace. Typically, these materials need high Young's modulus' because they bear a high amount of force. Therefore, a selected biomaterial can be determined a good fit for replacement if it's Young's modulus is similar to bone. | |||
==History== | ==History== | ||
In the 1600's, Robert Hooke developed the idea of Hooke's Law, which states that for relatively small deformations of an object, the deformation is proportional to the force that deformed it. This lead to the development of the equation to calculate force of the spring; where it is equal to the spring stiffness multiplied by the change in length. This fundamental concept lead to other developments in Molecular Mechanics. However, the specific history for the ball-and-spring model is unknown, although the major developments in this area were accomplished in and around the 1930s and 1940s (including developments by T.L. Hill, I. Dostrovsky, and F. H. Westheimer) (6). | |||
== See also == | == See also == | ||
The Ball-and-Spring model deals primarily with [[Kinds of Matter]], [[Young's Modulus]], [[Hooke's Law]], and the [[Length and Stiffness of an Interatomic Bond]]. | |||
===Further reading=== | ===Further reading=== | ||
The [[Kinetics of materials]] is a book written by Robert W. Balluffi that goes in-depth about many different concepts, including the ball-and-spring model and Young's modulus. | |||
The [[Molecular Dynamics and Spectroscopy by Stimulated Emission Pumping]], written by Hai-Lung Dai and Robert W. Field, looks at a different aspect of the ball-and-spring model and determines its role in quantum eigenstate spectra. | |||
===External links=== | ===External links=== | ||
#http://www.nuffieldfoundation.org/practical-physics/model-vibrating-atoms-solid | |||
#https://www.physics.ncsu.edu/clarke/teaching/class.html | |||
#http://umdberg.pbworks.com/w/page/46030513/A%20simple%20model%20of%20solid%20matter | |||
==References== | ==References== | ||
#http://p3server.pa.msu.edu/coursewiki/doku.php?id=183_notes:model_of_solids | |||
#http://webs.morningside.edu/slaven/Physics/atom/atom7.html | |||
#http://bulldog2.redlands.edu/facultyfolder/eric_hill/Phys231/Lecture/Lect%209.pdf | |||
#http://www.matterandinteractions.org/Content/Materials/materials.html | |||
#Chabay, Ruth W., and Bruce A. Sherwood. Matter & Interactions. 3rd ed. | |||
#http://www.sdsc.edu/~kimb/history.html | |||
[[Category: | [[Category:Energy]] |
Latest revision as of 18:46, 18 August 2019
Page created by Ashley Fleck.
The interactions of atoms can be modeled using balls to represent the atoms and a spring to represent the chemical bond between them.
The Main Idea
- Everything that has mass (solids, liquids, gases, etc.) is made of matter, which is made up of atoms. Each atom is composed of a dense positively charged nucleus and a much less dense negatively charged electron cloud (1). The charges of the atom affect how they interact with other atoms. Simply, the positive charge of one positively charged nucleus of one atom is attracted to the negatively charged electron cloud of the other atom, which bounds the two atoms together. This interaction is known as the electric force. However, this attraction only occurs up to a specific point. Once the atoms near too close to one another, the attractive forces of the nucleus and electron cloud are outweighed by the repulsive forces of the two atoms’ electron clouds (while opposite charges attract, alike charges repel). Therefore, if the atoms are pushed too close to one another, they will repel each other rather than attract. (1).
- These interactions can be modeled using a familiar object: a spring! Every spring has a relaxed length. Once the spring is stretched past this relaxed length, the spring exerts a force inward in order to restore it to its original, relaxed length. If the spring is compressed smaller than the relaxed length, then it exerts a force outward in order to restore it to its original, relaxed length. Atoms can be modeled in the same way. Suppose two balls represent two atoms. These two atoms are connected by a spring, which represents the chemical bond (a bond between atoms that is a result of electric forces that bind protons and electrons to each other) between the two atoms (5).
- This simple model of just two atoms connected by a spring can then be extended to represent an entire solid! If each atom was connected to six atoms (each at a 90 degree angle to the others), it would form a cube, or what’s known as a simple cubic lattice. A simple cubic lattice is the simplest model of a solid. A model of this can be seen below. If one of the atoms is moved in any direction, it has a ripple effect with the other atoms (causing some to move away and some to come closer). Because they are all connected by these springs (which again, represents the electric forces between the atoms through a chemical bond), the movement of one atom affects all the other atoms (4).
Macroscopic Stretch
- That force exerted by a spring, mentioned earlier, in order to restore it back to its relaxed length after it has been compressed or stretched can be calculated. Every spring has a specific stiffness that is unique to that particular spring known as the spring constant (stiffness), k. It has units N/m. The stretch or compression of the spring is modeled by the difference in the final length minus the initial (relaxed length) and is denoted as ∆L = L – L0, where L is the final length and L0 is the relaxed length. Change in L is referred to as the macroscopic stretch. The force the spring exerts is a direct relationship between the spring stiffness and the macroscopic stretch, and is therefore:
- Fspring = k*∆L
Microscopic Stretch
- The ball-and-spring model of a solid consists of balls that represent atoms held together by springs representing chemical bonds as a result of electric forces. As with a spring, a relaxed length is needed as a reference point to determine stretch or compression; the relaxed length of the spring between the two atoms is the center-to-center distance between the atoms, d. This distance would simply be twice the radius since the atoms would fill the space up entirely, minimizing the space between atoms. Since these bonds are modeled as springs, they also maintain a spring stiffness, k, specific to the spring and how much it will stretch. This stretch is defined as s, and is referred to as the microscopic stretch.
Young’s modulus
- Recall that the stiffness of a wire depends on how long the wire is and the thickness of that wire only; it does not depend on the material of wire, so different wires from the same material could still have different stiffnesses.
- Calculating Young’s modulus is a way to measure the “springiness” of a material and factor out the size and shape of the particular wire. Young’s modulus is the ratio of the force exerted per square meter of area (F/A) and the stretch of the wire (∆L/L). It is a way to measure the “springiness” of a material.
A Mathematical Model
A Computational Model
This model of a solid can be simulated using VPython (written by Bruce Sherwood and licensed under Creative Commons 4.0).
N = 3
k = 1
m = 1
spacing = 1
atom_radius = 0.3*spacing
L0 = spacing-1.8*atom_radius
V0 = pi*(0.5*atom_radius)**2*L0
scene.background = color.white
scene.center = 0.5*(N-1)*vector(1,1,1)
dt = 0.04*(2*pi*sqrt(m/k))
axes = [vector(1,0,0), vector(0,1,0), vector(0,0,1)]
class crystal:
def atomAt(self, np):
if (np.x>=0 and np.y>=0 and np.z>=0 and np.x<N and np.y<N and np.z<N):
return self.atoms[int(np.x + np.y*N + np.z*N*N)]
w = box()
w.visible = False
w.radius = atom_radius
w.pos = np*spacing
w.momentum = vector(0,0,0)
return w
def __init__(self, N, atom_radius, spacing, momentumRange ):
self.atoms = []
self.springs = []
for z in range(N):
for y in range(N):
for x in range(N):
atom = sphere()
atom.pos = vector(x,y,z)*spacing
atom.radius = atom_radius
atom.color = vector(0,0.58,0.69)
px = 2*random()-1 # ranges from -1 to +1
py = 2*random()-1
pz = 2*random()-1
atom.momentum = momentumRange*vector(px,py,pz)
self.atoms.append( atom )
for d in range(3):
for z in range(-1,N):
for y in range(-1,N):
for x in range(-1,N):
atom = self.atomAt(vector(x,y,z))
neighbor = self.atomAt(vector(x,y,z)+axes[d])
if (atom.visible or neighbor.visible):
spring = helix()
spring.visible = atom.visible and neighbor.visible
spring.thickness = 0.05
spring.radius = 0.5*atom_radius
spring.length = spacing
spring.up = vector(1,1,1)
spring.atoms = [ atom, neighbor ]
spring.color = vector(1,0.5,0)
self.springs.append(spring)
c = crystal(N, atom_radius, spacing, 0.1*spacing*sqrt(k/m))
while True:
rate(30)
for atom in c.atoms:
atom.pos = atom.pos + atom.momentum/m*dt
for spring in c.springs:
spring.axis = spring.atoms[1].pos - spring.atoms[0].pos
L = mag(spring.axis)
spring.axis = spring.axis.norm()
spring.pos = spring.atoms[0].pos+0.5*atom_radius*spring.axis
Ls = L-1*atom_radius
spring.length = Ls
Fdt = spring.axis * (k*dt * (1-spacing/L))
spring.atoms[0].momentum = spring.atoms[0].momentum + Fdt
spring.atoms[1].momentum = spring.atoms[1].momentum - Fdt
Examples
Simple
Question
Young’s modulus for brass is 8.96*10^11 Pa. A 100N weight is attached to a 5m length of brass wire. Find the increase in length of the wire. The diameter is 1.5mm.
Solution
Middling
Question
You stack 1000 pennies, face to face, and apply a force of 25,000N to the top penny. While the force is applied, you find the thickness of the stack decrease by 1mm. The diameter of a penny is 1.905e-2m. The thickness of a penny is 1.3*10^-3m).
A) Calculate Young’s modulus of zinc.
B) Calculate the interatomic spring stiffness for zinc. The diameter of a single zinc atom is 2.5 * 10^-10m.
Solution
Difficult
Question
A wire made of an unknown alloy hangs from a support in the ceiling. You measure the relaxed length of the wire to be 1.8m long, and the radius of the wire to be 0.00025m. When you hang a 5kg mass from the wire, you measure that it stretches a distance of 4 x 10^-3m. the average bond length between atoms is 1.3 x 10^-10m for this alloy.
A) If you treat the wire as a macroscopic spring, what is the overall spring stiffness of the wire?
B) What is the value of Young’s modulus for this alloy?
C) What is the stiffness of a typical interatomic bond in the alloy?
D) You cut the wire into four pieces of equal length and hang a 5kg mass from one of the wires. How much does this wire stretch?
E) You bundle (side by side) each of the four pieces of wire together and hang a 5kg mass from the bundle. How much does this bundle of wires stretch?
Solution
Connectedness
1. How is this topic connected to something that you are interested in?
One of my favorite hobbies is baking. I bake something just about every day and will make anything from snickerdoodles to lemon bars to banana bread. An important factor that often determines the success of the final product is its consistency. A brownie that is too soft won't support its own geometry, yet one too hard will be difficult to chew. The stiffness and consistency of a baked good is determined by its Young's modulus, which is a function of the applied stress and the resulting strain of the material.
2. How is it connected to your major?
I am majoring in Biomedical Engineering, a major in which we use different biomaterials. When developing devices for medical purposes (crutches, prosthetics, wheelchairs, etc.) from biomaterials or using biomaterials to replace parts of the body (i.e. bone structure replacement), there are many factors to take in to consideration. One of these factors deals with Young's modulus, stress, and strain. Understanding the ball-and-spring model and subsequently Young's modulus is important to ensure that the proper materials are used for the appropriate devices and won't degrade, break, or deform when in use.
3. Is there an interesting industrial application?
Yes! As mentioned before, one of the ways that the ball and spring model of a solid (and specifically Young's modulus, stress, and strain that stem from the model) related to the biomedical industry is through bone structure replacement. Using this model, it can be determined whether or not the biomaterial has similar deformable properties with the material it will replace. Typically, these materials need high Young's modulus' because they bear a high amount of force. Therefore, a selected biomaterial can be determined a good fit for replacement if it's Young's modulus is similar to bone.
History
In the 1600's, Robert Hooke developed the idea of Hooke's Law, which states that for relatively small deformations of an object, the deformation is proportional to the force that deformed it. This lead to the development of the equation to calculate force of the spring; where it is equal to the spring stiffness multiplied by the change in length. This fundamental concept lead to other developments in Molecular Mechanics. However, the specific history for the ball-and-spring model is unknown, although the major developments in this area were accomplished in and around the 1930s and 1940s (including developments by T.L. Hill, I. Dostrovsky, and F. H. Westheimer) (6).
See also
The Ball-and-Spring model deals primarily with Kinds of Matter, Young's Modulus, Hooke's Law, and the Length and Stiffness of an Interatomic Bond.
Further reading
The Kinetics of materials is a book written by Robert W. Balluffi that goes in-depth about many different concepts, including the ball-and-spring model and Young's modulus.
The Molecular Dynamics and Spectroscopy by Stimulated Emission Pumping, written by Hai-Lung Dai and Robert W. Field, looks at a different aspect of the ball-and-spring model and determines its role in quantum eigenstate spectra.
External links
References
- http://p3server.pa.msu.edu/coursewiki/doku.php?id=183_notes:model_of_solids
- http://webs.morningside.edu/slaven/Physics/atom/atom7.html
- http://bulldog2.redlands.edu/facultyfolder/eric_hill/Phys231/Lecture/Lect%209.pdf
- http://www.matterandinteractions.org/Content/Materials/materials.html
- Chabay, Ruth W., and Bruce A. Sherwood. Matter & Interactions. 3rd ed.
- http://www.sdsc.edu/~kimb/history.html