EOB Tidal Waveforms (C++ Implementation)

This module provides an interface to the TEOBResumS (Tidal Effective-One-Body Resummed) model, a high-performance C++ implementation of the Bernuzzi EOB formalism for generating tidal gravitational-wave waveforms. Compared to the MATLAB-based EOBTidalExternal module, this implementation offers faster generation times without requiring MATLAB.

Requirements

  1. TEOBResumS Executable: The compiled TEOBResumS.x binary must be present in the EOB base directory.

  2. Environment Variables:
    • EOB_C_BASE: Path to the directory containing the TEOBResumS executable and source code.

    • EOB_C_ARCHIVE: Path to the directory where generated waveforms are archived.

    • EOB_C_ARCHIVE_NMAX: Maximum number of parallel archive directories.

Comparison with EOBTidalExternal

This module serves the same purpose as EOBTidalExternal but uses a different backend:

Core Functionality: WaveformModeCatalog

The WaveformModeCatalog class provides the same interface as its MATLAB counterpart, loading and managing tidal harmonic modes generated by the TEOBResumS code.

Initialization

During initialization, the class: 1. Generates a parameter file (my.par) with waveform settings. 2. Invokes TEOBResumS.x with the parameter file. 3. Reads the resulting hlm_insp.dat file containing all harmonic modes. 4. Applies interpolation using scipy.interpolate.UnivariateSpline. 5. Cleans up temporary files after loading.

Parameter File Generation

The module automatically creates a .par file with the following key parameters:

  • Mtot: Total mass in solar masses

  • q: Mass ratio $q = m_1 / m_2$

  • chi1, chi2: Spin parameters (aligned component)

  • LambdaAl2, LambdaBl2: Tidal lambda parameters for each body

  • f_min: Minimum frequency

  • tidal: Set to 1 to enable tidal calculations

  • Yagi_fit: Enables the Yagi et al. tidal fitting formulas

Key Methods

The interface mirrors EOBTidalExternal:

  • hlmoft(...): Generates time-domain modes $h_{lm}(t)$ with physical units.

  • hlmoff(...): Fourier transforms the modes to frequency domain.

  • real_hoft(...): Projects modes onto detector strain.

  • conj_hlmoff(...): Computes the Fourier transform of the complex conjugate (used in certain likelihood evaluations).

Tidal Mode Support

The C++ implementation supports the same harmonic modes as the MATLAB version:

  • $(2, pm 2), (2, pm 1)$

  • $(3, pm 3), (3, pm 2), (3, pm 1)$

Workflow Summary

  1. Parameter Input: Pass a parameter object with $m_1, m_2, chi_1, chi_2, lambda_1, lambda_2$.

  2. C++ Execution: The module writes a .par file and calls TEOBResumS.x.

  3. Data Extraction: Reads hlm_insp.dat containing amplitude and phase for all modes.

  4. Interpolation: Creates spline interpolators for amplitude and phase.

  5. Projection: Combines modes into detector-specific strain for likelihood evaluation.