Unscrupulous Scattering

Activity Information

Learning Goals

  • Use Coulomb’s law in a computational model to determine the force on an alpha particle (HS-PS2-4)
  • Understand how Newton’s second law relates net force, mass, and acceleration (HS-PS2-1)

Prior Knowledge Required

  • Vectors
  • Coulomb Force Equation(s)
  • Newton’s second law

Code Manipulation

  • Interpret Existing code
  • Modify Existing code
  • Create new code from mathematical equations

Activity

Handout – Unscrupulous Scattering

The annual L.O.V.E.M.U.F.F.I.N. (League of Villainous Evildoers Manically United for Frightening Investments in Naughtiness) conference of unscrupulousness is today!

This year, the event planners have decided to host a bit of a competition. Attendees of the conference have been given the same starter code and have been encouraged to form teams (click “remix” to save your own version of the code).

The team that creates the best model of Rutherford Scattering from this code will be able to implement it in Dr. Doofenshmirtz’s latest creation, the scatter-brained-inator, which will be able to derail anyone’s train of thought from whatever they were thinking to Rutherford Scattering. Doofenshmirtz claims it will let him take over the entire Tri-State-Area… somehow.

Eager to take part in this scheme, you’ve gathered a team to enter the competition. Good Luck!

Documentation found here might be useful.

Post-Coding Questions:

  1. What did you change in lines 32 and 33?
  2. What assumption(s) did you have to make to create this model?
  3. What other behaviors do you observe if you change the Impact Parameter?
  4. What does “Scale” in line 12 do? (try changing it)
  5. How is Newton’s Second Law used in this model?

Code

Link

GlowScript 3.1 VPython

#set the view - you might need to adjust this for your screen
scene.range = 10e-13

# lets define some useful constants
b = 1.5e-13 # Impact Parameter [M]
e = 1.602e-19 # Elementary Charge [C]
k = 9e9 # Coulomb Constant

# Object setup
scale = 15
gold = sphere(pos = vec(0,0,0),radius = scale*7.27e-15, color = color.yellow)      # Gold Nucleus
alpha = sphere(pos = vec(-16e-13,b,0), radius = scale*1.98e-15, color = color.red, make_trail=True) # Alpha Particle Nucleus

alphav = vec(1e7,0,0) # Alpha particle's initial velocity 
alpham = 4*1.66E-27   # kg

Fnet = vec(0,0,0)

# time setup - this takes place on a very small time scale, so we'll need a very small time step and final time
t=0
tf = 5e-19
dt = 1e-21

# Make the program run after a click
print("Click the program window to run.")
ev = scene.waitfor('click')

# -----Everything above this line does not need to be changed----------

goldQ  = 0 # Gold nucleus charge [C]
alphaQ = 0 # Alpha particle charge [C]

# Calculation Loop
while t < tf:
  rate(300) # tells the computer how fast to run the loop
  
  Fnet = Fnet
  
  alphav = alphav + (Fnet/alpham)*dt # Find the acceleration from the force and use it to update the alpha particle's velocity
  alpha.pos = alpha.pos + alphav*dt  # Update the alpha particle's position
  
  t = t + dt # Increase the time

Answer Key

Handout

First let’s fix the charge on each nucleus in lines 32 and 33. The elementary charge is already given in line 8 so we can simply multiply that by the number of protons in each nucleus to get the right amount of charge for each one:

goldQ = 79*e # Gold nucleus charge [C]
alphaQ = 2*e # Alpha particle charge [C]

Now all we need to do to complete the model is find the electric force on the alpha particle and set that equal to the net force.

If we approximate each nucleus as a point charge, we can use the equation:

With:

and

In this case, we care about the force on the alpha particle, so we will consider r obs to be the position of the alpha particle and r source to be the position of the gold nucleus.

The absolute value of a vector refers to the length or magnitude of that vector, which is given by the Pythagorean theorem. In glowscript, we can use the function mag() to find the magnitude of a vector.

Implementing this in the code looks like:

while t < tf:
  rate(300) # tells the computer how fast to run the loop
  
  rsep = alpha.pos - gold.pos # calculate the separation vector that points from the gold atom to the alpha particle
  Fc   = (k*goldQ*alphaQ*rsep)/(mag(rsep)**3) # Calculate the coulomb force on the alpha particle [N]
  Fnet = Fc # set the net force equal to the coulomb force
  
  alphav = alphav + (Fnet/alpham)*dt # Find the acceleration from the force and use it to update the alpha particle's velocity
  alpha.pos = alpha.pos + alphav*dt  # Update the alpha particle's position
  
  t = t + dt # Increase the time

Expected Responses to Post-Coding Questions:

  1. What did you change in lines 32 and 33?
    • We put the correct charges for each nucleus there, by multiplying the elementary charge by the number of protons in each nucleus.
  2. What assumption(s) did you have to make to create this model?
    • We assumed that the gold atom is stationary, which is inaccurate because the gold nucleus would experience the electrostatic force as well.
    • We assumed that we could treat both particles as point charges
  3. What other behaviors do you observe if you change the Impact Parameter?
    • Decreasing the Impact Parameter increases the angle that the alpha particle is deflected, eventually it is deflected forwards. Decreasing it decreases the the angle the alpha particle is deflected.
  4. What does “Scale” in line 12 do?
    • It increases the size of the spheres that represent the nuclei, so they are easier to see.
  5. How is Newton’s Second Law used in this model?
    • Newton’s second law F = ma is used in this code in the form a = F/m, to find the acceleration of the alpha particle.

Code

Link

GlowScript 3.1 VPython

#set the view - you might need to adjust this for your screen
scene.range = 10e-13

# lets define some useful constants
b = 1.5e-13 # Impact Parameter [M]
e = 1.602e-19 # Elementary Charge [C]
k = 9e9 # Coulomb Constant

# Object setup
scale = 15  # scale up the nuclear radii so it is easier to see what is going on
gold = sphere(pos = vec(0,0,0),radius = scale*7.27e-15, color = color.yellow)      # Gold Nucleus
alpha = sphere(pos = vec(-16e-13,b,0), radius = scale*1.98e-15, color = color.red, make_trail=True) # Alpha Particle Nucleus

alphav = vec(1e7,0,0) # Alpha particle's initial velocity 
alpham = 4*1.66E-27   # kg

Fnet = vec(0,0,0)

# time setup - this takes place on a very small time scale, so we'll need a very small time step and final time
t=0
tf = 5e-19
dt = 1e-21

# Make the program run after a click
print("Click the program window to run.")
ev = scene.waitfor('click')



goldQ = 79*e # Gold nucleus charge [C]
alphaQ = 2*e # Alpha particle charge [C]

# Calculation Loop
while t < tf:
  rate(300) # tells the computer how fast to run the loop
  
  rsep = alpha.pos - gold.pos # calculate the separation vector that points from the gold atom to the alpha particle
  Fc   = (k*goldQ*alphaQ*rsep)/(mag(rsep)**3) # Calculate the coulomb force on the alpha particle [N]
  Fnet = Fc # set the net force equal to the coulomb force
  
  alphav = alphav + (Fnet/alpham)*dt # Find the acceleration from the force and use it to update the alpha particle's velocity
  alpha.pos = alpha.pos + alphav*dt  # Update the alpha particle's position
  
  t = t + dt # Increase the time