# Scattering

### 1 collaborator

Uri Wilensky (Author)

### Tags

(This model has yet to be categorized with any tags)
Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 5.0.4 • Viewed 143 times • Downloaded 15 times • Run 0 times

## WHAT IS IT?

This project models the scattering of particles from a target that repels them. An example of this is the scattering of alpha particles (helium nuclei) from a heavy nucleus such as gold. This experiment, first done by Rutherford, provided important evidence that the positive charge in an atom is concentrated in a small place.

In this model, the target is an immovable patch with a variable charge and a variable radius in the center of the world. A parallel beam of particles is sent upward from the bottom of the world, and the path of each particle is traced. Each particle is repelled from the target according to Coulomb's inverse square law, modified for a distributed nuclear charge. The particles do not interact with each other.

## HOW IT WORKS

Each particle is given a position, a velocity, and a charge. Every time tick, each particle calculates the force that is enacted on it by the repulsion of the central charge. This equation is Coulomb's inverse square law. After the force is determined, it will revise it current velocity according the equation F = M * A where M = 1. After which, the particle's new position is found by adding its new velocity to its current position.

## HOW TO USE IT

First select the number of particles with the NUMBER slider. Set their initial velocity with the VELOCITY slider. Set the charge of the target with the CHARGE slider. Set the radius of the target with the RADIUS slider. Then press the SETUP button.

When the sliders have been set to a desired level and SETUP has been pressed, press the GO button to begin the simulation.

The TRACE? switch, if on, has each turtle mark out its position every time-tick. In this way, you can see the arcs formed by different particles' travels. When TRACE? is off, only one particle (turtle 0) marks out its position.

The TURTLE-0-POSITION slider sets the starting x-coordinate of turtle 0. If TURTLE-0-POSITION is 0, the particle approaches the target head-on. If it's positive, turtle 0 starts off to the right of center, and if it's negative, turtle 0 starts off to the left of center.

The SPEED of turtle 0 is displayed in a plot as well as its DISTANCE from the target. The SCATTER-ANGLE monitor shows turtle 0's heading. (Zero is straight up, 90 is right, and so on.)

If set to on, the SHOW-TARGET? switch allows you to see the target.

## THINGS TO NOTICE

Each setting gives a family of paths for particles of equivalent initial velocity but different starting positions. What is the shape of each trajectory? Is it the same shape approaching and leaving the target? What is the shape of the family of curves?

Do any of the paths intersect? Does it depend on the settings of the sliders?

If two particles start off close to each other, will they end up close to each other?

A very large nucleus represents J.J. Thompson's "plum pudding" model of the atom, in which the charge was thought to be spread out in a volume as large as the atom itself. A very small nucleus represents Rutherford's discovery, namely that the charge is concentrated in a very small nucleus, about 1/10000 the size of the atom.

## THINGS TO TRY

You can study the trajectory of one particle by turning off TRACE?. Change the TURTLE-0-POSITION slider to change the single particle's initial position. This will allow you to study individual paths. What happens to the particle's path when its velocity and the charge of the target are changed? What needs to be true for particles to bounce almost straight backward?

The value of the SCATTER-ANGLE monitor, averaged over millions of particles, along with the particles' speed and the charge on the nucleus, is what an experimenter would actually be able to measure. Devise an experiment that would give information about the size of the nucleus from this information alone.

If you knew the particle velocity and nuclear charge from other experiments, could you devise an experiment, using this model that would determine the size of the target?

## EXTENDING THE MODEL

Put in a different function for the force between the nucleus and the particles --- 1/r dependence, r dependence, or attraction instead of repulsion. This can be done in the procedure `calc-force`. A repulsive force will "scatter" the particles, but an attractive force will put some of them into orbits.

Let the particles begin with a constant velocity, or give them all a random velocity. Or try giving each particle a variable charge, which directly affects the strength of the acting force upon it.

Try having a lattice of targets, and vary the targets' spacing.

## NETLOGO FEATURES

Notice that the procedure `move-particle` is all turtle commands.

When you examine the Code tab, note that standard turtle movement commands such as `fd 1` aren't used. Instead the x-coordinates and y-coordinates of the turtles are manipulated directly.

## RELATED MODELS

Gravitation also calculates an inverse-square force between particles and changes their motion accordingly. In Gravitation, each particle looks at every other particle, whereas in Scattering, each particle interacts only with the target.

## CREDITS AND REFERENCES

Martin Rocek made important modifications to this model. He writes, "the main point of my modifications was introducing rcore (radius); it has the effect of smoothing out the target, that is, making something more like the old 'plum-pudding' model of the atom that held sway before Rutherford's experiment. When rcore is large enough, even though the scattering of particles with impact parameters significantly bigger than rcore is essentially unchanged, no particles experience large deflections. As you make rcore smaller, the hard core is restored, and large angle scattering returns."

## HOW TO CITE

If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:

• Wilensky, U. (1998). NetLogo Scattering model. http://ccl.northwestern.edu/netlogo/models/Scattering. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
• Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.

This model was created as part of the project: CONNECTED MATHEMATICS: MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL MODELS (OBPML). The project gratefully acknowledges the support of the National Science Foundation (Applications of Advanced Technologies Program) -- grant numbers RED #9552950 and REC #9632612.

This model was converted to NetLogo as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227. Converted from StarLogoT to NetLogo, 2002.

Click to Run Model

```turtles-own
[
force-x  ;; x-component of force vector
force-y  ;; y-component of force vector
vel-x    ;; x-component of velocity vector this time step
vel-y    ;; y-component of velocity vector this time step
dist     ;; the distance from the center

;; the following are needed to keep track of when the turtles go out of bounds:
real-xcor
real-ycor
]

globals
[
scatter-angle
]

;;;
;;; setup procedures
;;;

to setup
clear-all
setup-target
setup-particles
set scatter-angle atan [vel-x] of turtle 0
[vel-y] of turtle 0
reset-ticks
end

to setup-target
if show-target?
[
[
if (distancexy 0 0 < radius)
[ set pcolor yellow ]
]
]
end

to setup-particles
crt number
[
colorize
distribute
set vel-x 0
set vel-y velocity

;; turtle 0 is treated specially to help distinguish an individual's behavior
if (who = 0)
[ set xcor turtle-0-position ]
set real-xcor xcor
set real-ycor ycor
set dist distancexy 0 0
]
end

to colorize ;; turtle procedure
ifelse ( trace? )
[ set color (who / (number - 1)) * 139 ]
[ set color white ]
end

to distribute ;; turtle procedure
let x ( (min-pxcor) + ( ( who - 1 ) / ( number - 2 ) ) * (world-width - 1) )

if patch-at (x - xcor) 0 = nobody
[
ifelse xcor > x
[ set x ( x + world-width ) ]
[ set x ( x - world-width ) ]
]

setxy x (min-pycor)
end

;;;
;;; main procedures
;;;

to go
if not any? turtles
[ stop ]
[ move-particle ] ;; if the turtles move out of the world, they die
if turtle 0 != nobody ;; if turtle 0 hasn't died yet
[ set scatter-angle atan [vel-x] of turtle 0
[vel-y] of turtle 0 ]
tick
end

to move-particle  ;; turtle procedure
calc-force
update-velocity
update-position
if trace?
[ set pcolor color ]
if who = 0
[ set pcolor color ]
end

to calc-force ;; turtle procedure
set force-x  ((cos (atan (- real-ycor) (- real-xcor))) * (charge / (dist * dist + radius * radius)))
set force-y  ((sin (atan (- real-ycor) (- real-xcor))) * (charge / (dist * dist + radius * radius)))
end

to update-velocity ;; turtle procedure
set vel-x (vel-x - force-x)
set vel-y (vel-y - force-y)
end

to update-position ;; turtle procedure
set real-xcor (real-xcor + vel-x)
set real-ycor (real-ycor + vel-y)
ifelse patch-at (real-xcor - xcor) (real-ycor - ycor) != nobody
;; if the turtle is in the visible world, update xcor, ycor, and dist
[
setxy real-xcor real-ycor
set dist distancexy 0 0
show-turtle
]
;; if the turtle has moved out of the world, die
[ die ]
end

```

There are 10 versions of this model.

Uri Wilensky over 9 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky over 10 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky over 12 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 12 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 12 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 12 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 12 years ago Model from NetLogo distribution Download this version