The applet below is a very simple toy model that might be useful for exploring some aspects of the “Light Mill” or “Crookes Radiometer”, which was once thought to rotate due to radiation pressure. It's now known that thermal effects associated with residual gas drive the rotation, but the details remain somewhat contentious, as discussed in this thread on the n-Category Café. Some results obtained with this applet are collected on on this companion page.
This applet performs a very simple, two-dimensional particle-based simulation; it certainly does not come remotely close to capturing the actual physics of the real device. The units of distance are such that the outer radius of the container is 1; the units of time and mass are arbitrary.
The particles have no internal degrees of freedom, and undergo instantaneous elastic collisions when they come into contact with each other; the user can specify their number, mass, radius, and initial velocity. (No attempt is made to pre-distribute the particle velocities thermally; they simply start out randomly oriented, with equal speeds; a small adjustment is made to eliminate any total angular momentum that arises by chance.) The user can also select either random initial conditions that will be different for each run, or one of several sets of random but repeatable conditions. Particles are shown as red when their velocity exceeds the RMS velocity, and blue when their velocity is less than the RMS. The grey lines indicate the average velocity for particles within a grid of square regions that turns with the rotor; the average is over particles within each region, and also over time, so it converges on a long-term average. (Each vector points away from the small black point at one end of the line. Note that the lengths are dynamically re-scaled so that the longest vector in the diagram at any moment is drawn with a fixed size.)
The container walls are treated as infinitely massive and thermally inert; the particles simply bounce off them elastically.
By default, the rotor turns on its bearings without friction (but see the note on an optional friction effect, below). The user can choose the rotor's inner and outer radii as a percentage of the container size, and specify its density. The user also chooses an initial thermal energy density to deposit in the rotor vanes; this is split equally between the black and white parts, but then a constant, user-specified energy flux density adds to the thermal energy of the black sides, and reduces the thermal energy of the white sides. (This fixed flux is meant as a very simple surrogate for the fact that the black side will grow warmer than the white side in the presence of radiation. The applet itself does not model any radiation effects. To avoid absurd side-effects, the flux is not allowed to lower the thermal energy of the white side to less than half its initial value.)
When a particle collides with a rotor vane, the event is initially modelled as if the particle has struck a second free particle of equal mass which is moving normally to the vane, at a velocity consistent with the vane's thermal energy (specifically, the v such that (1/2)Msidev2 = Eside, where Mside is just half the total rotor mass, and Eside is the thermal energy of the side that has been struck). The incoming free particle is deflected on that basis, and then a balancing change is made to the rotor's angular velocity and thermal energy, so that total energy and total angular momentum are conserved. This is a crude way of dealing with the interaction, but it allows the free particles to exchange kinetic energy with the vane's thermal energy.
The four histograms at the bottom of the applet record, cumulatively, (1) the number of collisions; (2) the linear momentum transferred by particles to the rotor; (3) the difference in transferred momentum between the black and white sides; and (4) the angular momentum transferred to the rotor, from the inner radius to the outer radius. The white bars should be construed as having the opposite sign to the black, and the quantity “diff” shown above each histogram is the sum of the black bars minus the sum of the white bars. The histogram at the side of the applet records the average tangential velocity component of the particles, versus radial distance; as with the other histograms (and the average velocity field) it is based on data that accumulates over time. All of these histograms are dynamically re-scaled so that the highest peak at any time is a fixed size.
Optionally, a very simple model of kinetic friction can be applied to the rotor's bearing. If a non-zero “rotor friction parameter” fr is selected, then between particle collisions the rotor undergoes angular deceleration fr in the direction opposite to its motion (never going past zero, of course), and the lost kinetic energy is split equally between the thermal energies of the two sides of the vane. This model conserves total energy, but it will not conserve total angular momentum. A choice of infinite rotor friction prevents the rotor from moving at all; as with finite values, all the energy that would have gone into movement of the rotor is converted into heat.
Also, independently, a particle/container friction parameter fc can be selected; this reduces the tangential component of the velocities of particles that strike the circular walls, multiplying them by a factor of (1-fc), but makes a compensatory boost to their radial velocity to ensure conservation of energy. Of course real friction would heat up the container walls, but this crude model makes it possible to remove some angular momentum from circulating particles without the need to add the extra complication of thermal properties for the walls. A choice of “infinite” friction here just corresponds to fc=1, i.e. it completely eliminates the tangential velocity component of any particle that strikes the walls.
Note that changing any of the parameters will cause the simulation to restart from scratch, with the exception of the energy flux, which can be adjusted mid-simulation.