SOL·N·BODY — Physics Verification Report
Deliverable: solar-system.html — a single self-contained file (~140 kB; the only external dependency is Three.js r184 from cdnjs.cloudflare.com). Open it in any modern browser on desktop or phone.
What it is
A real N-body gravitational simulation of the solar system — not an animation. The Sun, all eight planets, the Moon, and Pluto are seeded from JPL's J2000 Keplerian elements (Standish Table 1, DE440 gravitational parameters) and then integrated forward purely by Newton's law of gravitation, with an optional first post-Newtonian (1PN) general-relativity correction of the same class used by real ephemerides. Nothing is key-framed: planetary positions emerge from F = Gm₁m₂/r² each timestep. A separate analytic Kepler mode (JPL's own approximate-positions recipe) serves as a cross-check, and ghost osculating ellipses are drawn live from the instantaneous state vectors.
The simulation runs in barycentric coordinates, so the Sun visibly wobbles under Jupiter's pull — that wobble measured 0.00925 AU over 30 years in testing, matching the expected Jupiter-dominated value.
The physics inside (all researched from primary sources, all implemented, all tested)
Newtonian N-body gravitation; Kepler's three laws (the second law is checked live via areal velocity); Kepler's equation solved by safeguarded Newton–Raphson to |f| < 10⁻¹³; osculating-element extraction via the specific angular momentum and Laplace–Runge–Lenz eccentricity vector; vis-viva; the 1PN relativistic correction a_GR = (GM/c²r³)[(4GM/r − v²)r + 4(r·v)v] (IERS Conventions 2010 form, momentum-conserving reaction included); the Schwarzschild solution — event horizon r_s = 2GM/c², photon sphere 1.5 r_s, ISCO 3 r_s, shadow at b_crit = 3√3 GM/c²; Kerr horizons and the Bardeen–Press–Teukolsky prograde/retrograde ISCO; gravitational time dilation (static and circular-orbit), redshift, light deflection α = 4GM/c²b; Hawking temperature, evaporation lifetime, Bekenstein–Hawking entropy; Hill spheres, escape velocities, Roche limits, tidal acceleration; Shakura–Sunyaev disk temperature profile and relativistic Doppler beaming (δ³ intensity scaling) for the accretion-disk rendering.
Integrators: symplectic leapfrog (kick-drift-kick), 4th-order Yoshida composition (default, exact Yoshida-1990 coefficients), and classical RK4 — included deliberately so you can watch a non-symplectic method's energy drift in the diagnostics panel.
Verification results (automated, reproducible)
| Test | Requirement | Measured |
|---|---|---|
| Kepler solver residual (e ≤ 0.97) | < 10⁻¹² | 1.1 × 10⁻¹⁴ |
| Elements → state → elements round trip | < 10⁻⁹ | 1.4 × 10⁻¹³ |
| Energy conservation, full system, 100 yr (Yoshida 4, dt = 0.25 d) | < 10⁻⁸ | 8.9 × 10⁻¹¹ |
| Angular-momentum conservation, same run | < 10⁻¹⁰ | 3.1 × 10⁻¹⁴ |
| RK4 secular drift vs leapfrog (same dt) | ≥ 10× worse | 341× worse |
| Mercury perihelion advance with 1PN on | 6πGM/(c²a(1−e²)) ± 2% | −0.7% (42.68″/century; GR prediction 42.98″/century) |
| Mercury drift with 1PN off | < 5% of GR value | 0.28% |
| Earth aphelion (early July 2026) | 1.0167 ± 0.001 AU | 1.01670 AU on 2026-07-05 |
| Osculating periods vs NASA fact sheets | < 0.5% | worst 0.47% (Pluto) |
| Moon stays bound, 2-yr N-body | 0.00230–0.00280 AU | 0.00236–0.00272 AU |
| Sun's Schwarzschild radius | 2.953 km ± 0.1% | 2.9533 km |
| Hawking T (1 M☉) | ≈ 6.17 × 10⁻⁸ K | 6.170 × 10⁻⁸ K |
| Solar-limb light deflection | 1.75″ ± 0.5% | 1.7512″ |
| Kerr ISCO (a* = 0.998, prograde) | ≈ 1.237 GM/c² | 1.2370 GM/c² |
Browser verification (headless Chromium): zero console errors, zero page errors; live in-browser energy drift ~10⁻¹¹ over decades of simulated time; GR sanity check in the running app — setting c to 2% of its true value multiplies Mercury's measured precession by exactly 1/0.02² ≈ 2500 (106,605″/century observed vs 43″ × 2500 predicted), confirming the 1/c² scaling law end to end.
Parameters you can control
Time warp (seconds to years per second), dynamics mode (N-body vs analytic Kepler), integrator choice, timestep, mutual planet-planet gravity on/off, GR on/off, G multiplier (0.1–10×), c multiplier (0.01–1× — lower c to make relativistic precession visible in seconds; the predicted and measured values update together), per-body mass multipliers (0–1000×) and enable toggles, Δv kicks (prograde/radial/normal), a rogue-star flyby experiment, black-hole mode with mass from 1 M☉ to Sagittarius A* (4.297 × 10⁶ M☉, GRAVITY Collaboration 2022) and Kerr spin a* up to 0.998, plus visualization-only controls (size exaggeration, trails, ghost orbits, labels, grid — each labeled "visual only" and never touching the physics).
The Diagnostics panel shows conservation-law drift and the live Mercury perihelion-precession measurement against the GR prediction; the Equations panel renders every governing equation with values substituted live for the selected body, each with its source.
Live self-audit against NASA/JPL Horizons
The deployed service adds a capability we believe no other public orrery offers: continuous, quantified self-verification against the world's reference ephemeris. The backend proxies (and caches) the NASA/JPL Horizons API; the Verification panel fetches DE441 barycentric state vectors (ecliptic-J2000, solar-system barycenter, AU & AU/day) for all eleven bodies at the current simulation epoch and reports, per body, the position residual in km, the velocity residual in m/s, and the angular error as seen from the simulation's own Earth in milliarcseconds — with markers rendered in the 3D scene so the deviation is visible, and a residual-growth sparkline as the integration advances.
Measured behavior (live DE441 data, 2026-07-11): seeded from JPL's approximate Keplerian elements, heliocentric residuals are ~1.8×10³ km (Mercury), ~7.7×10³ km (Earth), rising to 10⁵–10⁶ km for the outer planets — exactly the published accuracy envelope of the Table-1 elements themselves (hundreds of arcseconds for Jupiter–Pluto over 1800–2050); the Sun's barycentric position agrees to 194 km. One press of Seed from Horizons re-initializes the whole system from DE441 vectors (residuals drop to 0.000 km at the seed epoch, float64-exact), after which residual growth measures pure model fidelity — our 11-body point-mass + 1PN dynamics against JPL's full model (asteroid perturbations, planetary figure effects, extended-body lunar dynamics). Simulation time is TDB by convention (UTC differs by ~69 s). The /api/horizons endpoint is public and CORS-open, so anyone in the scientific community can independently audit the deployment with three lines of code.
Shareable state URLs (base64url-encoded parameters in the fragment) make any configuration — a rogue-star flyby, a Kerr black hole at Sgr A* mass, a low-c precession demonstration — a reproducible, citable link.
Honest limitations
The 1PN correction is applied for the central body (the dominant term — planet-planet GR cross-terms are negligible); Newtonian total energy is the conserved diagnostic, so with GR enabled a tiny bounded oscillation appears by construction (footnoted in-app). JPL Table-1 elements are fitted for 1800–2050; outside that range seeding and ghost orbits extrapolate (the N-body integration itself remains exact). The Moon is seeded from Meeus mean elements (~few-% accuracy) and immediately governed by real N-body forces thereafter. Black-hole visuals use physically-grounded real-time approximations (weak-field star lensing, δ³ beaming) rather than full geodesic ray-tracing; every derived quantity shown (r_s, ISCO, T_H, dilation) is exact.
Process
Built in four phases as requested: web research of all governing equations and data from primary sources (JPL SSD, DE440/Park et al. 2021, NSSDC, IERS, Yoshida 1990, Bardeen–Press–Teukolsky 1972, GRAVITY 2022) by Sonnet research agents; architecture and specification on Fable (this session); implementation of the physics core and the 3D application by Opus agents; independent verification (39-assertion physics suite + headless-browser instrumentation and screenshot review) before delivery. The full sourced equation reference is included as EQUATIONS.md.
Governing Equations Reference — Physically Rigorous 3D Solar System + Black Hole Simulator
Global conventions. SI units throughout unless noted: G = 6.67430e-11 m^3 kg^-1 s^-2 (CODATA 2018), c = 2.99792458e8 m/s (exact), hbar = 1.054571817e-34 J s, k_B = 1.380649e-23 J/K, sigma_SB = 5.670374419e-8 W m^-2 K^-4, M_sun = 1.989e30 kg, GM_sun = 1.32712440018e20 m^3/s^2 (IAU/DE ephemeris value — in practice always use the product GM, known far more precisely than G or M separately). mu = G(M+m) is the two-body gravitational parameter (mu ≈ GM for a test body). Angles in radians. Geometrized units (G=c=1) noted where standard; convert masses to lengths via M_geo = GM/c^2.
A. Newtonian N-Body
A.1 N-Body Gravitational Acceleration
$$\vec{a}i = G \sum{\substack{j=1 \ j \neq i}}^{N} \frac{m_j,(\vec{r}_j - \vec{r}_i)}{|\vec{r}_j - \vec{r}_i|^3}$$
a_i = G * sum_{j=1..N, j != i} [ m_j * (r_j - r_i) / |r_j - r_i|^3 ]
a_i— acceleration vector of body i [m/s^2]G— gravitational constant [m^3 kg^-1 s^-2]m_j— mass of body j [kg];r_i, r_j— position vectors in an inertial frame [m];N— number of bodies- Ephemeris convention: propagate
GM_jproducts directly (e.g.GM_sun = 1.32712440041279419e20 m^3/s^2per DE440). Classical astrodynamics units: AU / days / solar masses with the Gaussian constantk = 0.01720209895(G -> k^2).
Sources: Harvard Math 118 N-body notes · Klioner, Basic Celestial Mechanics · JPL SSD Astrodynamic Parameters
A.2 Total Mechanical Energy
$$E = \sum_{i=1}^{N} \tfrac{1}{2} m_i |\vec{v}i|^2 ;-; \sum{i=1}^{N}\sum_{j=i+1}^{N} \frac{G, m_i m_j}{r_{ij}}$$
E = sum_i( 0.5*m_i*v_i^2 ) - sum_{i<j}( G*m_i*m_j / r_ij ), r_ij = |r_i - r_j|
E— total energy [J], conserved for an isolated system;v_i— speed of body i [m/s];r_ij— pair separation [m]- Each unique pair counted once (
i<j); equivalent form-(1/2)*G*sum_i sum_{j!=i} m_i*m_j/r_ijfor independent loops.
Sources: Harvard Math 118 N-body notes · Klioner, Basic Celestial Mechanics
A.3 Total Angular Momentum Vector
$$\vec{L} = \sum_{i=1}^{N} m_i \left(\vec{r}_i \times \vec{v}_i\right)$$
L = sum_i( m_i * cross(r_i, v_i) )
L— total angular momentum [kg m^2/s], conserved for an isolated system (pairwise central forces, zero net internal torque); use barycentric origin for the frame-independent value.
Sources: Harvard Math 118 N-body notes · LibreTexts (Cline), Angular Momentum of a Many-Body System · Klioner notes
A.4 Barycenter and Total Momentum
$$\vec{R}_{\rm cm} = \frac{\sum_i m_i \vec{r}i}{\sum_i m_i}, \qquad \vec{P} = \sum_i m_i \vec{v}i = M{\rm tot},\vec{v}{\rm cm}$$
R_cm = sum_i(m_i * r_i) / sum_i(m_i)
P = sum_i(m_i * v_i) # = M_tot * v_cm
R_cm— barycenter position [m];P— total momentum [kg m/s];M_tot— total mass [kg]Pconserved for an isolated system: the barycenter moves uniformly, defining the inertial barycentric frame (basis of the IAU/IERS BCRS used by ephemerides).
Sources: Wikipedia — Center of mass · orbital-mechanics.space — Motion of the Barycenter · NASA Basics of Spaceflight glossary
A.5 Escape Velocity
$$v_{\rm esc} = \sqrt{\frac{2GM}{r}}$$
v_esc = sqrt(2*G*M / r)
v_esc— minimum unpowered speed to reach infinity with zero residual speed, from distancer[m] of massM[kg]. From(1/2)v^2 - GM/r = 0.
Sources: Wikipedia — Escape velocity · physicsfundamentals.org — Escape velocity
A.6 Hill Sphere Radius
$$r_H \approx a\sqrt[3]{\frac{m}{3M}} \qquad\text{(pericenter refinement: } r_H \approx a(1-e)\sqrt[3]{m/3M}\text{)}$$
r_H = a * (m / (3.0*M))^(1/3)
r_H— radius within which the secondary's gravity dominates over the primary's tide [m];a— orbit semi-major axis [m];m— secondary mass [kg];M— primary mass [kg]; valid form << M. Derived from the L1/L2 Lagrange points of the circular restricted three-body problem.
Sources: Wikipedia — Hill sphere (cites de Pater & Lissauer, Planetary Sciences; Hamilton & Burns 1992) · astronomicalreturns.com — Hill spheres · Physics Forums — Hill sphere derivation
A.7 Laplace Sphere of Influence
$$r_{\rm SOI} = a\left(\frac{m}{M}\right)^{2/5}$$
r_SOI = a * (m/M)^(2/5)
r_SOI— patched-conic sphere-of-influence radius [m];a— secondary–primary distance [m];m, M— secondary/primary masses [kg]- Hill vs. Laplace — not interchangeable: Hill has exponent 1/3 with the factor 3 (
a(m/3M)^(1/3), a dynamical stability boundary from L1/L2); Laplace SOI has exponent 2/5, no factor 3 (a perturbation-ratio patching criterion). For Earth:r_SOI ≈ 9.24e5 kmvsr_H ≈ 1.5e6 km.
Sources: orbital-mechanics.space — Sphere of Influence · poliastro docs — SOI · Wikipedia — Sphere of influence (astrodynamics)
A.8 Roche Limit (Rigid and Fluid)
$$d_{\rm rigid} = R_M\left(2,\frac{\rho_M}{\rho_m}\right)^{1/3} \approx 1.26, R_M\left(\frac{\rho_M}{\rho_m}\right)^{1/3}, \qquad d_{\rm fluid} \approx 2.44, R_M\left(\frac{\rho_M}{\rho_m}\right)^{1/3}$$
d_rigid = R_M * (2.0*rho_M/rho_m)^(1/3) # ~ 1.26 * R_M * (rho_M/rho_m)^(1/3)
d_fluid = 2.44 * R_M * (rho_M/rho_m)^(1/3)
d— center-to-center disruption distance [m];R_M— primary radius [m];rho_M, rho_m— mean densities of primary and satellite [kg/m^3]- Coefficient notes (cross-checked):
1.26 = 2^(1/3)— static rigid body (self-gravity vs. tide only); adding the synchronous-rotation centrifugal term gives ≈1.44–1.45 (UMD ASTR630 derives 1.45);2.44— Roche's classical fluid equilibrium-ellipsoid value (precise treatments give 2.42–2.46). Rings persist inside, moons outside.
Sources: UMD ASTR630 Roche limit handout · mathscinotes.com — Roche limit examples · astronomicalreturns.com — Roche limit · Grokipedia — Roche limit
A.9 Tidal Acceleration Across a Body
$$a_{\rm tidal} \approx \frac{2GM,d}{r^3}$$
a_tidal = 2.0*G*M*d / r^3
a_tidal— differential acceleration between two points separated byd[m] along the line to massM[kg], at distancer[m] (d << r). Used= body diameter for near/far-side stretch, ord= center-to-surface distance for stress relative to the freely falling center. First-order Taylor expansion ofGM/x^2; transverse (compressive) component is ~half magnitude, opposite sign. Basis of Roche limit (A.8) and spaghettification estimates.
Sources: Wikipedia — Tidal force · UCSD Physics 161 lecture (Griest) · CMU 33-331 tidal forces · SFU PHYS 390 Lecture 8
B. Keplerian Mechanics
B.1 Kepler's Three Laws
- Law I (Ellipses): each bound orbit is an ellipse with the central body at one focus (general two-body result: any conic section — ellipse/parabola/hyperbola — per the sign of the orbital energy).
- Law II (Equal Areas): the focus–body line sweeps equal areas in equal times; areal velocity is constant and equals half the specific angular momentum.
- Law III (Harmonies):
T^2 ∝ a^3with constant4 pi^2 / (G(M+m)).
$$\frac{dA}{dt} = \frac{1}{2}r^2\dot\theta = \frac{h}{2} = \text{const}, \qquad T^2 = \frac{4\pi^2}{G(M+m)},a^3$$
dA/dt = 0.5 * r^2 * dtheta_dt = h/2 = constant # h = |cross(r, v)|
T^2 = (4*pi^2 / (G*(M+m))) * a^3
A— swept area [m^2];r— radius [m];h— specific angular momentum [m^2/s];T— period [s];a— semi-major axis [m];M, m— masses [kg]
Sources: NASA Science — Orbits and Kepler's Laws · JPL fltops, Two Body Problem ch. 9 (eqs. 9.3.2, 9.2.2) · Princeton Dynamics §3.4
B.2 Classical Orbital Elements and Anomalies
elements = [a, e, i, Omega, omega, M0] # M0 (or time of periapsis T_p) fixes phase at epoch
- a — semi-major axis [m]: half the major axis.
- e — eccentricity [–]:
e = c/a(center–focus distance over a); 0 circular, 0<e<1 ellipse, 1 parabola, >1 hyperbola. - i — inclination [rad, 0..pi]: angle between orbit plane and reference plane = angle between
h_vecand reference pole;i<90°prograde,i>90°retrograde. - Omega — longitude of ascending node [rad, 0..2pi]: in the reference plane, from the reference x-axis (vernal equinox) to the ascending node (south-to-north crossing). Undefined for equatorial orbits.
- omega — argument of periapsis [rad, 0..2pi]: in the orbit plane, from ascending node to periapsis, along the motion. Undefined for circular orbits.
- nu — true anomaly [rad]: physical focus-centered angle from periapsis to the body.
- E — eccentric anomaly [rad]: auxiliary angle at the ellipse center via the circumscribed circle of radius a; perifocal position
(a cos E - ae, a sqrt(1-e^2) sin E). - M — mean anomaly [rad]: fictitious uniformly increasing angle,
M = n(t - T_p); the time variable, converted toE,nuvia Kepler's equation.
Sources: JPL SSD glossary — semi-major axis, eccentricity, inclination, node, argument of perihelion, true anomaly, mean motion · CSUN — the three anomalies · orbital-mechanics.space — Classical Orbital Elements · René Schwarz Memo 1 (PDF)
B.3 Kepler's Equation and Newton–Raphson Solution
$$M = E - e\sin E, \qquad E_{n+1} = E_n - \frac{E_n - e\sin E_n - M}{1 - e\cos E_n}, \quad E_0 = M$$
f(E) = E - e*sin(E) - M
fp(E) = 1 - e*cos(E)
E = M # initial guess
repeat: dE = f(E)/fp(E); E = E - dE
until abs(dE) < tol # e.g. 1e-12 rad
- Transcendental (no closed form); Newton–Raphson converges quadratically for elliptic orbits.
Sources: René Schwarz Memo 1, eqs. 3–4 · JPL fltops ch. 9, eqs. 9.6.5/9.6.8 · ASU MAE462 Lecture 4 · NASA TN — Optimized solution of Kepler's equation
B.4 True Anomaly from Eccentric Anomaly
$$\tan\frac{\nu}{2} = \sqrt{\frac{1+e}{1-e}},\tan\frac{E}{2} \qquad\Longleftrightarrow\qquad \nu = 2,\mathrm{atan2}!\left(\sqrt{1+e},\sin\tfrac{E}{2},\ \sqrt{1-e},\cos\tfrac{E}{2}\right)$$
nu = 2 * atan( sqrt((1+e)/(1-e)) * tan(E/2) ) # branch issues near E = +/-pi
nu = 2 * atan2( sqrt(1+e)*sin(E/2), sqrt(1-e)*cos(E/2) ) # robust, full range — use in code
Sources: René Schwarz Memo 1, eqs. 5–6 · ASU MAE462 Lecture 4 · Wikipedia — Eccentric anomaly
B.5 Orbital Radius
$$r = a(1 - e\cos E) = \frac{a(1-e^2)}{1+e\cos\nu} = \frac{p}{1+e\cos\nu}, \qquad p = a(1-e^2) = h^2/\mu$$
r_from_E = a * (1 - e*cos(E))
p = a * (1 - e*e) # semi-latus rectum = h^2/mu
r_from_nu = p / (1 + e*cos(nu))
Consistency: with cos E = (e + cos nu)/(1 + e cos nu), a(1 - e cos E) = a(1-e^2)/(1+e cos nu) exactly.
Sources: Wikipedia — Eccentric anomaly · CU Boulder Intro Orbital Mechanics ch. 6 · Oregon State space systems notes · JPL fltops ch. 9 (eq. 2.3.16) · René Schwarz Memo 1, eq. 7
B.6 Position and Velocity in the Perifocal (PQW) Frame
$$\vec r_{PQW} = r\begin{bmatrix}\cos\nu\ \sin\nu\ 0\end{bmatrix},\qquad \vec v_{PQW} = \frac{\mu}{h}\begin{bmatrix}-\sin\nu\ e+\cos\nu\ 0\end{bmatrix}$$
$$\vec r_{PQW} = \begin{bmatrix}a(\cos E - e)\ a\sqrt{1-e^2}\sin E\ 0\end{bmatrix},\qquad \vec v_{PQW} = \frac{\sqrt{\mu a}}{r}\begin{bmatrix}-\sin E\ \sqrt{1-e^2}\cos E\ 0\end{bmatrix}$$
# true-anomaly form
r = p / (1 + e*cos(nu))
r_pqw = [ r*cos(nu), r*sin(nu), 0 ]
v_pqw = (mu/h) * [ -sin(nu), e + cos(nu), 0 ]
# eccentric-anomaly form (r = a*(1 - e*cos(E)))
r_pqw = [ a*(cos(E)-e), a*sqrt(1-e*e)*sin(E), 0 ]
v_pqw = (sqrt(mu*a)/r) * [ -sin(E), sqrt(1-e*e)*cos(E), 0 ]
- Basis:
P_hattoward periapsis,Q_hat90° ahead in-plane,W_hat = P x Qalongh_vec;h = |r x v| = sqrt(mu*p)[m^2/s].
Sources: René Schwarz Memo 1, eq. 8 · orbital-mechanics.space — Perifocal frame · Wikipedia — Perifocal coordinate system
B.7 Perifocal-to-Ecliptic Rotation Matrix
Convention (verified): passive 3-1-3 sequence; inertial-to-perifocal is R_3(omega) R_1(i) R_3(Omega), so perifocal-to-inertial (what the simulator applies) is
$$\vec r_{IJK} = R_z(-\Omega),R_x(-i),R_z(-\omega);\vec r_{PQW}$$
$$R = \begin{bmatrix} \cos\Omega\cos\omega - \sin\Omega\sin\omega\cos i & -\cos\Omega\sin\omega - \sin\Omega\cos\omega\cos i & \sin\Omega\sin i \ \sin\Omega\cos\omega + \cos\Omega\sin\omega\cos i & -\sin\Omega\sin\omega + \cos\Omega\cos\omega\cos i & -\cos\Omega\sin i \ \sin\omega\sin i & \cos\omega\sin i & \cos i \end{bmatrix}$$
cO=cos(Omega); sO=sin(Omega); ci=cos(i); si=sin(i); cw=cos(omega); sw=sin(omega)
R11 = cO*cw - sO*sw*ci; R12 = -cO*sw - sO*cw*ci; R13 = sO*si
R21 = sO*cw + cO*sw*ci; R22 = -sO*sw + cO*cw*ci; R23 = -cO*si
R31 = sw*si; R32 = cw*si; R33 = ci
# r_ecl = R @ r_pqw ; same R applies to v_pqw. R is orthogonal: R^-1 = R^T.
- Column 3 of
Ris the orbit normal in inertial coordinates,h_hat = (sin Omega sin i, -cos Omega sin i, cos i)— consistent withi = arccos(h_z/h)and the node vector in B.8. Verified three ways: direct multiplication, ASU active-formR_3(Omega)R_1(i)R_3(omega), and Schwarz's identicalR_z(-Omega)R_x(-i)R_z(-omega)with fully expanded components.
Sources: René Schwarz Memo 1, eqs. 9–10 · ASU MAE462 Lecture 7 · Wikipedia — Perifocal coordinate system
B.8 Inverse Problem: Osculating Elements from State Vector
Given r_vec, v_vec, mu:
$$\vec h = \vec r \times \vec v,\qquad \vec n = \hat K \times \vec h = (-h_y, h_x, 0),\qquad \vec e = \frac{\vec v \times \vec h}{\mu} - \frac{\vec r}{r}$$
$$\varepsilon = \frac{v^2}{2} - \frac{\mu}{r},\qquad a = -\frac{\mu}{2\varepsilon},\qquad e = |\vec e|,\qquad i = \arccos\frac{h_z}{h}$$
$$\Omega = \begin{cases}\arccos(n_x/n) & n_y \ge 0\ 2\pi-\arccos(n_x/n) & n_y < 0\end{cases}\quad \omega = \begin{cases}\arccos\frac{\vec n\cdot\vec e}{n e} & e_z \ge 0\ 2\pi-\arccos\frac{\vec n\cdot\vec e}{n e} & e_z < 0\end{cases}\quad \nu = \begin{cases}\arccos\frac{\vec e\cdot\vec r}{e r} & \vec r\cdot\vec v \ge 0\ 2\pi-\arccos\frac{\vec e\cdot\vec r}{e r} & \vec r\cdot\vec v < 0\end{cases}$$
h_vec = cross(r_vec, v_vec); h = norm(h_vec)
n_vec = cross([0,0,1], h_vec); n = norm(n_vec) # = (-h_y, h_x, 0)
e_vec = cross(v_vec, h_vec)/mu - r_vec/norm(r_vec); e = norm(e_vec)
eps = dot(v_vec,v_vec)/2 - mu/norm(r_vec)
a = -mu / (2*eps) # = 1/(2/r - v^2/mu)
i = acos(h_vec[2]/h) # [0, pi], unambiguous
Omega = acos(n_vec[0]/n); if n_vec[1] < 0: Omega = 2*pi - Omega
omega = acos(dot(n_vec,e_vec)/(n*e)); if e_vec[2] < 0: omega = 2*pi - omega
nu = acos(dot(e_vec,r_vec)/(e*norm(r_vec))); if dot(r_vec,v_vec) < 0: nu = 2*pi - nu
e_vec— eccentricity vector (toward periapsis, |e_vec| = e); Laplace–Runge–Lenz vector overmu.eps— specific orbital energy [m^2/s^2].- Degenerate cases (per Vallado-style
rv2coe): equatorial (n ≈ 0) — use true longitude (angle from x-axis tor_vec, sign fromr_y); circular (e ≈ 0) — use argument of latitude (angle fromn_vector_vec, sign fromr_z).
Sources: René Schwarz Memo 2 (PDF) · orbital-mechanics.space — Elements and the state vector · Vallado-style RV2COE.m implementation
B.9 Vis-Viva Equation
$$v^2 = \mu\left(\frac{2}{r}-\frac{1}{a}\right)$$
v = sqrt( mu * (2.0/r - 1.0/a) )
- From
eps = v^2/2 - mu/r = -mu/(2a) = const;a>0ellipse,a->infparabola,a<0hyperbola.
Sources: JPL fltops ch. 9, eq. 9.5.31 · Wikipedia — Vis-viva equation
B.10 Mean Motion
$$n = \sqrt{\frac{\mu}{a^3}} = \frac{2\pi}{T}$$
n = sqrt(mu / (a*a*a)) # rad/s; M(t) = M0 + n*(t - t0)
Sources: JPL SSD glossary — mean motion · Wikipedia — Mean motion · René Schwarz Memo 1, eq. 2
B.11 Orbital Period
$$T = 2\pi\sqrt{\frac{a^3}{\mu}}$$
T = 2.0*pi * sqrt(a*a*a / mu)
Sources: JPL fltops ch. 9, eq. 9.2.2/9.5.23 · Wikipedia — Mean motion
C. General Relativity (Weak-Field)
C.1 1PN Correction Acceleration (EIH Two-Body Reduction — what ephemerides use)
$$\vec{a}_{\rm GR} = \frac{GM}{c^{2}r^{3}}\left[\left(\frac{4GM}{r} - v^{2}\right)\vec{r} + 4\left(\vec{r}\cdot\vec{v}\right)\vec{v}\right]$$
added to the Newtonian term a_N = -GM*r_vec/r^3.
a_GR = (G*M/(c^2 * r^3)) * ( (4*G*M/r - v^2)*r_vec + 4*dot(r_vec, v_vec)*v_vec )
r_vec— position of orbiting body relative to central mass [m],r = |r_vec|;v_vec— relative velocity [m/s],v = |v_vec|. Geometrized:a_GR = (M/r^3)((4M/r - v^2) r_vec + 4 (r.v) v_vec).- Coefficient confirmation: IERS Conventions (2010) Ch. 10, Eq. 10.12 gives the PPN Schwarzschild-term acceleration
Δr̈ = GM/(c²r³){[2(β+γ)GM/r − γ v²]r + 2(1+γ)(r·v)v}; substituting GR values β = γ = 1 yields exactly(4GM/r − v²)r + 4(r·v)v. Same form in the Explanatory Supplement to the Astronomical Almanac (p. 281, as reproduced by Project Pluto). This is the dominant term of the full N-body PPN/EIH law used in JPL DE430/DE440 (their Eq. 27, β=γ=1); full N-body treatment: Damour, Soffel & Xu, Phys. Rev. D 43–47 (1991–94).
Sources: IERS Conventions 2010, Ch. 10 (Eq. 10.12) · Project Pluto — relativistic corrections (Expl. Suppl. p. 281) · Folkner et al., DE430/DE431 (Eq. 27) · Park et al. 2021, DE440/DE441 (Eq. 27) · Damour, Soffel & Xu I, PRD 43, 3273
C.2 Perihelion Advance per Orbit
$$\Delta\omega = \frac{6\pi GM}{c^{2}a(1-e^{2})}$$
delta_omega = 6*pi*G*M / (c^2 * a * (1 - e^2)) # radians per orbit
a— semi-major axis [m];e— eccentricity. Geometrized:6*pi*M/(a*(1-e^2)).- Mercury: GR contribution 42.98 arcsec/century (precisely 42.9799″/cy, quoted as (42.980 ± 0.001)″/cy; total observed 574.10″/cy, of which 532.3035″/cy is Newtonian planetary perturbation). Independent recomputation with
a = 5.79090e10 m,e = 0.20563,T = 87.9691 d,GM_sun = 1.32712440018e20gives 0.10353″/orbit × 415.20 orbits/cy ≈ 42.998″/cy — confirming the6 picoefficient.
Sources: Wikipedia — Tests of general relativity · Wikipedia — Schwarzschild geodesics · Tipler Modern Physics companion — Perihelion of Mercury (43.0″/cy)
C.3 Gravitational Time Dilation (Static Observer)
$$d\tau = \sqrt{1-\frac{2GM}{rc^{2}}};dt$$
dtau_dt = sqrt(1 - 2*G*M/(r*c^2))
dtau— proper time of the static observer at areal radiusr[s];dt— coordinate time (static observer at infinity) [s]. Directg_ttof the Schwarzschild metric; weak-field expansiondtau/dt ≈ 1 + Phi/c^2,Phi = -GM/r(GPS literature form).
Sources: U. Alabama Schwarzschild solution notes · Ashby, "Relativity in the GPS," Living Rev. Relativity 6, 1 (2003), Eq. 27
C.4 Total Time Dilation, Circular Orbit
$$\frac{d\tau}{dt} = \sqrt{1-\frac{3GM}{rc^{2}}}$$
dtau_dt_orbit = sqrt(1 - 3*G*M/(r*c^2))
- Why 3, not 2: gravitational term contributes
2GM/(rc^2)(fromg_tt), and the kinematic term addsv^2/c^2 = GM/(rc^2)because circular Schwarzschild orbits satisfy exactlyv^2 = GM/r(Kepler III holds exactly in these coordinates, D.7):dτ²/dt² = (1 − 2GM/rc²) − GM/rc² = 1 − 3GM/rc². Linearized, this is Ashby Eq. 35's GPS clock-rate offset3GM/(2ac^2).
Sources: Ashby, Living Rev. Relativity 6, 1 (2003), Eqs. 27 & 35 · MathPages — orbital proper time in Schwarzschild geometry
C.5 Gravitational Redshift
$$\frac{\lambda_{o}}{\lambda_{e}} = \frac{\nu_{e}}{\nu_{o}} = \sqrt{\frac{1-\dfrac{2GM}{r_{o}c^{2}}}{1-\dfrac{2GM}{r_{e}c^{2}}}}$$
lambda_obs/lambda_emit = sqrt( (1 - 2*G*M/(r_obs*c^2)) / (1 - 2*G*M/(r_emit*c^2)) )
z = lambda_obs/lambda_emit - 1
r_e, r_o— areal radii of emitter and observer [m]. Withr_s = 2GM/c^2:sqrt((1 - r_s/r_o)/(1 - r_s/r_e)); linearized:dnu/nu ≈ (GM/c^2)(1/r_e - 1/r_o)(surface formgh/c^2).
Sources: Wikipedia — Gravitational redshift · arXiv:2309.10499, Eq. 2.4–2.5
C.6 Shapiro Delay
General (integral) form, PPN coefficient (1+gamma) with gamma = 1:
$$\Delta t = \frac{2GM}{c^{3}}\int \frac{dl}{r(l)}$$
Closed form, one-way between emitter (distance r_E from M) and receiver (r_P), separation r_EP, impact parameter d:
$$\Delta t = \frac{2GM}{c^{3}}\ln!\left[\frac{r_{E}+r_{P}+r_{EP}}{r_{E}+r_{P}-r_{EP}}\right] \approx \frac{2GM}{c^{3}}\ln!\left(\frac{4,r_{E}r_{P}}{d^{2}}\right)$$
delta_t = (2*G*M/c^3) * ln( (r_E + r_P + r_EP) / (r_E + r_P - r_EP) )
delta_t_approx = (2*G*M/c^3) * ln( 4*r_E*r_P / d^2 )
delta_t_roundtrip = 2 * delta_t # radar echo (original Shapiro test): coefficient 4GM/c^3
Sources: Pössel, "The Shapiro time delay and the equivalence principle," arXiv:2001.00229 (Eqs. 12, 27) · Wikipedia — Shapiro time delay
C.7 Light Deflection
$$\alpha = \frac{4GM}{c^{2}b}$$
alpha = 4*G*M / (c^2 * b) # radians
b— impact parameter [m]. Geometrized:alpha = 4M/b = 2 r_s/b. Exactly twice the Newtonian/equivalence-principle-only value; grazing the Sun: 1.75″ (Newtonian: 0.87″).
Sources: arXiv:2405.04529 — deflection of light, Eq. 17 · Wikipedia — Tests of general relativity
C.8 Einstein Ring Angular Radius
$$\theta_{E} = \sqrt{\frac{4GM}{c^{2}}\cdot\frac{D_{LS}}{D_{L}D_{S}}}$$
theta_E = sqrt( (4*G*M/c^2) * D_LS / (D_L * D_S) ) # radians
M— lens mass [kg];D_L, D_S, D_LS— angular diameter distances observer→lens, observer→source, lens→source [m]. From the point-mass lens equation with source offset zero.
Source: LibreTexts — Lensing by Point Masses
D. Black Holes
Schwarzschild
D.1 Schwarzschild Metric Line Element
$$ds^2 = -\left(1-\frac{2GM}{c^2 r}\right)c^2,dt^2 + \left(1-\frac{2GM}{c^2 r}\right)^{-1}dr^2 + r^2\left(d\theta^2+\sin^2\theta,d\phi^2\right)$$
ds^2 = -(1 - 2GM/(c^2 r)) c^2 dt^2 + (1 - 2GM/(c^2 r))^(-1) dr^2 + r^2 (dtheta^2 + sin(theta)^2 dphi^2)
# with r_s = 2GM/c^2: ds^2 = -(1 - r_s/r) c^2 dt^2 + dr^2/(1 - r_s/r) + r^2 dOmega^2
t— coordinate time [s];r— areal radius (sphere at fixed r has area4 pi r^2) [m];theta, phi— angles [rad].
Sources: Wikipedia — Schwarzschild metric · Carroll GR lecture notes ch. 7 · MIT OCW 8.033 Schwarzschild notes
D.2 Event Horizon
$$r_s = \frac{2GM}{c^2}$$
r_s = 2*G*M/c^2 # geometrized: r_s = 2M
Source: Wikipedia — Schwarzschild metric
D.3 Photon Sphere
$$r_{\rm photon} = \frac{3GM}{c^2} = \tfrac{3}{2}r_s$$
r_photon = 3*G*M/c^2 = 1.5*r_s
- Unstable circular orbit for light, same radius for all photon angular momenta.
Sources: Wikipedia — Photon sphere · Carroll notes, eq. 7.51
D.4 ISCO (Massive Particles)
$$r_{\rm ISCO} = \frac{6GM}{c^2} = 3r_s$$
r_ISCO = 6*G*M/c^2
Sources: Wikipedia — ISCO · Carroll notes, eq. 7.55 · MIT OCW 8.033 · UMD astr498 lecture 10 · Tübingen GTR notes
D.5 Effective Potential (Massive Particle)
Form A — additive potential, per unit mass, with equation of motion (1/2)(dr/dtau)^2 + V_eff(r) = (c^2/2)[(E/mc^2)^2 - 1]:
$$V_{\rm eff}(r) = -\frac{GM}{r} + \frac{L^2}{2r^2} - \frac{GML^2}{c^2 r^3}$$
Form B — energy-normalized fully relativistic form (algebraically identical: (E/mc^2)^2 = 1 + 2V_eff/c^2):
$$\left(\frac{E}{mc^2}\right)^2 = \left(1-\frac{2GM}{c^2 r}\right)\left(1+\frac{L^2}{c^2 r^2}\right)$$
V_eff(r) = -G*M/r + L^2/(2*r^2) - G*M*L^2/(c^2 * r^3)
(E/(m*c^2))^2 = (1 - 2*G*M/(c^2*r)) * (1 + L^2/(c^2*r^2))
(dr/dtau)^2 = c^2*(E/(m*c^2))^2 - c^2*(1 - 2*G*M/(c^2*r))*(1 + L^2/(c^2*r^2))
E— conserved orbital energy [J];L— specific angular momentum (per unit rest mass) [m^2/s]. The-GML^2/(c^2 r^3)term is the GR correction absent in Newtonian mechanics — it destabilizes circular orbits below6GM/c^2and permits plunge orbits. Geometrized:V_eff = -M/r + L^2/(2r^2) - M L^2/r^3.
Sources: Carroll notes, eq. 7.48 (Form A verbatim) · Wikipedia — Schwarzschild geodesics · MIT OCW 8.033 (Form B verbatim) · LibreTexts / Skidmore GR — Effective Potential · Grokipedia — ISCO
D.6 Specific Energy and Angular Momentum on Circular Orbits (and at ISCO)
$$\tilde{E}(r) = \frac{E}{mc^2} = \frac{1-\dfrac{2GM}{c^2 r}}{\sqrt{1-\dfrac{3GM}{c^2 r}}}, \qquad \tilde{L}(r) = \frac{L}{mc} = \frac{\sqrt{GMr/c^2}}{\sqrt{1-\dfrac{3GM}{c^2 r}}}$$
$$\frac{E}{mc^2}\bigg|{\rm ISCO} = \frac{2\sqrt{2}}{3} \approx 0.9428, \qquad \frac{L}{mc}\bigg|{\rm ISCO} = 2\sqrt{3},\frac{GM}{c^2}$$
E_tilde(r) = (1 - 2*G*M/(c^2*r)) / sqrt(1 - 3*G*M/(c^2*r)) # dimensionless
L_tilde(r) = sqrt(G*M*r/c^2) / sqrt(1 - 3*G*M/(c^2*r)) # L/(m*c), units of length
E_ISCO = 2*sqrt(2)/3 ~= 0.94281 ; L_ISCO = 2*sqrt(3)*G*M/c^2 ~= 3.4641*G*M/c^2
- Binding energy from rest at infinity to ISCO:
1 - 2*sqrt(2)/3 ≈ 5.72%of rest mass — the standard Schwarzschild thin-disk radiative efficiency.
Sources: UMD astr498 lecture 10 · Tübingen GTR notes, eqs. 26–27 · Carroll notes · MIT OCW 8.033 · Grokipedia — ISCO
D.7 Circular-Orbit Angular Velocity
$$\Omega(r) = \frac{d\phi}{dt} = \sqrt{\frac{GM}{r^3}}$$
Omega(r) = sqrt(G*M / r^3) # rad/s in coordinate time
- Exactly the Newtonian/Keplerian form in Schwarzschild coordinate time — a well-known coincidence (UMD notes: "By a lovely coincidence, in Schwarzschild coordinates the angular velocity observed at infinity is exactly the same as it is in Newtonian physics"). Distinct from the locally measured shell-observer speed
v_shell = sqrt((GM/r)/(1 - 2GM/(c^2 r))).
Sources: UMD astr498 lecture 10 (verbatim quote) · Tübingen GTR notes, eq. 30
D.8 Radial Infall Proper Time
Drop from rest at r0 (Newtonian-form energy equation holds exactly in proper time):
$$\left(\frac{dr}{d\tau}\right)^2 = 2GM\left(\frac{1}{r}-\frac{1}{r_0}\right)$$
From rest at infinity, between radii r_i > r_f:
$$\Delta\tau = \frac{2}{3\sqrt{2GM}}\left(r_i^{3/2}-r_f^{3/2}\right)$$
Finite r0 — cycloid parametric solution (MTW/Chandrasekhar standard result), and total proper time to the singularity:
$$r(\eta) = \frac{r_0}{2}(1+\cos\eta),\quad \tau(\eta) = \sqrt{\frac{r_0^3}{8GM}}(\eta+\sin\eta),\quad \eta\in[0,\pi];\qquad \tau_{\rm total} = \frac{\pi r_0^{3/2}}{2\sqrt{2GM}}$$
(dr/dtau)^2 = 2*G*M*(1/r - 1/r0)
dtau_from_inf = (2/(3*sqrt(2*G*M))) * (r_i^1.5 - r_f^1.5)
r(eta) = (r0/2)*(1 + cos(eta)); tau(eta) = sqrt(r0^3/(8*G*M)) * (eta + sin(eta))
tau_total = pi * r0^1.5 / (2*sqrt(2*G*M))
Sources: Tübingen GTR notes, eq. 22 · Physics Forums — free fall to the singularity (τ = πr0^{3/2}/(2√(2M)))
Kerr
D.9 Outer and Inner Horizons
$$r_\pm = \frac{GM}{c^2}\left(1\pm\sqrt{1-a_*^2}\right), \qquad a = \frac{J}{Mc}, \qquad a_* = \frac{ac^2}{GM} = \frac{Jc}{GM^2}$$
a = J/(M*c) # Kerr parameter [m]
a_star = a*c^2/(G*M) = J*c/(G*M^2) # dimensionless spin, |a_star| <= 1
r_plus = (G*M/c^2)*(1 + sqrt(1 - a_star^2)) # event horizon
r_minus = (G*M/c^2)*(1 - sqrt(1 - a_star^2)) # inner (Cauchy) horizon
J— BH angular momentum [kg m^2/s];a* = 1is extremal. Geometrized:r_± = M ± sqrt(M^2 - a^2), withDelta(r) = r^2 - 2Mr + a^2 = (r - r_+)(r - r_-).
Sources: Roma1 INFN GR notes ch. 21 (eqs. 21.55–56) · UNCW Kerr metric notes · E. Taylor, "The Spinning Black Hole"
D.10 Ergosphere (Static Limit)
$$r_{\rm ergo}(\theta) = \frac{GM}{c^2}\left(1+\sqrt{1-a_*^2\cos^2\theta}\right)$$
r_ergo(theta) = (G*M/c^2) * (1 + sqrt(1 - a_star^2 * cos(theta)^2))
- Ergoregion:
r_+ < r < r_ergo(theta)— no static observers (mandatory co-rotation), escape still possible (Penrose process). Poles:r_ergo = r_+; equator:r_ergo = 2GM/c^2for any spin.
Sources: Roma1 INFN GR notes, eqs. 21.65/21.69 · UNCW Kerr notes (g_tt = 0 surface) · Wikipedia — Kerr metric
D.11 Kerr ISCO — Bardeen–Press–Teukolsky (1972) Z1/Z2 Formulas
$$Z_1 = 1+(1-a_*^2)^{1/3}\left[(1+a_*)^{1/3}+(1-a_*)^{1/3}\right], \qquad Z_2 = \sqrt{3a_*^2+Z_1^2}$$
$$\frac{r_{\rm ISCO}}{GM/c^2} = 3+Z_2 \mp \sqrt{(3-Z_1)(3+Z_1+2Z_2)} \qquad \begin{cases}-&\text{prograde } (L>0)\ +&\text{retrograde } (L<0)\end{cases}$$
Z1 = 1 + (1 - a_star^2)^(1/3) * ( (1 + a_star)^(1/3) + (1 - a_star)^(1/3) )
Z2 = sqrt(3*a_star^2 + Z1^2)
r_ISCO = (G*M/c^2) * ( 3 + Z2 - sign * sqrt((3 - Z1)*(3 + Z1 + 2*Z2)) )
# sign = +1 prograde (minus branch), sign = -1 retrograde (plus branch)
- Sanity checks:
a*=0→Z1=Z2=3,r_ISCO = 6GM/c^2(Schwarzschild ✓);a*=1→ progradeGM/c^2, retrograde9GM/c^2(extremal limits ✓). - Primary source verified verbatim (BPT 1972 Eq. 2.21, with sign convention quote: "the upper sign refers to direct orbits (corotating, L > 0) ... lower sign to retrograde").
Sources: Bardeen, Press & Teukolsky 1972, ApJ 178, 347 — full-text PDF (Eq. 2.21) · Wikipedia — ISCO (cites BPT) · Grokipedia — ISCO
D.12 Frame-Dragging Angular Velocity (ZAMO / Lense–Thirring)
Angular velocity of a zero-angular-momentum observer — the rate at which local inertial frames are dragged:
$$\omega(r,\theta) = -\frac{g_{t\phi}}{g_{\phi\phi}} = \frac{2Mar}{(r^2+a^2)^2-a^2\Delta\sin^2\theta}, \qquad \Delta = r^2-2Mr+a^2 \quad (G=c=1)$$
$$\omega \xrightarrow{r\to\infty} \frac{2GJ}{c^2 r^3} \quad\text{(weak-field Lense–Thirring rate)}$$
# geometrized (G=c=1; M, a, r in length units):
Delta = r^2 - 2*M*r + a^2
omega = 2*M*a*r / ( (r^2 + a^2)^2 - a^2 * Delta * sin(theta)^2 )
# SI restoration (M -> G*M/c^2 inside Delta too; multiply by c for rad/s):
Delta_SI = r^2 - 2*G*M*r/c^2 + a^2
omega_SI = 2*G*M*a*r / ( c * ( (r^2 + a^2)^2 - a^2 * Delta_SI * sin(theta)^2 ) ) # rad/s
# weak field: omega ~= 2*G*J/(c^2 * r^3)
- Self-consistency: expanding at large r gives
2Ma/r^3(geometrized); witha = J/(Mc),M -> GM/c^2, this is2GJ/(c^2 r^3)— the standard Lense–Thirring result (MTW).
Sources: Roma1 INFN GR notes, eqs. 21.24/21.27 · UNCW Kerr notes (g_tφ, g_φφ components) · Wikipedia — Lense–Thirring precession
E. Quantum / Thermodynamic
E.1 Hawking Temperature
$$T_H = \frac{\hbar c^3}{8\pi G M k_B}$$
T_H = (hbar * c^3) / (8 * pi * G * M * k_B)
# numerically: T_H[K] ~= 1.227e23 / M[kg] ~= 6.17e-8 K * (M_sun / M)
T_H[K];M[kg]; constants as in the header. General formT_H = hbar*kappa/(2*pi*k_B*c)with surface gravitykappa = c^4/(4GM)for Schwarzschild. Matches Hawking (1975): T ≈ 10^26 (M/g)^-1 K.
Sources: Hawking 1975, Comm. Math. Phys. 43, 199 — full text PDF · Springer DOI 10.1007/BF02345020 · Jacobson, Black Hole Thermodynamics lectures (UMD) · Wikipedia — Hawking radiation
E.2 Evaporation Lifetime
$$t_{\rm ev} = \frac{5120,\pi, G^2 M^3}{\hbar c^4}$$
t_ev = 5120 * pi * G^2 * M^3 / (hbar * c^4)
# numerically: t_ev[s] ~= 8.41e-17 * (M[kg])^3 ; M = M_sun -> ~2.1e67 yr
- Derivation: Stefan–Boltzmann horizon emission
P = sigma*A*T_H^4withA = 16 pi G^2 M^2/c^4givesdM/dt = -hbar c^4/(15360 pi G^2 M^2); integratingM^2 dMfromMto 0 yields exactly5120 pi G^2 M^3/(hbar c^4). - Caveat:
5120 piis the idealized photons-only blackbody coefficient (the standard reference formula); greybody factors and multi-species emission (Page 1976) rescale it by O(1).
Sources: Hawking radiation — archived Wikipedia (formula + numeric coefficient 8.407e-17 s/kg^3) · Wikipedia — Hawking radiation (10^67 yr solar-mass check) · iCalculator BH temperature/evaporation · V. Toth — Hawking radiation calculator · LibreTexts — Quantum effects near black holes
E.3 Bekenstein–Hawking Entropy
$$S_{BH} = \frac{k_B c^3 A}{4 G \hbar}, \qquad A = 4\pi r_s^2 = \frac{16\pi G^2 M^2}{c^4} \qquad\Longrightarrow\qquad S_{BH} = \frac{4\pi k_B G M^2}{\hbar c}$$
r_s = 2*G*M/c^2
A = 4*pi*r_s^2 # = 16*pi*G^2*M^2/c^4
S_BH = (k_B * c^3 * A) / (4 * G * hbar) # area form [J/K]
S_BH = 4*pi*k_B*G*M^2 / (hbar*c) # mass form (substitution)
- Bekenstein (1973) proposed S ∝ A (different prefactor); Hawking (1975) fixed the exact 1/4 coefficient (
S = c^3 A/(4 G hbar), k_B = 1 units).
Sources: Jacobson lectures (S = A/4ħG) · nuclear-power.com — Bekenstein–Hawking entropy · Bekenstein 1973, PRD 7, 2333 · Hawking 1975 · arXiv:2507.03778 (quotes both original equations)
E.4 Numerical Reference Values
| Quantity | Value | Note |
|---|---|---|
r_s of the Sun |
2.953 km (2953.2 m via GM_sun = 1.32712440018e20; 2954 m via CODATA G × 1.989e30 kg) |
≈ 2.95 km ✓ |
Hawking T, 1 M_sun BH |
6.17e-8 K (1.227e23 / 1.989e30) |
≈ 6.2e-8 K ✓; LibreTexts quotes 6.1e-8 K |
| Sagittarius A* mass | (4.297 ± 0.012) × 10^6 M_sun = 8.547e36 kg | GRAVITY Collaboration (Abuter et al.) 2022, A&A 657, L12 (±0.25%; syst. ≈ 0.040e6 M_sun; R0 = 8277 ± 9 pc) |
r_s of Sgr A* |
1.269e10 m ≈ 1.27e7 km ≈ 0.0849 AU | Computed from 2GM/c²; Wikipedia independently quotes 0.08 AU / 12 million km ✓ |
r_s_sun = 2*GM_sun/c^2 = 2.953e3 m
T_H_sun = 1.227e23 / 1.989e30 = 6.17e-8 K
M_sgrA = 4.297e6 * 1.989e30 = 8.547e36 kg
r_s_sgrA = 2*G*M_sgrA/c^2 = 1.269e10 m
Sources: Wikipedia — Schwarzschild radius (table) · IAU 2015 Resolution B3 nominal constants · LibreTexts — Quantum effects near black holes · GRAVITY Collaboration 2022, A&A 657, L12 (full text) · DOI 10.1051/0004-6361/202142465 · ADS 2022A&A...657L..12G · Wikipedia — Sagittarius A*
F. Relativistic Visuals
F.1 Relativistic Doppler Factor δ
$$\delta = \frac{1}{\gamma\left(1-\beta\cos\theta\right)}, \qquad \nu_{\rm obs} = \delta,\nu_{\rm emit}, \qquad \gamma = \frac{1}{\sqrt{1-\beta^2}}$$
gamma = 1 / sqrt(1 - beta^2)
delta = 1 / ( gamma * (1 - beta*cos(theta)) )
nu_obs = delta * nu_emit
beta = v/c— emitter (disk material) speed fraction;theta— angle between emitter velocity and line of sight, in the observer frame.theta=0approaching →delta>1blueshift;theta=90°→ transverse redshiftdelta = 1/gamma < 1;theta=180°receding →delta<1.
Sources: Urry & Padovani 1995, PASP 107, 803, Appendix A (Eq. A1) · Bicknell, ANU High Energy Astrophysics Lecture 8 (Eq. 14) · Rybicki & Lightman ch. 4 (hosted PDF) · Wikipedia — Relativistic Doppler effect · Wikipedia — Relativistic beaming
F.2 Combined Gravitational + Kinematic Redshift for Disk Material (g-factor)
$$g \equiv \frac{\nu_{\rm obs}}{\nu_{\rm emit}} = \frac{1}{1+z} = \delta,\sqrt{1-\frac{r_s}{r}} = \frac{\sqrt{1-\dfrac{2GM}{rc^{2}}}}{\gamma(1-\beta\cos\theta)} \quad\text{(Schwarzschild)}$$
r_s = 2*G*M/c^2
g = delta * sqrt(1 - r_s/r) # total observed/emitted frequency ratio for a disk element
- The standard decomposition used by disk-imaging codes: gravitational time-dilation factor (static observer at
rvs infinity) times the local orbital-motion Doppler factor. For Kerr, frame dragging couples the effects — use the full metric (lapse + ZAMO angular velocity); the definitiong = nu_obs/nu_emit = 1/(1+z)is general and reduces to the above fora* = 0.
Sources: Dovčiak, Karas & Yaqoob 2004, A&A 413, 861 (Eqs. 10, 13) · Wikipedia — Gravitational redshift · Wikipedia — Relativistic beaming
F.3 Intensity Beaming: δ³ (Specific) vs δ⁴ (Bolometric) — CONFIRMED
$$I_{\nu,\rm obs}(\nu_{\rm obs}) = \delta^{3}, I_{\nu,\rm emit}(\nu_{\rm emit}) \qquad\text{(specific / monochromatic intensity)}$$
$$I_{\rm bol,obs} = \delta^{4}, I_{\rm bol,emit} \qquad\text{(bolometric / frequency-integrated)}$$
I_nu_obs = delta^3 * I_nu_emit # per unit frequency [W m^-2 Hz^-1 sr^-1]
I_bol_obs = delta^4 * I_bol_emit # frequency-integrated [W m^-2 sr^-1]
# power-law spectrum I_nu ~ nu^(-alpha): flux density at fixed nu_obs ~ delta^(3+alpha);
# integrated flux ~ delta^(4+alpha)
- Why:
I_nu / nu^3is Lorentz-invariant (photon phase-space density). Withnu_obs = delta*nu_emit, the per-frequency intensity picks up three powers of delta (one from time compression, two from solid-angle aberration); integrating over frequency adds one more power from the Jacobiandnu_obs = delta*dnu_emit, giving four for bolometric. For black-hole disk rendering, replacedeltaby the full g-factor of F.2 — exactly what the disk literature does (Dovčiak et al.:I_obs,nu = g^3 I_em,nu, integrated flux ∝g^4).
Sources: Urry & Padovani 1995, Appendix B (Eqs. B3–B5) · Bicknell, ANU HEA Lecture 8 (Eqs. 99–100, 116) · Rybicki & Lightman ch. 4 (Eq. 4.110) · Dovčiak, Karas & Yaqoob 2004 (Eqs. 38, 41) · Wikipedia — Relativistic beaming
F.4 Shakura–Sunyaev Thin-Disk Temperature Profile
$$T(r) = \left{ \frac{3,G M \dot{M}}{8\pi,\sigma_{\rm SB},r^{3}} \left[ 1 - \sqrt{\frac{r_{\rm in}}{r}}\right] \right}^{1/4} \qquad\xrightarrow{r \gg r_{\rm in}}\qquad T(r) \approx \left(\frac{3GM\dot M}{8\pi\sigma_{\rm SB}r^{3}}\right)^{1/4} \propto r^{-3/4}$$
T(r) = ( (3*G*M*Mdot) / (8*pi*sigma_SB*r^3) * (1 - sqrt(r_in/r)) )^0.25
# far from inner edge: T ~ r^(-3/4)
M— central mass [kg];Mdot— accretion rate [kg/s];sigma_SB— Stefan–Boltzmann constant [W m^-2 K^-4];r_in— inner-edge radius [m] (= r_ISCO, F.5). From steady-state viscous dissipationD(r) = (3GM*Mdot/(8 pi r^3))(1 - sqrt(r_in/r))with the zero-torque inner boundary condition and two-sided radiation2 sigma T^4 = D(r). NoteT(r_in) = 0at the edge; peak T atr = (49/36) r_in.
Sources: Armitage, "Lecture notes on accretion disk physics," arXiv:2201.07262 (Eqs. 123, 130) · UMD astr498 lecture 12 (Eqs. 3, 9) · Shakura & Sunyaev 1973, A&A 24, 337 — ADS record · Frank, King & Raine, Accretion Power in Astrophysics, §5.3/§5.6 (full text) · Wikipedia — Accretion disk
F.5 Disk Inner Edge at the ISCO
$$r_{\rm in} = r_{\rm ISCO}; \qquad r_{\rm ISCO}^{\rm Schw} = \frac{6GM}{c^2}; \qquad \frac{r_{\rm ISCO}^{\rm Kerr}}{GM/c^2} = 3+Z_2 \mp \sqrt{(3-Z_1)(3+Z_1+2Z_2)}$$
r_in = r_ISCO
# Schwarzschild: r_ISCO = 6*G*M/c^2
# Kerr: use Z1/Z2 formulas of D.11 (minus = prograde, plus = retrograde)
# limits: a*=0 -> 6GM/c^2 ; a*=1 prograde -> GM/c^2 ; a*=1 retrograde -> 9GM/c^2
- Standard modeling choice for a non-truncated thin disk: circular orbits cease below the ISCO, justifying the zero-torque boundary there (Armitage notes the identification is physically motivated though "not entirely rigorous"). Radiative efficiency: ≈ 5.7% (Schwarzschild, cf. D.6) up to ≈ 42% (extremal prograde Kerr).
Sources: Wikipedia — ISCO ("marks the inner edge of the disk") · Armitage, arXiv:2201.07262, p. 15 · UMD astr498 lecture 12 · Bardeen, Press & Teukolsky 1972, ApJ 178, 347 (Eq. 2.21)
Consolidated Source List
NASA / JPL / agency
- JPL Solar System Dynamics — Astrodynamic Parameters: https://ssd.jpl.nasa.gov/astro_par.html
- JPL SSD Glossary (semi-major axis, eccentricity, inclination, node, argument of perihelion, true anomaly, mean motion): https://ssd.jpl.nasa.gov/glossary/
- JPL fltops — Celestial Mechanics ch. 9, The Two-Body Problem: https://spsweb.fltops.jpl.nasa.gov/portaldataops/mpg/MPG_Docs/Source%20Docs/CelestialMechanics9-2%20body%20prob.pdf
- NASA Science — Orbits and Kepler's Laws: https://science.nasa.gov/solar-system/orbits-and-keplers-laws/
- NASA Basics of Spaceflight glossary: https://science.nasa.gov/learn/basics-of-space-flight/glossary/
- NASA TN D-6883 — Optimized solution of Kepler's equation: https://ntrs.nasa.gov/api/citations/19720016564/downloads/19720016564.pdf
- Folkner et al., JPL DE430/DE431 ephemeris paper: https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de430_and_de431.pdf
- Park et al. 2021, JPL DE440/DE441 ephemeris paper: https://ssd.jpl.nasa.gov/doc/Park.2021.AJ.DE440.pdf
IERS conventions
- IERS Conventions (2010), Chapter 10 (Eq. 10.12, PPN Schwarzschild acceleration): https://iers-conventions.obspm.fr/content/chapter10/tn36_c10.pdf
Primary literature
- Bardeen, Press & Teukolsky 1972, ApJ 178, 347 (Kerr ISCO Z1/Z2): https://the-center-of-gravity.com/documents/86/Bardeen-Press-Teukolsky_Rotating-Black-Holes-Locally-Nonrotating-Frames.pdf
- Hawking 1975, Comm. Math. Phys. 43, 199: https://astrofrelat.fcaglp.unlp.edu.ar/agujeros_negros/media/Papers/Hawking_1975-Particle_creation_by_black_holes.pdf · https://link.springer.com/article/10.1007/BF02345020
- Bekenstein 1973, PRD 7, 2333: https://journals.aps.org/prd/abstract/10.1103/PhysRevD.7.2333
- GRAVITY Collaboration 2022, A&A 657, L12 (Sgr A* mass): https://www.aanda.org/articles/aa/full_html/2022/01/aa42465-21/aa42465-21.html · https://doi.org/10.1051/0004-6361/202142465 · https://ui.adsabs.harvard.edu/abs/2022A%26A...657L..12G
- Shakura & Sunyaev 1973, A&A 24, 337: https://ui.adsabs.harvard.edu/abs/1973A%26A....24..337S/abstract
- Urry & Padovani 1995, PASP 107, 803 (App. A/B): https://ned.ipac.caltech.edu/level5/Urry1/UrryP_appena.html · https://ned.ipac.caltech.edu/level5/Urry1/UrryP_appenb.html
- Dovčiak, Karas & Yaqoob 2004, A&A 413, 861: https://www.aanda.org/articles/aa/pdf/2004/03/aah4692.pdf
- Damour, Soffel & Xu 1991, PRD 43, 3273 (N-body PN celestial mechanics): https://link.aps.org/doi/10.1103/PhysRevD.43.3273
- Ashby 2003, Living Rev. Relativity 6, 1 (GPS relativity): https://link.springer.com/article/10.12942/lrr-2003-1
- Armitage, accretion disk lecture notes, arXiv:2201.07262: https://arxiv.org/pdf/2201.07262
- Pössel, Shapiro delay, arXiv:2001.00229: https://arxiv.org/pdf/2001.00229
- Light deflection pedagogical derivation, arXiv:2405.04529: https://arxiv.org/html/2405.04529v1
- Gravitational redshift revisited, arXiv:2309.10499: https://arxiv.org/pdf/2309.10499
- Black hole thermodynamics review, arXiv:2507.03778: https://arxiv.org/html/2507.03778v1
Textbooks / monographs online
- Sean Carroll, Lecture Notes on GR, ch. 7 (Caltech/NED mirror): https://ned.ipac.caltech.edu/level5/March01/Carroll3/Carroll7.html
- Frank, King & Raine, Accretion Power in Astrophysics (full text): https://www3.mpifr-bonn.mpg.de/staff/mmassi/frankkingraine.pdf
- Rybicki & Lightman, Radiative Processes, ch. 4 (hosted): https://moodle2.units.it/pluginfile.php/470593/mod_resource/content/0/RL_Cap4.pdf
- Edwin Taylor, "The Spinning Black Hole" (Taylor & Wheeler companion): https://www.eftaylor.com/pub/SpinNEW.pdf
- Explanatory Supplement to the Astronomical Almanac p. 281, via Project Pluto: https://www.projectpluto.com/relativi.htm
- Klioner, Lecture Notes on Basic Celestial Mechanics: https://sirrah.troja.mff.cuni.cz/~davok/Sergei_Klioner_skripta.pdf
University course notes
- MIT OCW 8.033 Schwarzschild notes: https://ocw.mit.edu/courses/8-033-relativity-fall-2006/5dae4a0c2d69b367951ddea5e17a2cea_schwarzschild.pdf
- U. Maryland astr498 lectures 10 & 12: https://pages.astro.umd.edu/~mcmiller/teaching/astr498/lecture10.pdf · https://pages.astro.umd.edu/~mcmiller/teaching/astr498/lecture12.pdf
- U. Maryland ASTR630 Roche limit: https://pages.astro.umd.edu/~dphamil/ASTR630/handouts/RocheLimit.pdf
- Jacobson, Black Hole Thermodynamics (UMD): https://www.physics.umd.edu/grt/taj/776b/lectures.pdf
- Tübingen GTR notes (Kokkotas): https://www.tat.physik.uni-tuebingen.de/~kokkotas/Teaching/GTR_files/GTR2018_3b.pdf
- Roma1 INFN GR notes ch. 21 (Kerr): https://www.roma1.infn.it/teongrav/onde19_20/kerr.pdf
- UNC Wilmington Kerr metric notes: https://people.uncw.edu/hermanr/BlackHoles/Kerr_Metric_II.pdf
- ASU MAE462 Lectures 4 & 7: https://control.asu.edu/Classes/MAE462/462Lecture04.pdf · https://control.asu.edu/Classes/MAE462/462Lecture07.pdf
- ANU High Energy Astrophysics Lecture 8 (Bicknell): https://www.mso.anu.edu.au/~geoff/HEA/8_Relativistic_Effects.pdf
- Harvard Math 118 N-body notes: https://legacy-www.math.harvard.edu/archive/118r_spring_05/handouts/nbody.pdf
- Princeton Dynamics §3.4: https://www.princeton.edu/~wbialek/intsci_web/dynamics3.4.pdf
- U. Alabama Schwarzschild notes: https://pages.physics.ua.edu/staff/fabi/phRel/SWSolution.pdf
- UCSD Physics 161 (Griest), CMU 33-331, SFU PHYS 390 tidal-force notes: https://courses.physics.ucsd.edu/2011/Winter/physics161/p161.14feb11.pdf · https://www.andrew.cmu.edu/course/33-331/pm11.pdf · https://www.sfu.ca/~boal/390lecs/390lec8.pdf
- CSUN — the three anomalies: http://www.csun.edu/~hcmth017/master/node14.html
- Ohio State — IAU 2015 nominal constants: https://www.astronomy.ohio-state.edu/pogge.1/Ast2292/Docs/NominalConstants.pdf
Other technical references
- René Schwarz Memoranda 1 & 2 (elements ↔ state vectors): https://downloads.rene-schwarz.com/download/M001-Keplerian_Orbit_Elements_to_Cartesian_State_Vectors.pdf · https://downloads.rene-schwarz.com/download/M002-Cartesian_State_Vectors_to_Keplerian_Orbit_Elements.pdf
- orbital-mechanics.space (classical elements, perifocal frame, state-vector inverse, barycenter, SOI): https://orbital-mechanics.space/
- Vallado-style RV2COE implementation: https://github.com/dinkelk/astrodynamics/blob/master/astrodynamics/RV2COE.m
- poliastro SOI docs: https://poliastro-py.readthedocs.io/en/latest/api/safe/threebody/soi.html
- CU Boulder Intro Orbital Mechanics ch. 6: https://colorado.pressbooks.pub/introorbitalmechanics/chapter/chapter-6-keplers-prediction-problem/
- Oregon State space systems notes: https://kyleniemeyer.github.io/space-systems-notes/orbital-mechanics/two-body-problems.html
- Physics LibreTexts (many-body angular momentum; Skidmore GR effective potential; point-mass lensing; quantum effects near BHs): https://phys.libretexts.org/
- MathPages — orbital proper time: https://www.mathpages.com/rr/s6-05/6-05.htm
- Tipler Modern Physics companion — Mercury perihelion: https://www.macmillanlearning.com/studentresources/college/physics/tiplermodernphysics6e/more_sections/more_chapter_2_1-perihelion_of_mercurys_orbit.pdf
- nuclear-power.com — Bekenstein–Hawking entropy: https://www.nuclear-power.com/bekenstein-hawking-entropy/
- V. Toth Hawking calculator · iCalculator BH temperature (numeric cross-checks): https://www.vttoth.com/CMS/physics-notes/311-hawking-radiation-calculator · https://physics.icalculator.com/black-hole-temperature-calculator.html
- mathscinotes.com & astronomicalreturns.com (Roche limit, Hill spheres): https://www.mathscinotes.com/2016/03/roche-limit-examples/ · https://www.astronomicalreturns.com/2021/06/roche-limit-radius-of-disintegration.html · https://www.astronomicalreturns.com/2022/08/hill-spheres-where-moonmoons-are.html
- physicsfundamentals.org — escape velocity: https://physicsfundamentals.org/blog/escape-velocity
- Physics Forums (Hill sphere derivation; radial infall proper time): https://www.physicsforums.com/threads/complete-hill-sphere-derivation-learn-the-equation-and-its-derivation-process.197797/ · https://www.physicsforums.com/threads/free-fall-from-rest-at-a-particular-radius-to-the-central-singularity.1079546/
- Grokipedia (Roche limit; ISCO — secondary cross-checks): https://grokipedia.com/page/Roche_limit · https://grokipedia.com/page/Innermost_stable_circular_orbit
- EPFL Wikispeedia archived Hawking radiation article (evaporation coefficient): https://dlab.epfl.ch/wikispeedia/wpcd/wp/h/Hawking_radiation.htm
Wikipedia (each cross-checked against at least one independent source above)
- Center of mass · Escape velocity · Hill sphere · Sphere of influence (astrodynamics) · Tidal force · Eccentric anomaly · Perifocal coordinate system · Vis-viva equation · Mean motion · Tests of general relativity · Schwarzschild geodesics · Gravitational redshift · Shapiro time delay · Schwarzschild metric · Photon sphere · Innermost stable circular orbit · Kerr metric · Lense–Thirring precession · Hawking radiation · Schwarzschild radius · Sagittarius A* · Relativistic Doppler effect · Relativistic beaming · Accretion disk — all at https://en.wikipedia.org/wiki/
Public verification API
The same endpoint the simulator uses is open (CORS *) for independent audit:
GET /api/horizons?jd=<JD_TDB>&bodies=sun,mercury,venus,earth,moon,mars,jupiter,saturn,uranus,neptune,pluto
→ barycentric ecliptic-J2000 state vectors (AU, AU/day) from NASA/JPL Horizons (DE441), cached server-side.
Rate limit 120 req/min/IP. Mars–Pluto entries are system barycenters (Horizons 4–9), matching the simulator's DE440 system GMs.