Fission
WHAT IS IT?
This project explores the concept of nuclear fission. Nuclear fission is a reaction in which an atom's nucleus splits into smaller parts, releasing a large amount of energy in the process. Most commonly this is done by 'firing' a neutron at the nucleus of an atom. The energy of the neutron 'bullet' causes the target element to split into 2 (or more) elements that are lighter than the parent atom.
During the fission of U235, 3 neutrons are released in addition to the two daughter atoms. If these released neutrons collide with nearby U235 nuclei, they can stimulate the fission of these atoms and start a self-sustaining nuclear chain reaction. This chain reaction is the basis of nuclear power. As uranium atoms continue to split, a significant amount of energy is released from the reaction. The heat released during this reaction is harvested and used to generate electrical energy.
Nuclear reactions involve changes in particles in an atom's nucleus and thus cause a change in the atom itself. Unlike normal chemical reactions that form molecules, nuclear reactions result in the transmutation of one element into a different isotope or a different element altogether (remember that the number of protons in an atom defines the element, so a change in protons results in a change in the atom).
In this model, the yellow turtles represent the neutrons (including the initial firing neutrons.) The blue patches represent the U-235 atoms and the green patches represent non-fissionable material.
Neutrons initiate the chain reaction
HOW TO USE IT
Click the SETUP button to setup the simulation. Click the INITIATE button to start the simulation. The U-235 (blue) slider controls the initial number of U-235 nuclei. The Non-Fissionable Material (green) slider controls the initial number of non-fissionable particles in the simulation. The Initial No. of Neutrons (yellow) slider controls the inital number of neutrons. The view plot button turns the plotting on. The clear plot button clears any existing plots.
Turtle procedures
;; patch-setup
;; called by the observer setup procedure
;; The original turtle randomly distributes fissionable and non-fissionable materials.
;; It jumps randomly and stamps the patch with either sky blue (fissionable) or green
;; (non-fissionable) the number of times set by the user on the sliders "U-235 (blue)"
;; and "Non-Fissionable Material (green)" respectively. Then this initial turtle dies.
;;
to patch-setup
repeat fismat [
seth random 360
jump random 46
if pc = 0 [stamp 95]
home
]
repeat nonfismat [
seth random 360
jump random 46
if pc = 0 [stamp green]
home
]
die
end
;; gowiggle procedure
;; called by the observer start procedure
;; Each turtle checks what patch it is on or near and then goes forward a step
;; and changes direction slightly by calling the wiggle procedure.
;;
to gowiggle
check-patches
fd 1
wiggle
end
;; check-patches procedure
;; called by the gowiggle procedure
;; Implements the behavior of the neutrons.
;; if the patch ahead is the red ring, then the atom dies
;; if the patch it is on is green (non-fissionable material), then the atom dies
;; if the patch it is on is blue (U-235), then it creates neutron# new neutrons
;; and deposits neutron# fission by-products.
;;
to check-patches ;turn based on patch color
if pc-ahead = red [die]
if pc = green [die]
if pc = 95 [
repeat neutron# [
hatch [
fd 1
lt random 360
stamp pink
set count-byproducts count-byproducts + 1
]
]
]
end
;; wiggle procedure
;; called by the gowiggle procedure
;; Changes the heading of the turtle slightly.
;;
to wiggle
rt random 5
lt random 5
end
Observer procedures
globals [count-byproducts]
;; setup procedure
;; called by the SETUP button
;; Clears turtles from previous runs, sets the patches inside the ring to black
;; and creates a single turtle. This turtle randomly distributes the
;; user-specified number of fissionable and non-fissionable patches.
;; Then the initial number of neutrons is created as yellow turtles at 0,0 with
;; random headings and the graph is setup.
;;
to setup
ct
clear-path
crt 1
ask-turtles [patch-setup]
crt number ;create turtles based on number slider
ask-turtles [
setc yellow
seth random 360
]
setup-graph
set count-byproducts 0
end
;; start procedure
;; called by the INITIATE button
;; Graphs the current data and asks the turtles (the neutrons) to move.
;; If there are no neutrons left, update the graph and stop the program.
;;
to start
graph-it
ask-turtles [gowiggle]
if count-turtles = 0 [
graph-it
wait 1
stopall
]
end
;; neutron-number procedure
;; called by the "Total No. of Neutrons (yellow)" monitor
;; Returns the number of yellow turtles for display in the monitor.
;;
to neutron-number
output count-turtles-with [color = yellow]
end
;; uranium-number procedure
;; called by the "Total No. of U-235 (blue)" monitor
;; Returns the number of sky (blue) turtles for display in the monitor.
;;
to uranium-number
output count-pc 95
end
;; nonfis-number procedure
;; called by the "Total No. of Non-Fissionable Material (green)" monitor
;; Returns the number of green turtles for display in the monitor.
;;
to nonfis-number
output count-pc 55
end
;; byproducts-number procedure
;; called by the "Total No. of Fission By-Products (pink)" monitor
;; Returns the number of pink turtles for display in the monitor.
;;
to byproducts-number
output count-byproducts
end
;; setup-graph procedure
;; called by the setup procedure
;; Sets up the graph: title, axes, and color of the lines.
;; n.b. this is the old way of creating plots, now we can use the plot wizard.
;;
to setup-graph
pp1 ppreset setppc orange
pp2 ppreset setppc blue
pp3 ppreset setppc green
pp4 ppreset setppc pink
setplot-title "Fission Demo"
setplot-yrange 0 100
setplot-xrange 0 50
end
;; graph-it procedure
;; called by the start procedure
;; Updates the graph with the current data.
;;
to graph-it
pp1 ppd plot (neutron-number)
pp2 ppd plot (uranium-number)
pp3 ppd plot (nonfis-number)
pp4 ppd plot (byproducts-number)
end
;; clear-path procedure
;; called by the setup procedure
;; Sets the patches inside the circle to black.
;;
to clear-path ;set patch colors black unless part of obstacles
ask-patches [
if not (pc = 15 or pc = 7)
[setpc 0]
]
end
