Skip to content
/ nrpylatex Public

LaTeX interface for SymPy, Mathematica, Maple, and other computer algebra packages, for the benefit of general relativity and differential geometry research. Part of the NRPy+ ecosystem.

License

Notifications You must be signed in to change notification settings

nrpy/nrpylatex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

LaTeX interface for SymPy, Mathematica, Maple, and other computer algebra packages, for the benefit of general relativity and differential geometry research. Part of the NRPy+ ecosystem.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages