Geladen massa#

In de vorige notebooks beschreven we de zwaartekracht van een ongeladen massa. In dit notebook voegen we elektrische lading toe en onderzoeken het effect op de ruimtetijdgeometrie.

import sys, pathlib
sys.path.insert(0, str(pathlib.Path().resolve().parent / 'shared'))
from ort_core import (C, G, K_E, GravityModel, M_SUN, R_SUN)
import math
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

1 Lading als energiebijdrage#

1.1 Twee energietermen#

In de ORT komt de zwaartekracht van een ongeladen massa uit de gravitatie-energieparameter \(v_{grav}^2 = 2GM/r\). Een geladen massa heeft een extra energiebijdrage: het elektrische veld zelf bevat energie.

De elektrostatische veldenergie buiten straal \(r\) is \(E_{elec} = k_e Q^2/(2r)\) — de zelfenergie van het elektrische veld van de centrale massa. Deze energie is altijd positief (proportioneel met \(Q^2\)) en verlaagt de effectieve valsnelheid, ongeacht de lading van een testdeeltje.

Omgerekend naar een energieparameter: \(v_{lading}^2 = 2 E_{elec} \cdot G / (c^2 r) = k_e Q^2 G/(c^2 r^2)\).

De effectieve valsnelheid:

\[v_{eff}^2 = v_{grav}^2 - v_{lading}^2 = \frac{2GM}{r} - \frac{k_e Q^2 G}{c^2 r^2} = c^2\left(\frac{r_s}{r} - \frac{r_Q^2}{r^2}\right) \qquad (1)\]

met \(r_Q^2 = k_e Q^2 G / c^4\).

1.2 \(c_{local}\) met lading#

Uit de snelheidsnorm \(c_{local}^2 = c^2 - v_{eff}^2\) volgt:

\[c_{local}(r) = c \cdot \sqrt{1 - \frac{r_s}{r} + \frac{r_Q^2}{r^2}} \qquad (2)\]

1.3 De horizon#

De horizon ligt waar \(c_{local} = 0\). Door formule (2) gelijk te stellen aan nul ontstaat een kwadratische vergelijking:

\[r_{\pm} = \frac{r_s \pm \sqrt{r_s^2 - 4r_Q^2}}{2} \qquad (3)\]

De discriminant \(r_s^2 - 4r_Q^2\) bepaalt het aantal reële oplossingen:

  • \(Q < Q_{ext}\): twee reële oplossingen (\(r_+\) en \(r_-\)), met daartussen een gebied waar \(c_{local}^2 < 0\).

  • \(Q = Q_{ext}\): één oplossing (\(r_+ = r_- = r_s/2\)).

  • \(Q > Q_{ext}\): geen reële oplossingen — er is geen horizon.

Anders dan bij alleen zwaartekracht (waar er één oplossing is voor \(c_{local} = 0\)) zijn er met lading twee. De buitenste (\(r_+\)) is een eventhorizon net als bij een ongeladen massa. Bij de binnenste (\(r_-\)) geldt juist dat aan de binnenkant \(c_{local} > 0\): de ladingsenergie domineert daar over de gravitatie-energie, en \(c_{local}\) stijgt weer — zelfs tot boven \(c\) dicht bij \(r = 0\).

De interpretatie van het gebied binnen de eventhorizon valt buiten de scope van dit notebook.

Extremale lading#

\[Q_{ext} = \frac{c^2}{2} \sqrt{\frac{r_s^2}{k_e G}} \qquad (4)\]

1.4 Vergelijking met de ART#

De ART leidt dezelfde formule af als oplossing van de Einstein-vergelijkingen met een elektromagnetische brontensor — de Reissner-Nordström-metriek:

\[f(r) = \left(\frac{c_{local}}{c}\right)^2 = 1 - \frac{r_s}{r} + \frac{r_Q^2}{r^2} \qquad (5)\]

De ORT komt tot dezelfde formule vanuit twee energiebijdragen aan de snelheidsnorm: gravitatie (trekt) en elektrostatisch veld (duwt terug).

# Reissner-Nordström: vergelijking Schwarzschild vs geladen
M_BH = 10 * M_SUN
bh_sch = GravityModel(M_BH)
Q_ext = bh_sch.extremal_charge()
bh_half = GravityModel(M_BH, charge=0.5 * Q_ext)
bh_ext = GravityModel(M_BH, charge=0.99 * Q_ext)

print(f'=== Reissner-Nordström (10 M☉) ===')
print(f'r_s = {bh_sch.rs:.3e} m')
print(f'Q_ext = {Q_ext:.3e} C')
print()

for label, model in [('Q = 0 (Schwarzschild)', bh_sch),
                      ('Q = 0.5 Q_ext', bh_half),
                      ('Q = 0.99 Q_ext', bh_ext)]:
    r_plus = model.r_plus
    r_minus = model.r_minus
    print(f'--- {label} ---')
    print(f'  r+ = {r_plus:.3e} m = {r_plus/bh_sch.rs:.4f} r_s')
    print(f'  r- = {r_minus:.3e} m = {r_minus/bh_sch.rs:.4f} r_s')
    b = 10 * bh_sch.rs
    alpha = model.light_deflection_arcsec(b)
    print(f'  Lichtafbuiging (b=10r_s): {alpha:.6f}"')
    print()
=== Reissner-Nordström (10 M☉) ===
r_s = 2.954e+04 m
Q_ext = 1.714e+21 C

--- Q = 0 (Schwarzschild) ---
  r+ = 2.954e+04 m = 1.0000 r_s
  r- = 0.000e+00 m = 0.0000 r_s
  Lichtafbuiging (b=10r_s): 41252.961249"

--- Q = 0.5 Q_ext ---
  r+ = 2.756e+04 m = 0.9330 r_s
  r- = 1.979e+03 m = 0.0670 r_s
  Lichtafbuiging (b=10r_s): 40949.211249"

--- Q = 0.99 Q_ext ---
  r+ = 1.685e+04 m = 0.5705 r_s
  r- = 1.269e+04 m = 0.4295 r_s
  Lichtafbuiging (b=10r_s): 40062.139749"

2 Effecten van lading#

2.1 Lading werkt zwaartekracht tegen#

De ladingsterm verhoogt \(c_{local}\), wat alle gravitatie-effecten verzwakt:

Effect

Ongeladen

Geladen

Verandering

Tijddilatatie

sterker

zwakker

minder vertraging

Lichtafbuiging

groter

kleiner

minder afbuiging

Baanprecissie

groter

kleiner

minder precessie

Eventhorizon

\(r_s\)

\(r_+ < r_s\)

horizon krimpt

# c_local profielen: Schwarzschild vs RN
r_over_rs = np.linspace(1.01, 10, 500)

fig, ax = plt.subplots(figsize=(10, 6))

for label, model, color, ls in [
    ('Q = 0 (Schwarzschild)', bh_sch, 'black', '-'),
    ('Q = 0.5 Q_ext', bh_half, 'blue', '--'),
    ('Q = 0.99 Q_ext', bh_ext, 'red', '-.')]:
    cl = [model.c_local(f * bh_sch.rs) / C for f in r_over_rs]
    ax.plot(r_over_rs, cl, color=color, ls=ls, lw=2, label=label)

ax.set_xlabel('$r / r_s$', fontsize=12)
ax.set_ylabel('$c_{local} / c$', fontsize=12)
ax.set_title('$c_{local}$ profiel: effect van lading', fontsize=14, fontweight='bold')
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_xlim(1, 10)
ax.set_ylim(0, 1.05)
plt.tight_layout()
plt.show()
_images/f49303ee90f22e4d4a5cb089eebeebd2f1bc0d06306fe09ca2765cb800b588df.png

2.2 De horizon als functie van de lading#

Formule (3) heeft twee oplossingen voor \(Q < Q_{ext}\), één oplossing voor \(Q = Q_{ext}\), en geen oplossingen voor \(Q > Q_{ext}\). De eventhorizon (\(r_+\)) als functie van de lading:

# Horizonten als functie van Q/Q_ext
q_frac = np.linspace(0, 1, 200)
r_plus_arr = []
r_minus_arr = []

for qf in q_frac:
    model = GravityModel(M_BH, charge=qf * Q_ext)
    r_plus_arr.append(model.r_plus / bh_sch.rs)
    r_minus_arr.append(model.r_minus / bh_sch.rs)

fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(q_frac, r_plus_arr, 'b-', lw=2, label='$r_+$ (buitenste horizon)')
ax.plot(q_frac, r_minus_arr, 'r--', lw=2, label='$r_-$ (binnenste horizon)')
ax.fill_between(q_frac, r_minus_arr, r_plus_arr, alpha=0.1, color='purple')
ax.set_xlabel('$Q / Q_{ext}$', fontsize=12)
ax.set_ylabel('$r / r_s$', fontsize=12)
ax.set_title('Horizonten als functie van lading', fontsize=14, fontweight='bold')
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
ax.axhline(0.5, color='gray', ls=':', lw=1, label='$r_s/2$')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1.1)
plt.tight_layout()
plt.show()

print(f'Bij Q = Q_ext: r+ = r- = {bh_sch.rs/2:.3e} m = 0.5 r_s')
_images/a06a116085a58da7d7fca8bc9f9d3f08c43d84fedfec980cb5ac01792a3111e5.png
Bij Q = Q_ext: r+ = r- = 1.477e+04 m = 0.5 r_s

3 Vergelijking met Schwarzschild#

De effecten van lading op de drie klassieke testen:

# Vergelijking: lichtafbuiging en precissie voor verschillende ladingen
b = 10 * bh_sch.rs
a_orbit = 50 * bh_sch.rs
e_orbit = 0.3

print(f'=== Effect van lading op waarneembare effecten ===')
print(f'Impactparameter b = 10 r_s, baanparameters a = 50 r_s, e = {e_orbit}')
print()
print(f'{"Q/Q_ext":>8s}  {"r+/r_s":>8s}  {"lichtafb.":>12s}  {"precissie/omloop":>18s}  {"c_local(5rs)":>14s}')
print('-' * 68)

for qf in [0.0, 0.1, 0.3, 0.5, 0.7, 0.9, 0.99]:
    model = GravityModel(M_BH, charge=qf * Q_ext)
    alpha = model.light_deflection_arcsec(b)
    dphi = model.orbital_precession(a_orbit, e_orbit)
    cl = model.c_local(5 * bh_sch.rs) / C
    print(f'{qf:8.2f}  {model.r_plus/bh_sch.rs:8.4f}  {alpha:12.6f}"  {math.degrees(dphi)*3600:18.6f}"  {cl:14.6f}')
=== Effect van lading op waarneembare effecten ===
Impactparameter b = 10 r_s, baanparameters a = 50 r_s, e = 0.3

 Q/Q_ext    r+/r_s     lichtafb.    precissie/omloop    c_local(5rs)
--------------------------------------------------------------------
    0.00    1.0000  41252.961249"        42725.274725"        0.894427
    0.10    0.9975  41240.811249"        42723.709697"        0.894483
    0.30    0.9770  41143.611249"        42711.189470"        0.894930
    0.50    0.9330  40949.211249"        42686.149016"        0.895824
    0.70    0.8571  40657.611249"        42648.588335"        0.897162
    0.90    0.7179  40268.811249"        42598.507427"        0.898944
    0.99    0.5705  40062.139749"        42571.886294"        0.899889

4 Het riviermodel met lading#

In het riviermodel stroomt de ruimte naar de massa toe met \(v_{grav}\). Lading vertraagt de stroom — de elektrostatische zelfenergie vermindert de effectieve stroomsnelheid tot \(v_{eff} = \sqrt{v_{grav}^2 - v_{lading}^2}\).

  • Ongeladen: de stroom bereikt \(c\) bij \(r = r_s\) → één horizon

  • Geladen: de stroom bereikt \(c\) bij een kleinere straal (\(r_+ < r_s\)) → horizon krimpt

  • Extremaal: de stroom bereikt precies \(c\) bij \(r = r_s/2\) → marginale horizon

  • Overladen (\(Q > Q_{ext}\)): de stroom bereikt \(c\) nooit → geen horizon


5 Samenvatting#

Schwarzschild

Reissner-Nordström

\((c_{local}/c)^2\)

\(1 - r_s/r\)

\(1 - r_s/r + r_Q^2/r^2\)

Oplossingen \(c_{local} = 0\)

1 (\(r = r_s\))

2 (\(r_+\) en \(r_-\))

Eventhorizon

\(r_s\)

\(r_+\) (kleiner dan \(r_s\))

Extremaal

\(r_+ = r_s/2\), geen horizon bij \(Q > Q_{ext}\)

\(c_{local}\)

\(c\sqrt{1 - r_s/r}\)

\(c\sqrt{1 - r_s/r + r_Q^2/r^2}\)

Lading effect

Verzwakt alle gravitatie-effecten

ORT-interpretatie

Rivierstroming \(v_{grav}\)

Vertraagde stroom door tegendruk

Formule (3) heeft twee oplossingen. De buitenste (\(r_+\)) is de eventhorizon. Tussen de twee oplossingen is \(c_{local}^2 < 0\); daarbuiten én daarbinnen is \(c_{local}^2 > 0\). De interpretatie van het gebied binnen de eventhorizon valt buiten de scope van dit notebook.