Last edited 13may04 by gfrancis@uiuc.edu
Find this document at http://www.ncsa.uiuc.edu/Classes/MATH198/bergman

illiAmp: A Introspection into the Nature of Current

Abstract

The purpose of IlliAmp is to simulate current running through a wire on the atomic level. The basic engine for the program will be bounce. This simulates balls bouncing inside of a cube. To expand bounce into IlliAmp, certain balls must act as positively charged particles and others as negatively charged.The positively charged particles will be arranged in a lattice. The negatively charged particles will travel from one of the box to the other with a random speed and y and z directions. These particles experience a force due to a voltage source. Preferably, this source will be variable. The source creates a force which accelerates the electrons. Once the electrons hit one of the positive charges in the lattice, the electrons stop and reacquire a new random speed and direction. The density of the positve particles will control how often the electrons restart and thus the speed of the electron flow. Of course, this is all according to classical physics. Some problems arise such as the fact that oppositely charged particles actually atract each other. A model based on quantum mechanics fixes such problems, but at the moment, I'm not sure how easily it would be to model the quantum mechanical model or if it would drastically change what appears on the screen.

Report

Schedule of implementation

A. Creation of particles

1.electrons

a.smaller radius - DONE

b.All travelling in change x direction - DONE

c.Collision detection with each other - DONE

d.Collision detection with the protons - DONE (within current model)

e.velocity according to an electric field creating a force creating acceleration - implemented using an acceleration based on the time step

2.protons

a.bigger radius - DONE

b.crystal lattice - DONE

c.Collision detection with the electrons - DONE (using simple model)

d.variable density - inside program, but not user controlled

e.streamlined matrix for easier computing - Not perfect, but good enough

B. Voltage Source - DONE

a.should be controllable by user - Instead it is based on the actual value of I * R.

b.should influence a display giving the resistance and current according to V=IR. Future implementations may allow this by allowing the user to increase acc (the value associated with acceleration)

c.influence acceleration of electrons according to classical or perhaps quantum physics modele - DONE using the classical model

C. Environment

a.stretch out box to more accurately represent a wire-DONE

b.make variables describing box more easily changeable -not entirely necessary, so this version won't include it, but if anyone works on it in the future, it could be nice to see

c.find out what happens in the real world when an electron "hits the wall"- according to the simple classical model, it bounces off. This is how it is done in the program.

d.When a ball hits one end of the wire, recreate it at the other side in order to give the illusion that current is continously entering and leaving the region - DONE

D. Quantum Mechanical model - researched and deemed too complicated for too little effect

a.involves probability locations for electrons

b.will more accurately represent the interactions between electrons and protons

E. Model other types of components than a resistor(not the aim of my project, but possibly for future implementations)

a.Transistor - Roger is doing this now...

b.capacitor - requires work with electric fields

c.inductor - will require looping of wires... most likely too hard to visualize onscreen with multiple looping

d.diodes - very similar to a transistor - could be done together

Final Report

Well, the project is finally over. I gave my presentation on May 13th, 2003. It went fairly well. Some people from Duke came and I got to show off my program in the cave.

The outline of my program is basically outlined in the checklist above. I create an array for all of the electrons and protons. I initiate the electrons randomly in their positions, colors, and velocities. I then instantiate a lattice of protons which don't move. I move the electrons according to a set acceleration, time since last stopped, velocity, and position. Whenever an electron collides with a proton, the electron stops and acquires a new random velocity. The electron's acceleration time also gets reset to zero.

The user interactivity at this point in time is close to nothing. Future incarnations might include variable resistance and volage. In the current evolution, there is a HUD which displays the voltage, current, and reistance. It would be nice to see in real time how varying resistance and acceleration would affect the current. I say acceleration because voltage is not explicitly defined, but the acceleration constant is.

In order to run the program, it is rather simple. Just type amp. Or use amp -c if you wish to use it in the cave. Once in the program, not much can be done except for zooming in, out and moving around. This is accomplished using the mousing just as in any other Skel program. Inside the program, such variables as the number of electrons, protons, and density of the proton lattice can be changed. Here is an embedded picture of illiAmp.