Scattering

Scattering preview image

1 collaborator

Uri_dolphin3 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 129 times • Downloaded 15 times • Run 0 times
Download the 'Scattering' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


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.

COPYRIGHT AND LICENSE

Copyright 1998 Uri Wilensky.

CC BY-NC-SA 3.0

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.

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.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

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?
  [
    ask patches
    [
      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 ]
  ask turtles
    [ 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 

;; force function:  1/(r*r+target-radius*target-radius)  repulsion

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 


; Copyright 1998 Uri Wilensky.
; See Info tab for full copyright and license.

There are 10 versions of this model.

Uploaded by When Description Download
Uri Wilensky over 9 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky almost 10 years ago Updated version tag Download this version
Uri Wilensky almost 10 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky over 10 years ago Updated to NetLogo 5.0 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
Uri Wilensky over 12 years ago Scattering Download this version

Attached files

File Type Description Last updated
Scattering.png preview Preview for 'Scattering' over 9 years ago, by Uri Wilensky Download

This model does not have any ancestors.

This model does not have any descendants.