Reactor Top Down

Reactor Top Down preview image

1 collaborator

Uri_dolphin3 Uri Wilensky (Author)


chemistry and physics 

Tagged by Reuven M. Lerner about 11 years ago


Tagged by Reuven M. Lerner about 11 years ago

Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 5.0.4 • Viewed 308 times • Downloaded 78 times • Run 0 times
Download the 'Reactor Top Down' modelDownload this modelEmbed this model

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


This project simulates a nuclear fission reaction in a nuclear power plant. In a fission reaction, free neutrons hit uranium atoms, causing each uranium atom to generate 2 or 3 neutrons and a unit of energy. The uranium atom itself splits into two smaller atoms. The newly generated neutrons, together with the neutron that caused the reaction, keep moving and continue to hit more uranium atoms, which release more neutrons, etc. This is the chain reaction that happens inside an atomic bomb.

Most nuclear energy is used for peaceful purposes, however. Generated in a nuclear power plant, nuclear fission goes on in a much more controlled fashion. The casing of the reactor is made of thick plates of lead and concreate to absorb the neutrons and prevent them from escaping. The reaction is controlled by rods made of graphite, hafnium, cadmium, or boron which also absorb the free neutrons. The rods are added and removed from the reaction chamber in order to control the speed of the reaction. When control rods are added, fewer atoms of uranium are smashed, which in turn limits how much energy is released.

This model simulates the process of a nuclear fission reaction inside such a plant. The reactor casing seals the core, with control rods to help control the speed of the reaction. The reactor has a built-in automatic controller, and has a set of manual controls as well.


The POWER-RATED slider sets the rated power (the amount of power production that you want to hold the reactor to), which is used for automatic control.

The PERCENT-FUEL slider control the percent of the reactor that is filled with fuel (red patches).

The SPEND-FUEL switch controls whether or not the fuel is used up when a neutron hits it. (turns brown)

The ADD-RODS and REMOVE-RODS buttons work with the NUMBER slider to add or remove that number of rods (cyan turtles) from the reactor.

The RELEASE NEUTRON button introduces a neutron (yellow turtle) into the reactor. It can be used at anytime before or during the reaction.

Press the SETUP button to set up the reactor with no control rods and a single neutron.

When MANUAL is on, use the ADD-RODS and REMOVE-RODS buttons to change the number of rods in the reactor, and thus control the speed of the reaction and the amount of power generated. If they are too few rods, too few neutrons are absorbed and the reactor will generate too much power. If they are too many, all free neutrons will be absorbed, and no power will be generated.

When AUTO-REACT is on, the reactor will add and remove rods as needed (in NUMBER increments) to keep power production under control.

THE POWER monitor shows the current power output.

The POWER-CHANGE monitor shows the change in power over the last clock tick.

Look at the POWER-PLOT plot to see the power curve.


Observe the fluctuation of the power curve. The blue line is the rated-power line and the red line is the actually generated power line.


There are two setups, one for manual control, one for automatic control.

The manual controls are very simple. The ADD-RODS and REMOVE-RODS buttons control how many control rods are in the reactor.

The automatic controller is basically an ON and OFF controller. It is based on 1) comparison of power generated and power rated and 2) the power change. The mechanism is described in the following table:

                     Power > Power Rated   Power < Power Rated
                     -------------------   -------------------
  Power Change > 0:       Add Rods            Do Nothing

  Power Change < 0:      Do nothing           Remove Rods

The controller should be fine-tuned.

  • In Manual Mode: Use the NUMBER slider to adjust the number to add or remove according to the information given through the two monitors and the plot. You want the power curve to be as flat as possible. The height of the curve should be close to the horizontal line representing the power-rate.

  • In Automatic Mode: Fine tune the controller by changing the mechanisms to get a flatter power curve and minimize the fluctuation.

The SPEND-FUEL? switch sets whether or not the fuel is used up after releasing neutrons. If it's on then the fuel in the reactor will quickly get used up and the model will end. Because of the short run and the need for new fuel in order to continue the reaction, with spend-fuel? on it's best to have a lot of fuel in the reactor and a low power-rating. If it's off then the fuel will never get used up and will react every time a neutron hits it and the model will probably never stop. Because of the reactivity and longevity of this setting, it's best to have only a little fuel (otherwise it will react out of control) and a high power-rating, so the controller doesn't have to fill the core with control rods the entire time in order to hold to the rating.


The automatic controller used is just an on and off controller. Try using Proportional, Integral and Differential (PID) controllers to make the reaction more smooth. You could also use some ideas of fuzzy logic (e.g. fuzzy membership) to build a fuzzy controller.

Absorbing free neutrons to control the reaction process is only one of the control mechanisms and is not the most important one. The important factor in controlling the reaction is to keep the speed of a neutron lower than a certain level (to stimulate fission reaction). The speeds of free neutrons depend on the density of the steam. Higher density yields lower speed and vice-versa. This is by nature a negative feedback control mechanism. It works as follows. If generated power is high, then the steam temperature is high and the density of the steam is low, thus the speed of free neutrons is high and is less likely to stimulate fission reaction. Hence a lower generated power. Try to incorporate this process into the automatic controller.

Neither setting of SPEND-FUEL? is completely realistic, with it on the fuel is used up too fast and there's hardly a reaction, with it off there is too much reacting and too many rods are needed to control the reaction.

Two additional ways to deal with fuel are listed below, can you think of more?

  • have there be a certain ammount of fuel at each red patch, then it won't get used up right away, but won't go on forever either.
  • limit how often a patch can react, that way, with spend-fuel? off the neutrons won't react out of control in small areas.


Together with the Reactor X-Section model you can get a decent representation of how a Nuclear Reactor might work in three dimensions. These two models are variations of one another based off of the Fission model from StarLogoT.


More so than most other NetLogo models, the plot of 'Nuclear Reactor' plays an active role in the simulation. When using the manual controller, it is quite helpful to watch the power curve, to tell when things are getting out of hand.


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 Reactor Top Down model. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
  • Wilensky, U. (1999). NetLogo. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.


Copyright 1998 Uri Wilensky.


This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit 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

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, 2001.

Comments and Questions

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

Click to Run Model

breed [neutrons neutron]
breed [rods rod]

globals [
  old-power      ; list of last 5 power values - used to compute average power

;;; Setup Procedures ;;;

to setup
  set-default-shape turtles "circle"
  set power 0
  set old-power [0 0 0 0 0]
  ask patches[ setup-nuclear-fuel ]

to setup-nuclear-fuel ;; Patch Procedure
  if (pcolor = black) and (percent-fuel > (random 100))
  [ set pcolor red ]

;;; Run Time Procedures ;;;

to react
  set power 0
  ask neutrons
  [ fd  1
    if (count neighbors != 8 or any? rods-here)
    [ die ]
    if (pcolor = red)
    [ fission ]

to calculate-power
  ;;average past five most recent power readings
  set power-change (power - first old-power)
  set old-power fput power but-last old-power
  set average-power mean old-power

to auto-react ;; Button
  ifelse (power-change >= 0)
  [ if (power-rated <= power)
    [ add-rods ]
  [ if (power < power-rated)
    [ remove-rods ]
  if not any? neutrons
  [ stop ]

to fission ;; Neutron Procedure
  rt (random 360)
  if (spend-fuel?)
  [ set pcolor brown ]
  let gain (1 / count neutrons-here)
  set power power + gain
  hatch ((2 + random 2) * gain)
  [ rt random 360 ]

to release-neutron ;; Button
  let success false
  while [not success]
    create-neutrons 1
    [ set color yellow
      rt (random 360)
      setxy random-pxcor
      ifelse any? rods-here
      [ die ]
      [ set success true ]

to add-rods ;; Button
  create-rods number
  [ set color cyan
    setxy random-pxcor

to remove-rods ;; Button
  ifelse (number >= (count rods))
  [ ask rods [ die ] ]
  [ repeat number
    [ ask one-of rods [ die ] ]

; 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 about 11 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky over 11 years ago Updated version tag Download this version
Uri Wilensky almost 12 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky over 12 years ago Updated to NetLogo 5.0 Download this version
Uri Wilensky about 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky about 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky about 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky about 14 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky about 14 years ago Model from NetLogo distribution Download this version
Uri Wilensky about 14 years ago Reactor Top Down Download this version

Attached files

File Type Description Last updated
Reactor Top Down.png preview Preview for 'Reactor Top Down' over 11 years ago, by Uri Wilensky Download

This model does not have any ancestors.

This model does not have any descendants.