I'm making a particle simulation where particles both attract and repel and have an ideal distance where the forces are balanced. I'd like to use it to simulate different types of matter.

The problem is that regardless of the forces between the atoms all the matter that I produce using this idea seems ends up having the consistency of very jittery jello. If I try to just decay the velocity of all particles (in an absolute sense), then it becomes less like jello, but if being propelled through space, slows down as if in some kind of thick gooey ether.

I'm thinking that if I had an algorithm where I am adjusting forces between particles, without using absolute velocity in any way (relative velocity between interacting particles is ok) I could cause the matter to "crystalize" without having it act as if its in a ether.

I have a vague understanding that atoms generate light when they vibrate with too much energy, which slows them down, I assume, and I'm hoping some sort of similar physics laws may help guide me to an algorithm to do this.

Specifically, it's a $2d$ system, written in Web GL, where I encode the particles in 2d graphics textures, so graphics card handles all the interactions. Each particle creates a field around it based on the following equation:

$$f(x) = \frac{k}{[(l+(x-d)^2]c}$$

Where $k, l$, and $d$ are universally constant, $x$ is the distance from the particle. $c$ is constant per particle type. One particle type could have a negative value, and another a positive, creating an attraction between the two. This is explained more below.

$f(x)$ is multiplied to a normalized vector that is pointed away from the particle in question to get a force vector.

This equation creates a kind of force "donut" around the particle, based on the various values of $k,l$ and $d$.

(Right now I only have the above equation, but of course I could add others).

The field the particles live in contains the sum of all the fields generated by the particles. The change in velocity to the particle is determined as follows:

$$g(x) = f*\frac{c}{m}$$

where $f$ is the total field vector at the particles location, $m$ is the particles mass and $c$ is the "field charge" of the particle type, also used in the above equation.

There are a variable number of fields. In the simplest scenario there is only 1 but in general I have 2, one for the electric force and another for a nuclear repelling force.

  • $\begingroup$ Solids simulated in this way should act like jello until the total energy of the molecules drops to a level whee the average vibrational amplitude is much smaller than the inter-molecular distance and the applied forces (averaged over surface molecules at the area of application) are small compared to those needed to displace a molecule by a inter-molecular distance. You will incidentally get a nice model of the elastic modulii. $\endgroup$ Commented Oct 1, 2016 at 15:52

1 Answer 1


You seem to have some sort of short-ranged interaction and program a molecular dynamics simulation. Another common potential for these things is the Lennard-Jones potential which might give you more stability.

As far as I know solid state is impossible with quantum mechanics. Using the $1/r^2$ forces that we have with gravity and electrostatics, there is no way to build up a stable solid. If you have a checkerboard pattern of electrons and protons, it might will collapse by the tiniest perturbation. So actually one needs quantum mechanics to have proper bound states.

For your simulation I'd suggest you try the Lennard-Jones potential. The damping with the velocity is another things that should give you stability. I fear that without quantum theory you cannot build a classical simulation of elementary particles.

  • $\begingroup$ The Lennard-Jones potential is interesting, but the big problem is the dampening. If two atoms are interacting both traveling at a combined speed of x (where x = (m1+m2)/(v1+v2), m1,m2 is mass of both particles, v1,v2 are the velocity, and x, v1 and v2 are 2d vectors). I want to dampen the velocity of the particles relative to each other, but not absolutely. In other words, x should stay the same value, but v1 and v2 should in effect equalize (if you ignore rotation). Of course, this must scale up to more interacting particles. $\endgroup$
    – redfish64
    Commented Oct 1, 2016 at 22:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.