SkillAgentSearch skills...

Gravica

a GR tensor computation library built on Symbolica. Computes the full chain from metric tensor to Einstein/Weyl tensors, 23–4300x faster than EinsteinPy/SymPy.

Install / Use

/learn @jijinbei/Gravica
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Gravica

PyPI

General Relativity computation library built on Symbolica (Rust-powered CAS).

Gravica computes the full GR tensor chain — from metric tensor to Einstein tensor — using Symbolica's high-performance symbolic algebra engine, achieving 23x–4300x speedup over EinsteinPy/SymPy.

Features

  • Full GR computation chain: Metric → Christoffel → Riemann → Ricci → Einstein → Weyl
  • Curvature invariants: Kretschner scalar, Ricci scalar
  • Schouten tensor, Stress-Energy-Momentum tensor
  • Geodesic equation generator
  • Index raising/lowering utilities
  • Built-in metrics: Minkowski, Schwarzschild, Kerr, FLRW, Reissner-Nordström, de Sitter, anti-de Sitter, Gödel
  • Lazy evaluation with caching
  • Cross-validated against EinsteinPy

Documentation

API reference: https://site.jijinbei.jp/gravica/

Quick Start

| Tutorial | Topics | |----------|--------| | Getting Started | Schwarzschild metric, full pipeline (Metric → Christoffel → Riemann → Ricci → Einstein) | | Predefined Metrics | All 8 built-in metrics: Minkowski, Schwarzschild, Kerr, FLRW, Gödel, Reissner–Nordström, de Sitter, Anti-de Sitter | | Weyl Tensor & Kretschner Scalar | Curvature invariants, singularity detection, vacuum identity $C_{abcd} = R_{abcd}$ | | Geodesic Equations | Symbolic equations of motion for Schwarzschild and Kerr spacetimes | | Index Manipulation | Raising and lowering tensor indices, round-trip verification | | Kerr Black Hole | Full tensor pipeline on the Kerr metric, vacuum solution verification | | FLRW Cosmology | Stress-energy tensor, cosmological constant, Schouten tensor |

Benchmarks: Gravica vs EinsteinPy

All benchmarks measured on the same machine. Median of 3 runs with GC disabled.

Speedup Heatmap

Speedup Heatmap

Absolute Time Comparison

Time Comparison

Summary

| Computation | Minkowski | Schwarzschild | FLRW | |---|---|---|---| | Christoffel | 33x | 23x | 23x | | Riemann | 91x | 149x | 147x | | Ricci | 72x | 40x | 296x | | Ricci Scalar | 472x | 2021x | 544x | | Einstein | 1391x | 4342x | 1029x |

Metric inverse is ~0.3–0.5x (Python cofactor overhead), but this is amortized by the massive speedups in downstream computations.

Reproduce

uv run benchmarks/run_benchmarks.py    # Run benchmarks
uv run benchmarks/plot_benchmarks.py   # Generate charts

Architecture

MetricTensor → ChristoffelSymbols → RiemannTensor → RicciTensor → EinsteinTensor
                      ↓                   ↓              ↓       → WeylTensor
               GeodesicEquations   KretschnerScalar  SchoutenTensor
                                                              ↓
                                                     StressEnergyTensor

| Module | Computes | |---|---| | metric.py | $g_{ab}$, $g^{ab}$, $\det(g)$ | | christoffel.py | $\Gamma^a_{\ bc} = g^{ad},\tfrac{1}{2}(\partial_b,g_{ac} + \partial_c,g_{ab} - \partial_a,g_{bc})$ | | riemann.py | $R^a_{\ bcd}$, $R_{abcd}$, $R^{abcd}$ | | ricci.py | $R_{ab} = R^c_{\ acb}$, $R = g^{ab},R_{ab}$ | | einstein.py | $G_{ab} = R_{ab} - \tfrac{1}{2},g_{ab},R$ | | weyl.py | $C_{abcd}$ (Weyl conformal tensor) | | kretschner.py | $K = R_{abcd},R^{abcd}$ (Kretschner scalar) | | geodesic.py | $\ddot{x}^a + \Gamma^a_{\ bc},\dot{x}^b,\dot{x}^c = 0$ | | schouten.py | $S_{ab} = \tfrac{1}{n-2}\bigl(R_{ab} - \tfrac{R,g_{ab}}{2(n-1)}\bigr)$ | | stress_energy.py | $8\pi G,T_{ab} = G_{ab} + \Lambda,g_{ab}$ | | indexing.py | Index raising / lowering for rank-2 tensors |

Tests

uv run pytest

Verified properties:

  • Minkowski: All tensors $= 0$
  • Schwarzschild: $R_{ab} = 0$, $G_{ab} = 0$ (vacuum), $K = 12,r_s^2/r^6$
  • Riemann symmetries: $R^a_{\ bcd} = -R^a_{\ bdc}$
  • Christoffel known values: $\Gamma^r_{\ tt} = r_s(r-r_s)/(2r^3)$
  • de Sitter / anti-de Sitter: Ricci scalar matches analytic values
  • Geodesic equations: Free particle in Minkowski
  • Index roundtrip: Raise then lower recovers original tensor
  • EinsteinPy cross-validation: Christoffel and Ricci match

License

MIT

View on GitHub
GitHub Stars4
CategoryDevelopment
Updated24d ago
Forks0

Languages

Jupyter Notebook

Security Score

70/100

Audited on Mar 17, 2026

No findings