Black Friday Final SURGE

Black Friday Final SURGE preview image

1 collaborator

Default-person Kevin Alster (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.2.1 • Viewed 229 times • Downloaded 7 times • Run 0 times
Download the 'Black Friday Final SURGE' 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 is a simplified, microscopic model of electrical conduction in a series circuit with two resistors (wires). It is based on Drude's free electron theory. The primary purpose of the model is to illustrate how electric current in one wire gets to be equal to electric current in the other even when the wires have different resistances: higher number of electrons moving slowly (towards the battery positive) in one wire, and fewer electrons moving faster in the other wire.

HOW IT WORKS

The wire in this model (represented by grey patches) is composed of atoms, which in turn are made of negatively charged electrons and positively charged nuclei. According to the Bohr model of the atom, these electrons revolve in concentric shells around the nucleus. However, in each atom, the electrons that are farthest away from the nucleus (i.e., the electrons that are in the outermost shell of each atom) behave as if they are free from the nuclear attraction. These outermost electrons from each atom are called "free electrons".

These free electrons obey a specific set of rules that can be found in the "Procedures" tab. These rules are as follows: The applied electric voltage due to the battery imparts a steady velocity to the electrons in the direction of the positive terminal. In addition to this drift, the electrons also collide with the atomic nuclei (represented by the blue atoms) in the wire giving rise to electrical resistance in the wire. During these collisions, electrons bounce back, scatter slightly, and then start drifting again in the direction of the battery-positive.

The voltage experienced by the electrons in each wire is inversely proportional to the resistance in each wire (The mechanism of how this emerges is beyond the scope of this model). Note that for simplicity, total voltage is set to 1, and the sum of the voltages in the two wires always equals 1.

Also note that the initial number of free-electrons in each wire is modeled to be inversely related to the resistance in each wire. This is because some metals with high resistance have both a higher number of atoms as well as fewer free-electrons compared to metals with low resistance. It is very important to note that this is an approximate measure of resistance, which in reality also depends on many other factors. The effects of this (and other) approximation(s) used in this model are discussed in the "THINGS TO NOTICE" section.

HOW TO USE IT

The RESISTANCE-LEFT-WIRE and RESISTANCE-RIGHT-WIRE sliders determine how many atoms are in each wire, and also, the initial number of free-electrons in each wire.

The WATCH AN ELECTRON button highlights an electron and traces its path. Press STOP WATCHING to remove the highlighting.

Using HIDE ATOMS, as the name suggests, you can hide the atoms from view. This does not alter the underlying rules of the model, and is intended to make it easier for you to focus only on the electrons in each wire. The atoms can be brought back to view by clicking SHOW ATOMS.

THINGS TO NOTICE

In some cases, electric current may be very close, but not exactly equal in both the wires. Also, when you change the resistance in one wire, the relative change in current in each wire (compared to the value of current prior to changing the resistance) may be slightly different than the value expected from Ohm's Law for a series circuit with two resistors.

These inconsistencies result from the following approximations used in the model: a) random placement of atoms within the wires, b) the greatly simplified measure of resistance, and c) the simplified representation of collisions between electrons and atoms. The collisions neglect the finite size of the electrons and atoms, and in addition, are not based on exact mathematical calculations of the velocities before and after the collision.

These approximations were designed on order to make the underlying NetLogo code easily understandable by users without a lot of background in mathematics or programming.

THINGS TO TRY

  1. Run the model with equal values of resistance in each wire. (Press SETUP every time you change the value of resistance in either wire.) Observe the current in both the wires. Are these values equal? What about the number of electrons in each wire?

  2. Increase the resistance in one of the wires. (Press SETUP every time you change the value of resistance in either wire.) Note the current in both the wires. Is current in each wire still equal? What about the number of electrons in each wire?

  3. Set different values of resistance in each wire. Press SETUP and then run the model. Press WATCH AN ELECTRON. Using a watch (or the value of TICKS displayed in the model), and note how much time the electron takes to travel through each wire. Repeat this observation several times. Is the average time taken by electrons to travel through each wire different? If so, why?

  4. How would you calculate the total current in the circuit? Is it the same as current in each wire? Or is it the sum of the two currents? What are the reasons for your answer?

EXTENDING THE MODEL

Can you divide the region between the two battery terminals into three wires (segments) instead of two?

REFLECTION

In exploring the models, I found the greatest value in embodying the agent as a way of primarily understanding the behaviors I see from the individual agent. For example in the "flocking" model, I would imagine myself as one bird flying around other birds. In my mind, I'm looking for other flocks and heading towards them--the breakdown being that I cannot as quickly compute the perceived distance and number of a passing flock of birds. However, I found that a basic understanding was all that was required. When looking at the "segreation" model, it helped to look at the sliders that were available and then to imagine myself as just one agent to make sense of what was happening. With both models, it helped to be one person within the system as a way to understand the whole system (which, from the readings I gleaned was one of the primary purposes of agent-based modeling).

Originally, I wanted to start with a chaos/panic model. With the help of a certain professor, I found the NIELS series circuit model. Originally, I had started with the series in a circuit model, because of the electrons moving en masse in one direction. I also liked this idea of obstacles being represented by the nuclei. I realized that I wanted to study a more specific phenomena, Black Friday. The two perspectives that I wanted to think about was the managers and that of the shoppers.

The shoppers have several assumptions:

  1. They are all headed into the store, pick up toys from the displays, and head to the cashier.

  2. The shopper runs into a toy display and other shoppers.

  3. The shopper stops at the check out line in order to check out.

NOTE TO ADVANCED USERS

  1. Resistance is represented in NIELS models in two forms. In the first form of representation, which is used in the Current in a Wire model, the resistance of a material is represented by the number of atoms per unit square area. This representation foregrounds the rate of collisions suffered by free electrons making this the central mechanism of resistance.

In the second form of representation, which is used both in this model as well as in the Parallel Circuit model, resistance determines not only the number of atoms inside the wire, but also the number of free electrons. This is a simplified representation of the fact that some materials with higher resistances may have a fewer number of free electrons available per atom.

  1. Both these forms of representations operate under what is known in physics as the "independent electron approximation". That is, both these forms of representations assume that the free-electrons inside the wire do not interact with each other or influence each other's behaviors.

  2. It is important to note that both these representations of resistance are, at best, approximate representations of electrical resistance. For example, note that resistance of a conducting material also depends on its geometry and its temperature. This model does not address these issues, but can be modified and/or extended to do so.

If you are interested in further reading about the issues highlighted in this section, here are some references that you may find useful:

Ashcroft, J. N. & Mermin, D. (1976). Solid State Physics. Holt, Rinegart and Winston.

Chabay, R.W., & Sherwood, B. A. (2000). Matter & Interactions II: Electric & Magnetic Interactions. New York: John Wiley & Sons.

NETLOGO FEATURES

Electrons wrap around the world vertically.

RELATED MODELS

Electrostatics Electron Sink Current in a Wire Parallel Circuit

CREDITS AND REFERENCES

This model is a part of the NIELS curriculum. The NIELS curriculum has been and is currently under development at Northwestern's Center for Connected Learning and Computer-Based Modeling and the Mind, Matter and Media Lab at Vanderbilt University. For more information about the NIELS curriculum please refer to http://ccl.northwestern.edu/NIELS/.

The visualization of this model was guided by techniques described in the paper:

Kornhauser, D., Wilensky, U., & Rand, W. (2009). Design guidelines for agent based model visualization. Journal of Artificial Societies and Social Simulation, JASSS, 12(2), 1. http://ccl.northwestern.edu/papers/2009/Kornhauser,Wilensky&Rand_DesignGuidelinesABMViz.pdf .

HOW TO CITE

If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.

For the model itself:

Please cite the NetLogo software as:

To cite the NIELS curriculum as a whole, please use:

  • Sengupta, P. and Wilensky, U. (2008). NetLogo NIELS curriculum. http://ccl.northwestern.edu/NIELS/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

COPYRIGHT AND LICENSE

Copyright 2007 Pratim Sengupta and 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 https://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.

To use this model for academic or commercial research, please contact Pratim Sengupta at mailto:pratim.sengupta@vanderbilt.edu or Uri Wilensky at mailto:uri@northwestern.edu for a mutual agreement prior to usage.

Comments and Questions

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

Click to Run Model

breed [ electrons electron ]
breed [ anodes anode ]
breed [ nuclei nucleus ]
breed [ cathodes cathode ]
globals [charge-flow-left charge-flow-right x voltage-left voltage-right]

;;;;;;;;;;;;;;;;;;;;;;;;
;;; Setup Procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;

to setup
  clear-all
  set charge-flow-right 1
  set-default-shape electrons "circle 2"
  ;; create wire
  ask patches
  [ set pcolor gray ]
  ask patches with [pxcor < 0]
  [ set pcolor gray + 2 ]

  ;; create electrons
  create-turtles 1000 - resistance-right-wire
  [
    set breed electrons
    setxy random max-pxcor - 3 random-ycor
    set heading random 360
    set color orange - 2
    set size 1
  ]
  create-turtles 0 - resistance-left-wire
  [
    set breed electrons
    setxy random min-pxcor + 3 random-ycor
    set heading random 360
    set color orange - 2
    set size 1
  ]
  ;; now set up the Battery-negative
  ask patches with [pxcor >= max-pxcor - 3 ]
  [
    set pcolor red
  ]

  ;; now set up the Battery-negative
  ask patches with [pxcor <= min-pxcor + 3 ]
  [
    set pcolor black
  ]

  ;; create labels for the battery terminals
  ask patches with [pxcor = min-pxcor + 1 and pycor = 0]
  [ sprout 1
    [
      set breed cathodes
      set shape "plus"
      set size 1.5
    ]
  ]
  ask patches with [pxcor = max-pxcor - 1 and pycor = 0]
  [ sprout 1
    [
      set breed anodes
      set shape "minus"
      set size 1.5
    ]
  ]
  ask n-of resistance-right-wire patches with [pxcor < max-pxcor - 4.5 and pxcor >= 2]
  [ sprout 0
    [
      set breed nuclei
      set size 2
      set shape "circle 2"
      set color blue
    ]
  ]

  if number-of-aisles = 1
  [ask n-of resistance-left-wire patches with [pxcor = (-2)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue


      ]
   ]
  ]

  if number-of-aisles = 2
   [ask n-of resistance-left-wire patches with [pxcor = (-2)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

     if number-of-aisles = 2
   [ask n-of resistance-left-wire patches with [pxcor = (-10)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 3
   [ask n-of resistance-left-wire patches with [pxcor = (-2)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 3
   [ask n-of resistance-left-wire patches with [pxcor = (-10)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 3
   [ask n-of resistance-left-wire patches with [pxcor = (-15)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 4
   [ask n-of resistance-left-wire patches with [pxcor = (-2)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 4
   [ask n-of resistance-left-wire patches with [pxcor = (-10)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 4
   [ask n-of resistance-left-wire patches with [pxcor = (-15)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 4
   [ask n-of resistance-left-wire patches with [pxcor = (-20)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 5
   [ask n-of resistance-left-wire patches with [pxcor = (-2)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 5
   [ask n-of resistance-left-wire patches with [pxcor = (-10)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 5
   [ask n-of resistance-left-wire patches with [pxcor = (-15)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 5
   [ask n-of resistance-left-wire patches with [pxcor = (-20)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]


if number-of-aisles = 5
   [ask n-of resistance-left-wire patches with [pxcor = (-30)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 6
   [ask n-of resistance-left-wire patches with [pxcor = (-5)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 6
   [ask n-of resistance-left-wire patches with [pxcor = (-10)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 6
   [ask n-of resistance-left-wire patches with [pxcor = (-15)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

if number-of-aisles = 6
   [ask n-of resistance-left-wire patches with [pxcor = (-20)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]


if number-of-aisles = 6
   [ask n-of resistance-left-wire patches with [pxcor = (-30)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

 if number-of-aisles = 6
   [ask n-of resistance-left-wire patches with [pxcor = (-40)]
   [ sprout 1
      [
      set breed nuclei
      set size 4
      set shape "square 2"
      set color blue
      ]
   ]
  ]

  ask patches with [ pxcor < 1 and pxcor > ( - 1) ]
  [ set pcolor white ]
  set charge-flow-left 1
  reset-ticks
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Runtime Procedures ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

to go
  set x resistance-left-wire / ( resistance-right-wire + resistance-left-wire)
  set voltage-left x
  set voltage-right 1 - x
  ;; Rules for electrons
  ask electrons
  [
    ;; electrons-rules for performing simple point collisions
    ;; with nuclei in the wire and in between two collisions,
    ;; drifting steadily drifting forward due to the electric field
    move
    if pcolor = white
    [ set charge-flow-right charge-flow-right + 1
      set xcor (- 2) ]
  ]
  tick

  ;; Keep plotting
  if ticks > 20
  [ do-plot ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;
;; rules for electrons ;;
;;;;;;;;;;;;;;;;;;;;;;;;;

to move
  ifelse not any? nuclei-on neighbors
  [
    ;; drift due to voltage
    set heading 270
    if pcolor = gray
    [ fd (1 - x) ]
    if pcolor = gray + 2
    [ fd x ]
    if pcolor = red
    [ set heading 270 fd 3 ]

  ]
  [
    ;; collide with atoms
    set heading random 180
    if pcolor = gray
    [ fd (1 - x) ]
    if pcolor = gray + 2
    [ fd x ]
  ]

  if pcolor = black
  [ pen-up
    set charge-flow-left charge-flow-left + 1
    hatch 0
      [ set breed electrons
        set color orange - 2
        setxy max-pxcor - 4 random-ycor
        pen-up
      ]

  ]
end 


;;;;;;;;;;;;;;;;;;;;;;;;;
;; Plotting procedures ;;
;;;;;;;;;;;;;;;;;;;;;;;;;

to do-plot
  set-current-plot "Current"
  set-current-plot-pen "left current"
  plotxy ticks charge-flow-left / ticks
  set-current-plot-pen "right current"
  plotxy ticks charge-flow-right / ticks
end 


; Copyright 2007 Pratim Sengupta and Uri Wilensky.
; See Info tab for full copyright and license.

There is only one version of this model, created over 3 years ago by Kevin Alster.

Attached files

File Type Description Last updated
Black Friday Final SURGE.png preview Preview for 'Black Friday Final SURGE' over 3 years ago, by Kevin Alster Download

This model does not have any ancestors.

This model does not have any descendants.