EinsteinPy - Making Einstein possible in Python¶

EinsteinPy is an open source pure Python package dedicated to problems arising in General Relativity and gravitational physics, such as goedesics plotting for Schwarzschild, Kerr and Kerr Newman space-time model, calculation of Schwarzschild radius, calculation of Event Horizon and Ergosphere for Kerr space-time. Symbolic Manipulations of various tensors like Metric, Riemann, Ricci and Christoffel Symbols is also possible using the library. EinsteinPy also features Hypersurface Embedding of Schwarzschild space-time, which will soon lead to modelling of Gravitational Lensing! It is released under the MIT license.
View source code of EinsteinPy!
Key features of EinsteinPy are:
Geometry analysis and trajectory calculation in vacuum solutions of Einstein’s field equations
Schwarzschild space-time
Kerr space-time
Kerr-Newman space-time
Various utilities related to above geometry models
Schwarzschild Radius
Event horizon and ergosphere for Kerr black hole
Maxwell Tensor and electromagnetic potential in Kerr-Newman space-time
And much more!
Symbolic Calculation of various quantities
Christoffel Symbols
Riemann Curvature Tensor
Ricci Tensor
Index uppering and lowering!
Simplification of symbolic expressions
Geodesic Plotting
Static Plotting using Matplotlib
Interactive 2D plotting
Environment aware plotting!
Coordinate conversion with unit handling
Spherical/Cartesian Coordinates
Boyer-Lindquist/Cartesian Coordinates
Hypersurface Embedding of Schwarzschild Space-Time
And more to come!
Einsteinpy is developed by an open community. Release announcements and general discussion take place on our mailing list and chat.
The source code, issue tracker and wiki are hosted on GitHub, and all contributions and feedback are more than welcome. You can test EinsteinPy in your browser using binder, a cloud Jupyter notebook server:
EinsteinPy works on recent versions of Python and is released under the MIT license, hence allowing commercial use of the library.
from einsteinpy.plotting import StaticGeodesicPlotter
a = StaticGeodesicPlotter(mass)
a.plot(r,v)
Contents¶
- Getting started
- User guide
- Vacuum Solutions to Einstein’s Field Equations
- Jupyter notebooks
- Visualizing advancement of perihelion in Schwarzschild space-time
- Animations in EinsteinPy
- Symbolically Understanding Christoffel Symbol and Riemann Curvature Tensor using EinsteinPy
- Contravariant & Covariant indices in Tensors (Symbolic)
- Ricci Tensor and Scalar Curvature calculations using Symbolic module
- Analysing Earth using EinsteinPy!
- Visualizing frame dragging in Kerr space-time
- Visualizing event horizon and ergosphere of Kerr black hole
- Plotting Spacial Hypersurface Embedding for Schwarzschild Space-Time
- Weyl Tensor calculations using Symbolic module
- Einstein Tensor calculations using Symbolic module
- Lambdify in symbolic module
- What’s new
- Developer Guide
- EinsteinPy API