RSSAmplifier

Blog

James’ Space Blog

Ramblings on C++, OpenCL, and GPU programming

/RSS feed ↗10 posts

Latest posts

Numerical Relativity 105: Smashing neutron stars together like its 2002

Hi! It’s time to do something spectacular today, and crash some neutron stars into each other:

Numerical Relativity 104: How to build a neutron star - from scratch

Today’s job is very simple, conceptually. We’re going to dig into what it means for something to be a neutron star - how you represent these in general relativity, and all the necessary steps you’ll need to solve along the way to successfully bring one to life in a full numerical relativistic simulation. We’ll be giving them both spin and momentum, because they’re not terribly useful otherwise

Numerical Relativity 103: Raytracing numerical spacetimes

Hi! Today we’re going to look at raytracing numerical spacetimes. We’re going to explore two things:

Numerical Relativity 102: Simulating fast binary black hole collisions on the GPU

Hello! Today we’re going to do one of the coolest things in all of physics in my opinion, which is simulating the collision of two black holes. Last time round, we implemented most of what we’ll need to simulate this, so today’s job is to capitalise on that and finally smash some black holes together. I’d highly recommend reading the prior article first

Numerical Relativity 101: Simulating spacetime on the GPU

Hi there! Today we’re going to be getting into numerical relativity, which is the art of simulating the evolution of spacetime itself. While there a quite a few known solutions to the equations of general relativity at this point (eg the Schwarzschild metric), many of the most interesting regions of general relativity can only be explored by directly simulating how spacetime itself evolves…

Implementing General Relativity: Wormholes, spinning black holes, accretion disks, and redshift

Hiyas! This article is the third in a series on rendering general relativity - if you’re unfamiliar you may want to read these articles first: one, two. We’re going to tie up some loose ends today, and dip heavily into the science behind Interstellar (mostly by accident)1. This is the last jumbo tutorial article I’m doing in this series - after this we’ll be moving onto numerical relativity, so…

Implementing General Relativity: What’s inside a black hole?

Hello! Today we’re going to do something really cool: Throw ourselves into a black hole and find out what happens. We’re going to upgrade our understanding of initial conditions via tetrads - so you can render any metric tensor - and we’re also going to learn what parallel transport is

Building a fast single source GPGPU language in C++, and rendering black holes in it

Hi! Last episode we built a schwarzschild black hole raytracer together, and we learnt several things

Implementing General Relativity: Rendering the Schwarzschild black hole, in C++

General relativity is pretty cool. Doing anything practical with it is a bit of a pain, and a lot of information is left to the dark arts. More than that, a significant proportion of information available on the internet is unfortunately incorrect, and many visualisations of black holes are wrong in one way or another - even ones produced by physicists! We’re going to focus on two things:

Automatic differentiation and dual numbers in C++ are pretty neat, with a single exception

To cut down on clickbait, the exception is the lack of an overloadable ternary operator in C++