Skip to main content

LaTeX Interface to SymPy (CAS) for General Relativity

Project description

NRPyLaTeX Logo


CI PyPI Binder arXiv

NRPy+'s LaTeX Interface to SymPy (CAS) for General Relativity

  • automatic expansion of
  • automatic index raising and lowering
  • arbitrary coordinate system (default)
  • exception handling and debugging

§ Installation

To install NRPyLaTeX using PyPI, run the following command in the terminal

$ pip install nrpylatex

§ Exporting (CAS)

If you are using Mathematica instead of SymPy, run the following code to convert your output

from sympy import mathematica_code

namespace = parse_latex(...)
for var in namespace:
    exec(f'{var} = mathematica_code({var})')

If you are using a different CAS, reference the SymPy documentation to find the relevant printing function.

§ Interactive Tutorial (MyBinder)

Quick Start | NRPy+ Integration | Guided Example (BSSN Formalism)

§ Documentation and Usage

Getting Started and API Reference

Simple Example (Kretschmann Scalar)

Python REPL or Script (*.py)

>>> from nrpylatex import parse_latex
>>> parse_latex(r"""
...     % ignore "\begin{align}" "\end{align}"
...     \begin{align}
...         % coord [t, r, \theta, \phi]
...         % define gDD --dim 4 --zeros
...         % define G M --const
...         %% define Schwarzschild metric diagonal
...         g_{t t} &= -\left(1 - \frac{2GM}{r}\right) \\
...         g_{r r} &=  \left(1 - \frac{2GM}{r}\right)^{-1} \\
...         g_{\theta \theta} &= r^2 \\
...         g_{\phi \phi} &= r^2 \sin^2{\theta} \\
...         %% generate metric inverse gUU, determinant det(gDD), and connection GammaUDD
...         % assign gDD --metric
...         R^\alpha{}_{\beta \mu \nu} &= \partial_\mu \Gamma^\alpha_{\beta \nu} - \partial_\nu \Gamma^\alpha_{\beta \mu}
...             + \Gamma^\alpha_{\mu \gamma} \Gamma^\gamma_{\beta \nu} - \Gamma^\alpha_{\nu \sigma} \Gamma^\sigma_{\beta \mu} \\
...         K &= R^{\alpha \beta \mu \nu} R_{\alpha \beta \mu \nu}
...     \end{align}
... """)
('G', 'GammaUDD', 'gDD', 'gUU', 'epsilonUUUU', 'RUDDD', 'K', 'RUUUU', 'M', 'r', 'theta', 'RDDDD', 'gdet')
>>> from sympy import simplify
>>> print(simplify(K))
48*G**2*M**2/r**6

IPython REPL or Jupyter Notebook

In [1]: %load_ext nrpylatex
In [2]: %%parse_latex
   ...: % ignore "\begin{align}" "\end{align}"
   ...: \begin{align}
   ...:     % coord [t, r, \theta, \phi]
   ...:     % define gDD --dim 4 --zeros
   ...:     % define G M --const
   ...:     %% define Schwarzschild metric diagonal
   ...:     g_{t t} &= -\left(1 - \frac{2GM}{r}\right) \\
   ...:     g_{r r} &=  \left(1 - \frac{2GM}{r}\right)^{-1} \\
   ...:     g_{\theta \theta} &= r^2 \\
   ...:     g_{\phi \phi} &= r^2 \sin^2{\theta} \\
   ...:     %% generate metric inverse gUU, determinant det(gDD), and connection GammaUDD
   ...:     % assign gDD --metric
   ...:     R^\alpha{}_{\beta \mu \nu} &= \partial_\mu \Gamma^\alpha_{\beta \nu} - \partial_\nu \Gamma^\alpha_{\beta \mu}
   ...:         + \Gamma^\alpha_{\mu \gamma} \Gamma^\gamma_{\beta \nu} - \Gamma^\alpha_{\nu \sigma} \Gamma^\sigma_{\beta \mu} \\
   ...:     K &= R^{\alpha \beta \mu \nu} R_{\alpha \beta \mu \nu}
   ...: \end{align}
Out[2]: ('G', 'GammaUDD', 'gDD', 'gUU', 'epsilonUUUU', 'RUDDD', 'K', 'RUUUU', 'M', 'r', 'theta', 'RDDDD', 'gdet')
In [3]: from sympy import simplify
In [4]: print(simplify(K))
Out[4]: 48*G**2*M**2/r**6

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nrpylatex-1.3.post1.tar.gz (33.2 kB view hashes)

Uploaded Source

Built Distribution

nrpylatex-1.3.post1-py3-none-any.whl (34.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page