**StatMech 2.7** (August 2007)

**Author: **Thomas A. Moore

This program automates the construction of macropartition tables for two Einstein solids in thermal contact (as discussed in chapters T4 and T5 in unit T of *Six Ideas That Shaped Physics* text, McGraw-Hill, 2003). Students should first thoroughly understand how to construct such tables before using this program.

**Using the Program**

Using the text entry boxes, enter the number of atoms in Einstein solids *A* and *B* and the combined system's total internal energy *U* (in units of *ε*, the separation between oscillator energy levels). Then press the Calculate button (or hit Enter on the keyboard), and the macropartition table should shortly appear. For small values of *U*, there will be one table row for every possible macropartition (i.e. way of distributing energy between the two subsystems). If you press the Graph radio button, the program will (by default) display the macropartition’s total multiplicity (which is proportional to its long-term probability) versus the fraction of the system's total energy *U* that is in solid *A* (i.e. *U*(*A*)/*U*).

If the system's total internal energy *U* (in units of *ε*) is larger than the number specified by the Max Row popup menu, the program automatically groups sets of macropartitions into "bins" each containing the same integer number of macropartitions. Each table line then corresponds to one bin, and specifies the mean values of *U*(*A*)/*U* and *U*(*B*)/*U* and *total* multiplicities for all the macropartitions in that bin. This enables handling very large values of *U* without generating enormously many table rows.

Indeed, the program can handle very large numbers of atoms and total energy units (up into the millions), but the calculation of the table will proceed more slowly as *U* increases. There is a progress bar under the Calculate button that gives a rough indication of how a calculation is progressing. Exponents over ten million cannot be displayed within the available space in the table and will be displayed as "#######" instead. But it is hard to get exponents this high without waiting a *very* long time.

**Advanced Options**

The default graph type is multiplicity versus *U*(*A*)/*U *over the full range of possible values (i.e. from 0 to 1), but under the GraphType menu, you can also elect to display entropy versus* U*(*A*)/*U* by selecting *S* Versus *U*(*A*), or entropy versus *U*(*A*)/*U* for the lowest 20 table rows *S* Versus Small *U*(*A*).

Selecting Count Oscillators under the Options menu allows you to specify the number of simple harmonic oscillators in solids *A* and *B* rather than the number of atoms (in the Einstein solid model, each atom is assumed to be equivalent to three independent simple harmonic oscillators). Selecting Boltzmann Plot under the Options menu quickly sets up a situation where solid *A* has one oscillator, solid *B* has 300 oscillators, the system has a total internal energy of 1000 times epsilon, and the graph displays entropy versus *U*(*A*)/*U* for the lowest 20 table rows. This illustrates that, for a quantum system in thermal contact with a "reservoir," the probability that the quantum system has a certain energy *U*(*A*) decreases *exponentially* with *U*(*A*) as described by the Boltzmann factor.

**Concluding Comments**

I have tried to make this program as transparent and as easy-to-use as possible. Please send any genuine bug reports or feature requests to me at tmoore@pomona.edu. I won't be able to respond to all requests, but I appreciate constructive criticism nonetheless.

This program was written using REALBasic, a superb development environment for the Macintosh, Windows, and Linux platforms. For more information, visit www.realbasic.com. I'd also like to thank Anna Clower, who helped develop the core routines to handle very large numbers.