Thomson Problem
If this applet fails to load, try updating java at

Left Drag: Rotate The System
Right Drag: Zoom
Shift + Click: Add A Particle
Control + Click: Remove A Particle
Shift + Control + Drag: Drag A Particle
BETA: Single Click a Point to Highlight
Double Click to Select and Rotate a Scar

Data Quick Search
Advanced Search
Currently logged in to this applet as ""; you can save data under a different user name.
Try the new cap builder.

Options -> Initialization

Input the number of points you want the system to have. There must be at least 2 points and at most 5000 points (subject to change). There are two initial configuration choices:
  • Random
    Places points randomly on the surface.

  • Spiral
    Uses an algorithm to place the points on a spiral about the surface. This configuration will often be a good starting point for larger systems that may require a lot of work.

Working with the System

Once the system is initialized, an algorithm can be applied to it. The drop down menu lists possible algorithms. They include:
  • Relaxation
    Relaxation treats the particles as electrostatically charged and uses pair-interactions to determine energy and force. A force is calculated for each particle of the system and the particle is moved along the shell in the direction of the force vector a distance propotional to the magnitude of the force acting on it and tStep. The force vectors are "normalized" with respect to the shell size, number of particles, and the square root of the maximum torque on a particle. This yields the notion of a unit step over the shell, but gives a little more versatility. Use the "Auto" button to anneal tStep via a tuned, heuristic algorithm. Thus, this method is Steepest Descent with a heuristic step length. With arbitrarily small tStep you can achieve arbitrarily accurate energies for stable states within machine limits.

  • Barnes-Hut Relaxation
    Identical in function to the regular Relaxation algorithm but force and energy calculations between particles are accomplished through the Barnes-Hut algorithm. By using an Octree to group particles, far away and/or compact clusters can be treated as large single bodies to reduce the number of pairwise computations. The Multipole Acceptance Criteria (MAC) is the maximum ratio of the cluster size to distance in order to treat the group as a single mass. Higher values for the MAC (up to 0.5) allow for greatly increased speed while lower values afford greater accuracy. The "Auto" button can also be used for this algorithm. Using "Auto" will change tStep just like regular Relaxation but the MAC will also decrease over time to increase accuracy. Additionally, if a specific value of the MAC is too slow for the number of particles, the applet will automatically switch to the regular AutoRelaxer.

  • Local Relaxation
    This takes advantage of the triangulation of the points by not considering the entire system, but only local neighbors to a particle. This way, far less computing work must be done (O(N) relaxation step under an O(NlogN) mesh generation algorithm). Two options are available: The degree of one point to another is the number of edges that compose the shortest path between them. The tStep is again a measure of the perturbation of the system. For long range potentials (s < 2) this algorithm is unreliable for obvious reasons. When s = 12, this algorithm excels.

  • Local Monte Carlo
    This is a classic optimization algorithm that functions as follows: Consider a random particle. Move this particle over the surface with a localized Gaassian probability distribution. If this change has caused a drop in the energy, accept the change. If the change increases the total energy of the system, accept it with a Boltzmann probability distribution e^(ΔV/KbT), where ΔV is the change in energy (J), Kb = 1.3806503E-23 J/K is Boltzmann's Constant, and T is the temperature of the system (K). Thus, lower temperatures will result in driving the system down in energy and higher temperatures will increase the energy and randomness of the system. This algorithm can be useful in evaluating finite temperature systems (in all other algorithms, the system is considered to be at 0 degrees Kelvin) and the stability of some topological structures that you may find.

  • Thermal Relaxation
    A combination of the Local Monte Carlo method with the Relaxation method. This causes the system to evolve on a randomly perturbed steepest descent path and can also be used to determine the stability of systems and topological structures.

  • Monte Carlo Anneal
    A modified version of Krauth's annealing algorithm for arranging circles on a sphere. We use hard-shell potentials about each point instead of the typical Coulombic potentials. We can then increase the radius of influence of each particle or decrease the shell radius to anneal the system. Instead of using a cubic Gaussian, we use a spherical Gaussian to yeild a flat directional distribution of the perturbations. As in the Local Monte Carlo, Movement specifies the distribution's standard deviation from 0.0 respect to the shell's radius. Prob of Anneal is the probabilty of annealing the structure with respect to the number of accepted movements and Anneal by is the scaling ratio to anneal the system by. Increasing the Prob of Annealing and decreasing Anneal by will greatly increase the rate at which the annealing process occurs.

  • Lattice Energy
    Treats the edges as springs and conserves the Delaunay trigulation of a point set. A Lattice Constant a is defined as 4πR2/Faces = (sqrt(3)/2)a2. That is, the prefered length of an edge is that which would make all faces perfect equilateral triangles.

  • Genetic Algorithm
    Genetic Algorithms are typically not applied to physical systems. Mating, mutation, and crossover in physical systems are often difficult to define and determining an organism's fitness is often computationally intensive. In accord, this algorithm is slow, yet highly successful for this problem. Colony defines the carrying capacity of the environment, extra organisms who are not fit enough will be killed and discarded after each generation. Lucky is the number of lucky survivors each generation. These are organisms who may not be the most fit, but are lucky enough to survive the natural selection. Generations is the number of generations to run the algorithm for, which can be interrupted by pressing PAUSE and waiting for the algorithm to complete the current generation. WARNING: ALGORITHM IS VERY SLOW (yet very effective). TEST SMALL SYSTEMS TO GET A FEEL FOR THE SPEED, ACCURACY, AND THE PATIENCE OF THE USER BEFORE DOING SOMETHING RASH! BE PREPARED TO PACK A LUNCH.

  • Construct (m,n)
    There are "magic number" states of N defined by N = 10(m2 + mn + n2) + 2 and denoted by (m,n). A feature of these magic numbers is that they have a configuration with 12 5-coordinated points placed at the vertices of an icosahedron (N = 12, (m,n) = (1,0)). These are called icosadeltahedral structures since they have icosahedral symmetry minus a chirality (except for mn = 0 and mn = n2 states). This algorithm constructs an (m,n) state in its icosadeltahedral configuration.

  • Cap Construction
    Allows the contruction of a sphere from one or more predefined ``caps" of scars in our database.

  • Random Points
    Places the points at random on the sphere.

  • Spiral Dance
    An animation that shows the result of changing one of the coefficients in the spiral algorithm. This can be used to find a good initial condition for a system, but is generally just a neat animation.

Buttons and Options
  • Energy
    Determines the energy of the current system. E = sum(1/|xi-xj|p) for all point pairs i not equal to j. After the energy is calculated, the database is queried and, if the current energy is lower than the recorded energy, the point set and the current energy are stored.

  • Lowest Energy
    Prints the lowest energy we have stored in the database for this system.

  • Load Lowest
    Loads the point set in the database for the lowest energy system we have stored.

  • Add In Midpoints
    When displaying in 3D with the mesh, this will add a point to the surface corresponding to the projection of the midpoint of each edge.

  • Add In Faces
    When displaying in 3D with the mesh, this will add a point to the surface of the shell corresponding to the projection of the center of each face.

System Data

  • File -> Point Set
    Displays the point set defining a system. This can be copied, edited, and reloaded to change the system. Many point formats are supported and data from other programs/systems can be loaded with ease.

  • File -> Adjacency Array
    Displays the Adjacency Array defined by the Delaunay triangulation. This can be copied, edited, and reloaded (providing it is valid) to change the system. Many formats are supported and data from other programs/systems can be loaded with ease.

Check Boxes and Visualization
  • 3D
    Displays the point set in 3D.

  • 3D + Mesh
    Displays a delaunay triangulation of the point set in 3D. Colors denote coordination numbers of particles: Green: 4, Red: 5, Blue: 6 (Flat Space), Yellow: 7, Purple: 8, Black: Other.

  • 3D + Chop
    Toggles Full 3D view and only Positive-Z 3D view.

  • 3D + Index
    Displays the internal index of each point which can be used to more easily discuss systems.

  • 3D + Pot E
    Finds the partial energy of all particles with respect to the prescribed potential and maps it onto a color scheme where Red: High Energy, Blue: Low Energy, When Mesh is checked as well, a Gouraud Shading scheme is used to map this over the entire sphere.

  • 3D + Lat E
    Finds the partial strain energy of all particles with respect to the Delaunay triangulation and maps it onto a color scheme where Red: High Energy, Blue: Low Energy, This can be used as a measure of the triangulation's deviation from the 'flat' or 'equilateral triangle' configuration. When Mesh is checked as well, a Gouraud Shading scheme is used to map this over the entire sphere.

Fun Things To Try

Start with 12 particles. Either relax them or load the best configuration from the data base. Now press the button entitled "Add in Faces", which adds a particle to (approximately) the center of the face formed by three particles. From the 12-configuration, you should now have 32 particles (and this is also the ground state for N=32!). Press "Add in Faces" again. Now you should have 92 particle with the red 5-coordinated particles still maintaining their icosahedral symmetry from the 12-system. (This is not the ground state for N=92!) This can be continued, though going past 2,432 is not recommended. Constructions like this are possible from other relatively symmetrical systems such as 3, 4, 5, 6, 7, 9, 10, 12, ... , but icosahedral symmetries are only possible for N = 10*(m2 + n2 + mn) + 2 where m,n are positive integers.

Start with 100-500 particles. Use the Spiral Dance algorithm to line them up (Can be even more fun if they are twisted slightly). Pause this and switch to Relaxation. Run Relaxation on the system and watch the ensueing explosion!

Construct an (m,n) system with the "Construct (m,n)" algorithm. Some interesting effects can be made by adding/removing particles to the center of the icosahedral faces, removing rings of particles about the 5-coordinated points, etc. Look at the surface energy mapping by checking "E map" for an (m,n) state. Very beautiful and symmetric creations can be made, experiment!

Simply try to beat the lowest energies that have been recorded for any of the systems using any/all of the algorithms. I guarantee all the lowest energies up to 200. If some are missing, or you think you can do better, go for it!


[0] Cris Cecka, Primary Author.
[1] Zhu, Jimmy, constructor of the Barnes-Hut Relaxation algorithm [2] Kevin Zielnicki, SQL databasing and personal communication
[3] Middleton, Alan, personal communication.
[4] Bowick, Mark, personal communication.
[5] W. Krauth, Markov Processes Relat. Fields 8, 215 (2002)
[6] M. Bowick, Science 299 (2003) 1716
[7] J. Liu, E. Luijten, Phys. Rev. Lett. 92, 035504 (2004).
[8] T. Erber, G.M. Hockney, J. Phys. A: Math. Gen. 24 (1991) L1369-L1377
[9] E.B. Saff, and A.B.J. Kuijlaars, Distributing many points on a sphere,
      The Mathematical Intelligencer 19, No 1 (1997), 5-11.
[10] Kulsha, Andrey, personal communication.