AutoTortoise.jl is a small Julia package prototype for horizon-aware tortoise-coordinate construction for static spherically symmetric black-hole metrics whose metric function is of Laurent-polynomial form
where the integer exponent n may be negative, zero, or positive.
The package is intended as infrastructure for QNM, CSM, and CLD calculations. It automates the pipeline
MetricFunction -> Horizons -> TortoiseMap -> InverseMap -> V(r(r_*))
for Laurent-polynomial metric functions.
Version 0.1.4 supports:
- Laurent-polynomial metric functions.
- Conversion to a rational integral via
P(r)=r^m f(r). - Polynomial root finding with a companion matrix.
- Positive-real horizon detection.
- Simple-pole partial fractions for
1/f(r). - Real tortoise maps on static intervals.
- Numerical inverse maps by bracketed bisection.
- Schwarzschild, Schwarzschild--dS, and Schwarzschild--AdS helper constructors.
- An experimental complex inverse map for CSM-style continuation.
Near-extremal or exactly degenerate horizons are detected but not yet treated as a fully reliable repeated-pole problem.
] add AutoTortoiseusing AutoTortoise
f = schwarzschild_ds(M=1.0, Lambda=0.08)
h = horizons(f)
I = static_region(h; prefer=:finite)
tm = tortoise_map(f, I)
r = (I.left + I.right)/2
x = tortoise(tm, r)
r_back = inverse_tortoise(tm, x)For a custom Laurent-polynomial metric:
f = MetricFunction(-1 => -2.0, 0 => 1.0, 2 => -0.08/3)This corresponds to
For Schwarzschild--AdS,
f = schwarzschild_ads(M=1.0, L=10.0)
h = horizons(f)
I = static_region(h; prefer=:exterior)
tm = tortoise_map(f, I; convention=:boundary_zero)The convention :boundary_zero normalizes the finite tortoise-coordinate boundary at infinity to r_* = 0 for standard AdS-like rational metrics.
For
choose
Then
For simple roots r_i of P(r), the pole residues are
when r_i is a nonzero simple horizon. The tortoise coordinate is represented as
where Q is the polynomial quotient produced by rational division.
On a real physical interval, real horizon terms are evaluated using the real branch log(abs(r-r_i)).
Planned extensions:
- Fully reliable repeated-pole support for extremal and near-extremal horizons.
- BigFloat and ArbNumerics support for near-degenerate roots.
- Explicit branch tracking for complex-scaled rays.
- Grid generation and potential composition utilities for CSM calculations.
- Documentation examples for Reissner--Nordström, SdS, and AdS cases.