FANTASY¶
This module uses Forward Mode Automatic Differentiation to calculate metric derivatives. Currently, integrators of orders 2, 4, 6 and 8 have been implemented.
-
class
einsteinpy.integrators.fantasy.
GeodesicIntegrator
(metric, metric_params, q0, p0, time_like=True, steps=100, delta=0.5, rtol=0.01, atol=0.01, order=2, omega=1.0, suppress_warnings=False)[source]¶ Bases:
object
Geodesic Integrator, based on 1. This module uses Forward Mode Automatic Differentiation to calculate metric derivatives to machine precision leading to stable simulations.
References
- 1
Christian, Pierre and Chan, Chi-Kwan; “FANTASY: User-Friendly Symplectic Geodesic Integrator for Arbitrary Metrics with Automatic Differentiation”; 2021 ApJ 909 67
Constructor
- Parameters
metric (callable) – Metric Function. Currently, these metrics are supported: 1. Schwarzschild 2. Kerr 3. KerrNewman
metric_params (array_like) – Tuple of parameters to pass to the metric E.g.,
(a,)
for Kerrq0 (array_like) – Initial 4-Position
p0 (array_like) – Initial 4-Momentum
time_like (bool, optional) – Determines type of Geodesic
True
for Time-like geodesicsFalse
for Null-like geodesics Defaults toTrue
steps (int) – Number of integration steps Defaults to
50
delta (float) – Initial integration step-size Defaults to
0.5
rtol (float) – Relative Tolerance Defaults to
1e-2
atol (float) – Absolute Tolerance Defaults to
1e-2
order (int) – Integration Order Defaults to
2
omega (float) – Coupling between Hamiltonian Flows Smaller values imply smaller integration error, but too small values can make the equation of motion non-integrable. For non-capture trajectories,
omega = 1.0
is recommended. For trajectories, that either lead to a capture or a grazing geodesic, a decreased value of0.01
or less is recommended. Defaults to1.0
suppress_warnings (bool) – Whether to suppress warnings during simulation Warnings are shown for every step, where numerical errors exceed specified tolerance (controlled by
rtol
andatol
) Defaults toFalse
- Raises
NotImplementedError – If
order
is not in [2, 4, 6, 8]