10A – Rutherford Scattering

In this exercise you will simulate the interaction of an alpha particle scattering from a Gold nucleus.

The following code contains the skeleton of a computational model of a collision between a single moving alpha particle and a single gold nucleus that is initially stationary.

  • The alpha particle has an initial kinetic energy of 5 MeV and approaches the Gold nucleus with an impact parameter of \(b = 5\) fm.
  • An alpha particle consists of 2 protons and 2 neutrons. A gold nucleus contains 79 protons and 118 neutrons.
  • There are several important pieces of the physical model missing from the code that you will need to eventually include.
# Rutherford Scattering Exercise

# Team Name: 
#  Student Name 1
#  Student Name 2
#  Student Name 3

# Define Constants
q_e = 1.6e-19           # Charge on a proton [Coulombs]
m_p = 1.7e-27           # Mass of proton [kg]

oofpez = 9e9            # oofpez = One Over Four Pi Epsilon Zero [N m**2 / C**2]

dt = 1e-23              # Time step [seconds]
b = 5e-15               # Impact Parameter [m]

# Model the Au nucleus as a yellow sphere of radius 4 fm originally located at the origin
Au = sphere(pos=vector(0,0,0), radius=4e-15, color=color.yellow, make_trail=True) 

Au.m = (79+118) * m_p   # Mass of Gold nucleus, 79 protons and 118 neutrons [kg]
Au.q    = 79 * q_e      # Charge of Gold nucleus [Coulombs]

# Define momentum of Au.  Since initially at rest, velocity = <0,0,0>
Au.p = Au.m*vector(0,0,0)   


# Model the Alpha particle as a magenta sphere of radius 1 fm 
Alpha = sphere(radius=1e-15, color=color.magenta, make_trail=True) 

# Set the initial position of the Alpha particle to be a significant distance to the left
#  of the Au nucleus and above the x axis by an amount equal to the impact parameter.
Alpha.pos = vector(-1e-13,b,0)

Alpha.m = (2+2) * m_p   # Mass of Alpha particle, 2 protons and 2 neutrons [kg]
Alpha.q =  2 * q_e      # Charge of Alpha particle [Coulombs]


# Define initial momentum of Alpha particle using its initial kinetic energy.
E0 = 5e6 * 1.6e-19                          # Energy equivalent of 5MeV in Joules
Alpha.p = vector(sqrt(2*Alpha.m*E0),0,0)    # Initially moving in +x direction.

# Compute the initial separation of the Alpha and Au and store it in variable r0
r  = Alpha.pos - Au.pos
r0 = mag(r)

t=0 

# Continue until separation distance is greater than the initial separation, that is
#  until the Alpha has finished interacting with the Au and is at least as far away
#  as it was in the beginning.

while mag(r) <= r0:
    rate(100)
    
    # Compute new separation vector
    r = Alpha.pos - Au.pos
    
    
    # Update the position of the Alpha Particle
    Alpha.pos = Alpha.pos + (Alpha.p/Alpha.m) * dt

    t = t + dt

Activities:

  1. Read the above code and predict what will happen when the unmodified skeleton program is run. Then copy the above code into a new GlowScript program and run it to check your prediction.
  2. Be sure to save the program in a public folder and add the name of your team and the names of students present working on the exercise in the comments at the top of the program.
  3. Modify the program so that it represents a reasonable physical model of this interaction.
  4. Does the gold nucleus move during these collisions? Should it? You can see the trail left by the gold nucleus better if you make this object slightly transparent by adding this line of code before the loop:
    Au.opacity = 0.7
  5. Familiarize yourself with where impact parameter \(b\) is both defined and used this program. Experiment with different impact parameters, and discuss with your team members what you observe.
  6. Add code to your program to compute and print the distance of closest approach of the alpha particle and Au nucleus. To do this you will want to initialize a variable, suppose we call it d, with the initial separation distance before the loop begins. Then you could use a command such as
    d = min(d,mag(r))

    inside the loop to reset d to the smaller of the current value of d and the magnitude of the current value of the separation vector r.

  7. After the loop, add to your program a calculation of the scattering angle θ (the angle between the final and initial momenta vectors of the alpha particle). You will need to introduce a new variable to save the value of initial momentum of the alpha particle before the loop so you can use it later when finding the scattering angle.

    The VPython function for the dot product is dot(A,B). The function acos(D) returns the angle (in radians) whose cosine is D. Check to make sure the angle you calculate makes sense in terms of what you observe on the screen.

  8. Find values of the impact parameter that lead to the following scattering angles:
    1. 90°
    2. 68°
    3. 38°
    4. 13°
  9. Add graphs to display the values of the \(x\) and \(y\) components of the momentum of each particle, and the sums of all \(x\) components and of all \(y\) components, as a function of time.
    • Is momentum conserved during the collision?
    • What should you change in your program if you find that momentum is not conserved?

    By adding the following code before the loop you can create two different graphing windows, and plot all curves simultaneously:

    # Set up the graph displays 
    gdx = gdisplay(width=600, height=200, title='x Momentum vs Time', background=vector(0.8, 0.8, 0.8))
    p_Au_x_graph = gcurve(color=color.yellow, label="Au") 
    p_Alpha_x_graph = gcurve(color=color.magenta, label="Alpha") 
    # Other curves as needed
    
    gdy = gdisplay(width=600, height=200, title='y Momentum vs Time', background=vector(0.8, 0.8, 0.8))
    p_Au_y_graph = gcurve(color=color.yellow, label="Au")
    # Other gcurves as needed
    

    In addition, you will need to add points to the graph inside the loop as the position and momentum of the particles are updated. Examples for the \(x\)-components of momentum for the Au nucleus and alpha particle are shown below. You will need to add additional lines for the total \(x\)-component of momentum and for all of the \(y\)-components of momentum.

        # Update the momentum graphs
        p_Au_x_graph.plot(pos = (t, Au.p.x))
        p_Alpha_x_graph.plot(pos = (t, Alpha.p.x))
    

Deliverables:

Copy the text in the box below into a plain text file (*.txt) and add the requested information. Submit your completed file using GradeScope.

Rutherford Scattering

Student Name 1
Student Name 2
Student Name 3

Link to (public) program on GlowScript


Scattering Angle (deg)    Impact Parameter (fm)    Closest Approach (fm)
         90
         68
         38
         13