Suppose you had a circle made of a hundred or so equidistant points on its circumference. If you drew straight lines connecting distant points on this circle (chords) in some systematic way, you’d produce a kind of spirograph. I don’t know what these plots are actually called, and “spirograph” is actually just the brand-name of a popular toy, but in any case, most people have probably drawn something like this at some point in their lives.

The most common form of these that I’ve encountered are ones where the pattern for connecting the points is to simply connect every point p_i to p_{i+k} where k is some fixed offset. What if instead we connected p_i to p_{ik} where k is now a fixed multiplier?

I used the Desmos graphing calculator to play around with different values of k in real time. I did not expect the “lobe” count to scale as \propto k-1.

I tried my hand at writing a simple Monte Carlo radiation transport code a couple of nights ago. It turned out not to be very difficult to write, and at only 50 lines of code, it produces some pretty amazing results:

This image represents the deposition of photon energy into a liquid drop suspended in a gas-fill container. The bright spot above and to the left of the droplet is the photon source.

For anyone who has read Blindsight (by Peter Watts), you’ll know that the concept of a Chinese Room plays a major part in the premise. For the sake of irony, I trained an AI I’ve been playing with to write a passable sequel to Blindsight.

I’ve had some ideas kicking around my head regarding how to efficiently pack objects of various sizes into a volume. I decided to finally try writing an algorithm that would randomly insert objects picked from a size distribution profile, and then apply repulsion forces between them to “pack” them into a low-energy state. This is the basic principle behind a gravitational glass algorithm, but I’m hoping I can take this a step further and now use these positions as seeds for a voronoi, and then “erode” the fully connected voronoi diagram into something like a bunch of packed boulders.

There is a huge library of work on the subject of sphere packing, some of which is very relevant to SPH, most of which is not (mainly because SPH particles are not hard spheres), and the state of the art for spherical particle arrangements in SPH at the moment is some combination of random seeding with an inverse gravity-like force to push the particles into an optimal arrangement. I’ve used this approach myself many times in the past, relying on the WVT algorithm developed at LANL, but it’s computationally expensive, and it isn’t the sort of thing you can fiddle with at run-time to add more resolution if you need to.

So, a little while back I developed a new algorithm that I call the RPRPS generator. RPR stands for recursive primitive refinement, and PS means parameterized spiraling. The algorithm is pretty clever:

For the center region of the sphere, the RPR portion of the algorithm takes the first four platonic solids

and performs a Catmull-Clark refinement on them to generate concentric spheres.

This takes care of the center region, but pushing these shapes to higher and higher refinements eventually gets into trouble as the projection of triangles onto a spherical surface isn’t ideal. For the rest of the sphere, the algorithm defaults over to a parameterized spiraling method that just uses 1 parameter, the total number of particles on the surface of each spherical shell, to build out concentric shells.

So far, I’ve used this algorithm for a half-dozen different problems, from the Moon forming impact, to asteroid deflection tests, to a supernova simulation I’ve been looking into. It’s a fairly easy algorithm to implement for any SPH code, and more importantly, it’s a run-time generation method that obviates the need to store libraries of particle arrangements for increasingly high resolutions. Just choose a particle count and off it goes, creating an entire arrangement in just a few seconds.

I’ve benchmarked its stability against a number of other popular generators and published the results in ApJ.

A little while back, I worked with the VisIT team here at LLNL to create an operator for VisIT that will resample SPH particle data to a mesh for the purposes of visualization. I think the results are pretty nice!

It’s been known for some time now that the Moon formed out of a cataclysmic collision between the Earth and a Mars-sized planet called Theia. What remains unsolved is just how the Moon ended up with so much of Earth’s granite. Every planet has its own, unique mix of Oxygen isotopes – this allows scientists to determine whether a meteorite came from Mars, the asteroid belt, or something more exotic. However, if the Moon formed from the impact of another planet with the Earth, then it, too, should have a unique isotopic signature, except it doesn’t! Moon rocks look almost exactly like Earth rocks! So where did Theia go?

I’ve started a new long-term project to simulate this impact in the hopes of tracking where all the material from both objects goes. So far, all signs point to the Moon forming out of ejected Earth granite, and all of the granite and iron from Theia stayed on Earth. The planet that crashed into the Earth to form the Moon is literally right beneath us, trapped inside the Earth.

Merely placing two compact objects near each other in orbit is not the appropriate way to design initial conditions. In nature, these two stars have felt each other’s gravitational pull for quite some time before the last few orbits (where the merger happens). And so, they should be tidally distorted and not overflowing their Roche lobes at the start of the simulation. I’ve spent a few years now perfecting the generation of initial conditions for white dwarf mergers, and I think this image demonstrates best how accurate they are.

Going to submit a paper in the near term that establishes a new mechanism for producing certain absorption features found in SNeIa. If correct, it can place some very good constraints on white dwarf merger parameters.

Case in point, here’s an image of one of the white dwarf merger simulations I’m performing. This simulation features the largest mass disparity I’ve yet attempted, and should make for an interesting supernova.