-
Notifications
You must be signed in to change notification settings - Fork 68
Useful Resources
Some useful resources for those starting out with Engrenage are:
If you are completely new to GR I personally like the books by Schutz and Carroll, but there are many other options available and a quick google search will identify them for you.
For more advanced reading it is usually hard to find a topic not covered by MTW.
There are many useful introductions to NR, but I would recommend in particular the introductory book by Baumgarte and Shapiro as a companion to this course.
There are also the following open source resources:
- Living Reviews in Relativity has a dedicated section on Numerical Relativity.
- Eric Gourgoulhon's notes on NR give a detailed introduction to the ADM decomposition, with a focus on the geometric interpretation.
In the longer term, the NR textbooks of Alcubierre, Baumgarte & Shapiro, and Shibata are useful for filling in the (important but more advanced) details.
You should only need the command line to install python and open the jupyter notebook, but if you are now asking yourself "what is a command line?" or "where do I find this thing called a terminal?", see the instructions here and a list of the main commands here. Google is going to be your friend here.
There are many introductory online courses for python, for example here. You should always use python 3 and not python 2 which is now defunct (mostly).
Jupyter notebook documentation is here.
A complete but far too comprehensive guide to git is here (labelled a "git quick guide", without a hint of irony).
Here is a simpler but more inaccurate git guide to get you going. Apologies to git purists.
The basic purpose of git is to allow you to save all your changes to a code so you can go back and see where you screwed up when things don't work.
In the spirit of xkcd, after getting setup and forking the repository I want to work on the commands I have memorised are:
Clone repository:
git clone <https path copied from the git webpage using the green code button>
Make a new branch to develop a feature or fix some bug without messing up the main branch:
git branch <newbranchname>
But you are not yet in the new branch, so now check it out:
git checkout <newbranchname>
Having made changes, add them all (or just specific files) so they are ready to be committed:
git add --all
git add <specificfilenameorfolder>
Now you actually need to commit them too, adding isn't enough, and it is good to label them with a useful message for future you (e.g. "Code currently broken, was trying to fix integration but it did not work"):
git commit -m "<Some useful commit message>"
Push to the origin so you can see it using the internet browser and it is saved forever:
git push origin <newbranchname>
I usually use the web interface to do merging between branches or other more complicated things, because it shows you the changes in a nice readable interface.
Some more detailed instructions I wrote for a Masters course on numerical methods can be found here.
PRO TIP: Do not wait until code is working to push it to the origin, otherwise you will probably push once a month and end up losing stuff that could have been useful. I push at the end of every session in which I code and I then go and check the comparison of the commit to the old code in the web browser so that I see if I accidentally deleted anything (see for example this commit). Somehow seeing it in the web browser makes it obvious. This takes about 5 minutes each time but probably saves me an hour of debugging or more at a later date. Always be kind to future you.
Copyright BabyGRChombo 2022. Contact us for further details.