Skip to content

FAQ¤

Float precision¤

JAX defaults to float32, but gravitational-wave waveform computations typically require float64 precision. Always enable it at the top of your script, before any JAX operations:

import jax
jax.config.update("jax_enable_x64", True)

Without this, you may see unexpected numerical errors or inaccurate waveforms, particularly at high frequencies or for long signals.

JIT compilation time¤

The first call to a JIT-compiled waveform (e.g. via jax.jit) triggers XLA compilation, which can take several seconds. This is normal — subsequent calls will be much faster. If you are timing ripple for benchmarking purposes, discard the first call.

To disable JIT for debugging:

jax.config.update("jax_disable_jit", True)

Compilation is slow for complex models¤

If you wrap a ripple waveform inside a larger likelihood with many operations or Python-level loops, JAX may take a long time to compile the full computational graph. Replacing Python loops with jax.lax.scan or jax.vmap where possible can significantly reduce compilation time.

ripplegw.IMRPhenomD (or waveform_preset) raises AttributeError¤

Older ripple code constructed models directly off the top-level module (ripplegw.IMRPhenomD(f_ref=20.0)) or looked them up in a waveform_preset dict. Neither exists anymore. The only construction path is the registry factory:

waveform = ripplegw.waveform("IMRPhenomD", f_ref=20.0)

See Working with Waveforms for the full interface and ripplegw.list_waveforms() for every registered name.

Where is t_c (time of coalescence)?¤

It isn't exposed. Every built-in model fixes the time of coalescence internally and only exposes phase_c (coalescence phase) and iota (inclination) as extrinsic parameters — see Parameters and Conventions. If your use case needs to vary t_c, you currently need to apply the standard linear-in-frequency phase shift (\(e^{2\pi i f\,\delta t_c}\)) yourself on the returned strain.