numex

General relativity is Albert Einstein's theory of gravitation. Gravity in our own solar system is relatively weak, and Newton's law of universal gravitation works very well for most purposes. General relativity predicts new gravitational phenomena, such as black holes, neutron stars, an expanding universe, and gravitational radiation.

Gravitational waves are generated by accelerating masses. They are analogous to electromagnetic radiation and carry information about changes in the gravitational field. Gravitational waves have recently been discovered by the gravitational wave observatories LIGO and Virgo. These waves are created in merging binaries with either black holes or neutron stars.

Unfortunately, the Einstein equations of general relativity are very difficult to solve, especially for the binary systems that generate gravitational waves. The equations can be solved with numerical methods on supercomputers, and now even on some home computers. Learning the techniques of numerical relativity takes a lot of time, because it requires background in general relativity, numerical analysis, and computer skills.

The purpose of this project is to give some examples for beginners of solving equations numerically. These notes begin with some some examples solving ordinary differential equations. They usually begin with some easier examples, then progress to cases that require some general relativity. This way the reader can see how these techniques can be used in relativity research.

The different examples are listed in the tabs on the left. The documentation briefly describes the equations and the numerical methods used to find the solution. Example Jupyter notebooks are found in the example directory of the numex repository.

While I wish that these notes could be more pedagogical, for now the descriptions are brief, with pointers to other published materials. You may need to ask your teacher or instructor for additional help to supplement these examples. Finally, each section ends with project ideas that a student could pursue to gain additional skills.

The source code for this project is written in Julia and can be accessed in the GitHub repository numex.

What is Julia?

Julia is a modern dynamic language similar to Python. Julia is fast, easily parallelized, and ideal for scientific computing, while also being easy to use. Julia uses just-in-time compilation to native computer code, which makes its performance nearly as fast as native C code.

Jupyter Notebooks

Jupyter notebooks are an interactive way to run Julia and python code in a web browser. This repository contains several Jupyter notebooks to give some simple examples of the numerical problems discussed here.