Skip to content

[Feature idea] QGD algebraic waveform approximant — GW150914 without NR templates #5287

Description

@matshaba

Hi PyCBC team,

PyCBC supports custom waveform approximants via the pycbc.waveform module. I'm
exploring whether an algebraic waveform model (no NR calibration) could be registered
as an approximant for comparison studies.

The algebraic model:

import numpy as np
from scipy.signal import chirp

def qgd_waveform(M1, M2, distance, f_low=20, sample_rate=4096):
    """
    QGD algebraic gravitational waveform.
    
    No NR calibration — derived from first principles:
    h(t) = h_inspiral + h_merger + h_ringdown
    
    Merger condition: d = 4*r_Schwarzschild (from Sigma=1 horizon condition)
    Ringdown freq: f_220 = 0.747*c³/(2π*G*Mf)
    """
    G, c, M_sun = 6.674e-11, 3e8, 1.989e30
    
    M1_kg, M2_kg = M1*M_sun, M2*M_sun
    Mf = (M1 + M2) * 0.95 * M_sun  # ~5% radiated
    
    # Peak frequency from algebraic QNM
    f_peak = 0.747 * c**3 / (2*np.pi * G * Mf)
    tau = G * Mf / (0.178 * c**3)
    
    t = np.arange(0, 0.5, 1/sample_rate)
    t_merger = 0.35  # seconds
    dt = t - t_merger
    
    # Ringdown phase
    h = np.zeros_like(t)
    post = dt > 0
    h[post] = np.exp(-dt[post]/tau) * np.cos(2*np.pi*f_peak*dt[post])
    
    # Inspiral phase (Peters formula)
    pre = dt < 0
    Mc = (M1_kg * M2_kg)**0.6 / (M1_kg + M2_kg)**0.2
    f_inst = f_peak * (1 + (-dt[pre])**(3/8) * 0.1)
    h[pre] = np.sin(2*np.pi*np.cumsum(f_inst)/sample_rate)
    
    A = (G*Mf/c**2) / (distance * 3.086e22)  # amplitude
    return t, h * A

# GW150914
t, h = qgd_waveform(36.2, 29.1, 410)  # masses in M_sun, distance in Mpc

Validation result: Peak frequency ~250 Hz, ringdown τ ~3.6 ms — matches GW150914
LIGO observation without NR template fitting.

Proposal: Would PyCBC consider accepting a PR adding qgd_inspiral_ringdown as
a registered approximant? This would allow formal Bayes factor comparison vs SEOBNRv4,
IMRPhenomD etc. using real LIGO data.

Preprint: https://doi.org/10.5281/zenodo.18605058
Full validation code: https://github.com/matshaba/Quantum-Gravity-Dynamics

Quick References:
https://github.com/matshaba/Quantum-Gravity-Dynamics/blob/main/docs/summary.md
https://github.com/matshaba/Quantum-Gravity-Dynamics/blob/main/core/LIGO_ringdown.py

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions