For today’s recreational coding exercise, we simulate active matter, i.e., swarming. Such a system may describe a flock of birds or a school of fish. We will look at how very simple rules may lead to the emergence of self-ordered motions.

You may find the accompanying Python code on github.

But first, below is a gif of what running our simulation looks like:

Image for post
Image for post

Viscek model for flocking behavior

The model consists of N moving particles, indexed by i=1,…,N. Each particle has an angle Θrepresenting the direction in which it moves. All particles move with the same speed v₀. Particles will interact with each other within an interaction radius R, which will force them to change their direction (angle). …


For today’s recreational coding exercise, we simulate fluid flow past a cylinder using the Lattice Boltzmann method. This is a really cool and really simple technique to simulate fluid flow: instead of evolving the fluid (Navier-Stokes) equations directly, microscopic particles on a lattice are simulated with streaming and collision processes. The power of the method comes from reducing the high-dimensionality of the microscopic physics onto the lattice, which has limited degrees of freedom. It is remarkable that this restricted microscopic representation is able to capture macroscopic fluid behavior.

You may find the accompanying Python code on github.

But first, below is a gif of what running our simulation looks…


For today’s recreational coding exercise, we look at a simple way to create volume renderings to visualize 3D simulation datacubes. This technique is incredibly useful when you have space-filling data you would like to visualize. Such data shows up often in astrophysical datasets but also in other areas of computer graphics and medical data (CT scans and MRIs).

You may find the accompanying Python code on github.

Before diving in, below is a gif of what running the rendering algorithm on some data may look like:

Image for post
Image for post

Datacube


For today’s recreational coding exercise, we will look at quantum mechanical systems, in particular, the Schrodinger-Poisson equations. We will create a simulation for the evolution of a wavefunction under its self-potential. Such a system may describe certain superfluids/Bose-Einstein condensate or exotic dark matter.

You may find the accompanying Python code on github.

Before diving in, below is a gif of what running our simulation looks like:

Image for post
Image for post

Schrodinger-Poisson Equations


For today’s recreational coding exercise, we will simulate the Kelvin-Helmholtz Instability with the Finite Volume method. We will consider a compressible fluid with a high density stream moving in opposite direction of the background. The velocity shear induces a famous instability that is seen sometimes in clouds as well as Jupiter’s Great Red Spot.

You may find the accompanying Python code on github.

Before we begin, below is a gif of what running our simulation looks like:

Kelvin-Helmholtz Instability
Kelvin-Helmholtz Instability

Finite Volume Method


For today’s recreational coding exercise, we will simulate a star with smoothed-particle hydrodynamics (SPH). We will start with some initial condition and relax it into a stable stellar structure and measure the star’s density as a function of radius. The SPH method has many applications in astrophysics and elsewhere, and is in fact a general one to simulate all types of fluids.

You may find the accompanying Python code on github.

Before we begin, below is a gif of what running our simulation looks like:

SPH simulation
SPH simulation

SPH Method


For today’s recreational coding exercise, we will investigate plasma physics with particle-in-cell (PIC) simulations. We will create a simulation of two electron beams passing through each other in opposite directions. An interesting phenomenon occurs, called the Two-Stream Instability.

You may find the accompanying Python code on github.

Before we begin, below is a gif of what running our simulation looks like:

Plasma PIC simulation of the Two-Stream Instability
Plasma PIC simulation of the Two-Stream Instability

Particle-In-Cell (PIC) Method

  • position rᵢ
  • velocity vᵢ

The electrons feel an acceleration aᵢ which is due to the electric field E at the location of the particle. The equations of motion for the electrons are given…


For today’s recreational coding exercise, we will look at the gravitational N-body problem. We will create a simulation of a dynamical system of particles interacting with each other gravitationally. Such a system may describe the orbits of planets in the Solar System or stars in our Galaxy.

You may find the accompanying Python code on github. (And if you prefer to use Matlab, please see my Matlab version of the article)

But first, below is a gif of what running our simulation looks like:

N-body simulation
N-body simulation

Force Calculation

  • mass…


For today’s recreational coding exercise, we will look at the gravitational N-body problem. We will create a simulation of a dynamical system of particles interacting with each other gravitationally. Such a system may describe the orbits of planets in the Solar System or stars in our Galaxy.

You may find the accompanying Matlab code on github. (And if you prefer to use Python, please see my Python version of the article)

But first, below is a gif of what running our simulation looks like:

N-body simulation
N-body simulation

Force Calculation

  • mass…

About

Philip Mocz

Computational Astrophysicist @Princeton, sharing intro tutorials on creating your own computer simulations! Harvard ’12 (A.B), ’17 (PhD). Connect with me @PMocz

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store