forgotpwd16 4 days ago

An excellently presented article. Impressed by the usage of `turtle` module. Didn't knew it was that capable.

programjames 4 days ago

I think it'd be really cool to add a histogram of particle speeds with an entropy counter. To control temperature, make particles gain a little momentum in a random direction when they hit the sides of the box.

  • ijustlovemath 4 days ago

    Wouldn't they lose momentum to heating the environment?

    • powersnail 4 days ago

      At the level of particles, isn't "heating" the same as speeding up?

      • ijustlovemath 3 days ago

        Yes! I was pointing out that particles typically lose energy to collision with the environment, not gain it (as the OP implied)

        • topherclay 3 days ago

          OP was suggesting a way to artificially control the temperature, so they would artificially add energy to raise temperature.

          • programjames 3 days ago

            Nah, the goal isn't to add or subtract energy, just change the entropy. If you have a process that on average doesn't change energy, but makes the distribution of speeds more or less narrow, then that is temperature control. I thought adding a fixed amount of momentum in a random direction (where higher temperature = more momentum) would be a way to control temperature. However, that actually increases energy on average, so you would need some way to lose energy to the environment as @ijustlovemath pointed out.

spacecadet 4 days ago

Reminds me of the 2D universe simulator I wrote over Christmas last year. Mine consists of square entities (going for a pixel art aesthetic) of random initial size that have a weak gravity, slowly bumping into each other, condensing down into small objects with very strong gravity... you can imagine where thats going. The code is god awful but it was fun to hack through and it looks cute. I used Pygame, but it also spits out some matplot visualizations for a historical pov.

semi-extrinsic 4 days ago

I'm sorry, but this is not good code for teaching anyone about anything to do with physics. It manages to be both verbose, non-idiomatic, slow and wrong. Feynman would not touch this with a ten foot pole.

First ditch all the object orientation and encapsulation and stuff. Your data is a 2xN Numpy array. Your visualization is a scatter plot in Matplotlib. Voila, 80% of the code is gone.

For the position updates, you either use a repulsive potential to approximate the hard spheres and do molecular dynamics, showing how to integrate Newton's second law and the Verlet scheme and ergodicity and the whole shebang. Or you do Monte Carlo for the positional updates and keep the exact hard spheres. You discuss statistical mechanics concepts like ensembles and thermostats and stuff.

Then you produce results like the pair correlation function and compare it with the Carnahan-Starling equation, dig into the really cool stuff. Compute velocity autocorrelation functions, test what happens when you change density and temperature, talk about phase diagrams, etc.

This is actually an amazingly deep subject, yet very accessible and intuitive, that sits on the border between physics and chemistry. Sad to see it treated like this. Would suggest that people have a look at the book by Allen and Tildesley which is much much better. They have both Python and Fortran example code on Github.

  • kevmo314 4 days ago

    There's an excellent statistical mechanics course on Coursera that goes through these steps: https://www.coursera.org/learn/statistical-mechanics

    It uses python and had a mindblowing moment when I realized how the simulation I wrote connected to the world, making it one of the few I actually managed to finish. As you alluded to, the lecturers definitely hint that simpler code is easier to work with as the later stuff becomes impossibly complex with anything more.

    • maurits 3 days ago

      Definitely a personal favorite for me to. Excelled introduction to MCMC methods, lots and lots of python programs and nicely filmed against a green screen.

  • evrimoztamur 4 days ago

    I agree with your comments, but it's still good to recognise that although his modelling might not be correct or imprecise, the results do show diffusion occurring.

    It might not be the realistic simulation of what's going on but gets the intuition across very well nonetheless.

  • wrycoder 3 days ago

    TFA is a decent first cut. It may be inefficient (the author already mentioned and discarded a N^2 approach), but it’s easily understandable. The author also mentioned that he was planning a NumPy version, so maybe some of the topics you addressed will be covered.

cocodill 4 days ago

I really underestimated the turtle package.