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. 
See the note below by Martin Rocek, a contributor to this model.

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

First select the number of particles with the NUMBER slider.
Set their initial velocity with the VELOCITY slider. Set the
charge of the target nucleus with the CHARGE slider.  Set the radius of
the charged nucleus with the RCORE slider.  If RCORE is large, the
charge is more spread out, but the amount of charge is the same.  Then
press the SETUP button.

When the sliders have been set to desireable levels, press
the GO button to begin the simulation.

The SHOW-TARGET switch shows or hides the nucleus.  

The TRACE-MODE switch, when set to 1, has each turtle mark
out its position every time-tick. Thus you can see the
arcs formed by different particles' travels.  The TRACE-MODE can be
turned on and off while the model is running.

The speed, position, and direction of one particle (who = 0) are
displayed.   The SCATTERDIS slider sets the starting x-coordinate of
that specific particle.  If SCATTERDIS is 0, the particle approaches the
nucleus head-on.  The SCATTERDIR monitor shows the particle's heading
(zero is straight up).  After the particle goes by the nucleus, this
heading is the scattering angle .  When TRACE-MODE is off, only that
particle's path is shown.  The speed and distance from the nucleus are
plotted in the plotwindows.

Each setting gives a family of paths for particles of constant
velocity but different paths.  What is the shape of each
trajectory?   Is it the same shape approaching and leaving the nucleus?  
What is the shape of the family of curves?

How "big" does the target appear to be from the particles' point of

What information does the scattering pattern give about the size of the
nucleus?  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.    
What about the size of the nuclear charge and the initial velocity?

Martin Rocek, who made important modifications to this model, writes,
"the main point of my modifications was introducing rcore; 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."


You can study the trajectory of one particle by turning off TRACE-MODE. 
Change the SCATTERDIS slider to change how closely the particle passes
by the nucleus.  What happens to the particle's path when its velocity
and the charge of the nucleus are changed? What needs to be true for
particles to bounce almost straight backward? 

The value of the SCATTERDIR 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 nucleus?  

Put in a different function for the force between the nucleus
and the particles -- 1/r dependence, r dependence, attraction
instead of repulsion.  This can be done in the code preceeded by ;;force
function in "move-turtles". 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 nuclei, and vary their spacing.  

When a particle moves off of the edge of the screen, StarlogoT 
keeps track of its virtual position even though it's not visible.

Notice that all of the code within the procedure
'move-particles' is kept to turtle instructions.
Almost all the variables are turtle-variables, even the
position of the acting charge. Although it seems like it
would make more sense to keep that value as a global
variable, it is actually faster for StarLogoT to keep it
inside each turtle. 'Turtle code' runs the fastest when
kept free of outside distractions (such as the calling of
an observer procedure). Even just one line of code could
cause a significant slowdown. In fact, such a slowdown
occurs already due to the presence of the code in 'go' that
handles the clicking of the mouse button. This little bit of
checking cuts the speed of "Gravitation" (another similar model) by
about half.

When you examine the procedure window, take note that the
standard turtle primitives 'seth', 'fd 1', etc... aren't
used here. Everything is done directly to the x-coordinates
and y-coordinates of the turtles.


"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 nucleus.