Commit 4c6e05a5 authored by Michael Puerrer's avatar Michael Puerrer Committed by Sebastian Khan
Browse files

Implement SEOBNRv4T surrogate model

Frequency domain surrogate of the time-domain SEOBNRv4T
effective-one-body waveform model for spin-aligned binary neutron
stars including overall tidal deformability using universal relations.

At low frequencies the approximant returns spline interpolated TaylorF2
on sparse grids. At higher frequencies the waveform consists of
TaylorF2 + surrogate amplitude and phase corrections to approximate SEOBNRv4T
(previously called TEOBv4). TaylorF2 is evaluate once on a sparse grid.

The HDF5 data file contains the GPR surrogate training data and
sparse grids tailored to linear or cubic spline interpolation.

Here we subtract off the 3PN spin-spin term that is not included in SEOBNRv4T.
The quadrupole monopole parameters are set using universal relations.

Add coordinate transformation between lambda and xi.
Implement pn_ss3 using TF2 functions.
parent 2c5879f2
......@@ -67,6 +67,11 @@ typedef enum tagIMRPhenomP_version_type {
IMRPhenomPv2NRTidal_V /**< version Pv2_NRTidal: based on IMRPhenomPv2; NRTides (https://arxiv.org/pdf/1706.02969.pdf) added before precession */
} IMRPhenomP_version_type;
typedef enum tagSEOBNRv4TSurrogate_spline_order {
SEOBNRv4TSurrogate_CUBIC, /**< use cubic splines in frequency */
SEOBNRv4TSurrogate_LINEAR /**< use linear splines in frequency */
} SEOBNRv4TSurrogate_spline_order;
/** @} */
/* in module LALSimIMRPhenom.c */
......@@ -221,6 +226,12 @@ int XLALSimIMRSEOBNRv4ROMFrequencyOfTime(REAL8 *frequency, REAL8 t, REAL8 m1SI,
int XLALSimIMRSEOBNRv4ROMNRTidalFrequencySequence(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs, REAL8 phiRef, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1, REAL8 chi2, REAL8 Lambda1, REAL8 Lambda2);
int XLALSimIMRSEOBNRv4ROMNRTidal(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1_SI, REAL8 m2_SI, REAL8 chi1, REAL8 chi2, REAL8 Lambda1, REAL8 Lambda2);
/* in module LALSimIMRSEOBNRv4TSurrogate.c */
int XLALSimIMRSEOBNRv4TSurrogate(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, REAL8 phiRef, REAL8 deltaF, REAL8 fLow, REAL8 fHigh, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, REAL8 lambda1, REAL8 lambda2, SEOBNRv4TSurrogate_spline_order spline_order);
int XLALSimIMRSEOBNRv4TSurrogateFrequencySequence(struct tagCOMPLEX16FrequencySeries **hptilde, struct tagCOMPLEX16FrequencySeries **hctilde, const REAL8Sequence *freqs, REAL8 phiRef, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 chi1, REAL8 chi2, REAL8 lambda1, REAL8 lambda2, SEOBNRv4TSurrogate_spline_order spline_order);
/* in module LALSimIMRPSpinInspiralRD.c */
int XLALSimIMRPhenSpinFinalMassSpin(REAL8 *finalMass, REAL8 *finalSpin, REAL8 m1, REAL8 m2, REAL8 s1s1, REAL8 s2s2, REAL8 s1L, REAL8 s2L, REAL8 s1s2, REAL8 energy);
......
......@@ -530,6 +530,16 @@ typedef struct tagPr3In
} pr3In;
#ifdef __GNUC__
#define UNUSED __attribute__ ((unused))
#else
#define UNUSED
#endif
UNUSED REAL8 XLALSimNSNSMergerFreq(
TidalEOBParams *tidal1, /**< Tidal parameters of body 1 */
TidalEOBParams *tidal2 /**< Tidal parameters of body 2 */
);
#if 0
{ /* so that editors will match succeeding brace */
......
......@@ -54,7 +54,7 @@ UNUSED static int ReadHDF5RealMatrixDataset(LALH5File *file, const char *name, g
UNUSED static int ReadHDF5LongVectorDataset(LALH5File *file, const char *name, gsl_vector_long **data);
UNUSED static int ReadHDF5LongMatrixDataset(LALH5File *file, const char *name, gsl_matrix_long **data);
UNUSED static void PrintInfoStringAttribute(LALH5File *file, const char attribute[]);
UNUSED static int ROM_check_version_number(LALH5File *file, INT4 version_major_in, INT4 version_minor_in, INT4 version_micro_in);
UNUSED static int ROM_check_version_number(LALH5File *file, INT4 version_major_in, INT4 version_minor_in, INT4 version_micro_in);
#endif
UNUSED static REAL8 Interpolate_Coefficent_Tensor(
......
This diff is collapsed.
......@@ -162,7 +162,7 @@ static INT4 XLALCheck_EOB_mode_array_structure(
* See Eq.(2) in https://arxiv.org/pdf/1504.01764.pdf with coefficients
* given by the 3rd row of Table II therein. Compared to NR for 0 <= kappa2T <= 500
*/
static REAL8 XLALSimNSNSMergerFreq(
UNUSED REAL8 XLALSimNSNSMergerFreq(
TidalEOBParams *tidal1, /**< Tidal parameters of body 1 */
TidalEOBParams *tidal2 /**< Tidal parameters of body 2 */
)
......
......@@ -143,6 +143,7 @@ static const char *lalSimulationApproximantNames[] = {
INITIALIZE_NAME(Lackey_Tidal_2013_SEOBNRv2_ROM),
INITIALIZE_NAME(SEOBNRv4_ROM),
INITIALIZE_NAME(SEOBNRv4_ROM_NRTidal),
INITIALIZE_NAME(SEOBNRv4T_surrogate),
INITIALIZE_NAME(HGimri),
INITIALIZE_NAME(IMRPhenomA),
INITIALIZE_NAME(IMRPhenomB),
......@@ -1519,6 +1520,19 @@ int XLALSimInspiralChooseFDWaveform(
phiRef, deltaF, f_min, f_max, f_ref, distance, inclination, m1, m2, S1z, S2z, lambda1, lambda2);
break;
case SEOBNRv4T_surrogate:
/* Waveform-specific sanity checks */
if( !XLALSimInspiralWaveformParamsFlagsAreDefault(LALparams) )
ABORT_NONDEFAULT_LALDICT_FLAGS(LALparams);
if( !checkTransverseSpinsZero(S1x, S1y, S2x, S2y) )
ABORT_NONZERO_TRANSVERSE_SPINS(LALparams);
ret = XLALSimIMRSEOBNRv4TSurrogate(hptilde, hctilde,
phiRef, deltaF, f_min, f_max, f_ref, distance, inclination,
m1, m2, S1z, S2z, lambda1, lambda2,
SEOBNRv4TSurrogate_CUBIC);
break;
case Lackey_Tidal_2013_SEOBNRv2_ROM:
/* Waveform-specific sanity checks */
if( !XLALSimInspiralWaveformParamsFlagsAreDefault(LALparams) )
......@@ -4786,6 +4800,7 @@ int XLALSimInspiralImplementedFDApproximants(
case Lackey_Tidal_2013_SEOBNRv2_ROM:
case SEOBNRv4_ROM:
case SEOBNRv4_ROM_NRTidal:
case SEOBNRv4T_surrogate:
//case TaylorR2F4:
case TaylorF2:
case TaylorF2Ecc:
......@@ -5222,6 +5237,7 @@ int XLALSimInspiralGetSpinSupportFromApproximant(Approximant approx){
case Lackey_Tidal_2013_SEOBNRv2_ROM:
case SEOBNRv4_ROM:
case SEOBNRv4_ROM_NRTidal:
case SEOBNRv4T_surrogate:
case TaylorR2F4:
case IMRPhenomFB:
case FindChirpSP:
......@@ -5314,6 +5330,7 @@ int XLALSimInspiralApproximantAcceptTestGRParams(Approximant approx){
case Lackey_Tidal_2013_SEOBNRv2_ROM:
case SEOBNRv4_ROM:
case SEOBNRv4_ROM_NRTidal:
case SEOBNRv4T_surrogate:
case IMRPhenomA:
case IMRPhenomB:
case IMRPhenomFA:
......
......@@ -354,6 +354,8 @@ typedef enum tagApproximant {
* @remarks Implemented in lalsimulation (frequency domain). */
SEOBNRv4_ROM_NRTidal, /**< Low-mass double-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv4 [Bohe et al, arXiv:1611.03703] with tidal phase corrections [Dietrich et al, arXiv:1706.02969]
* @remarks Implemented in lalsimulation (frequency domain). */
SEOBNRv4T_surrogate, /**< Double-spin frequency domain surrogate model of spin-aligned tidal EOBNR model SEOBNRv4T
* @remarks Implemented in lalsimulation (frequency domain). */
HGimri, /**< Time domain inspiral-merger-ringdown waveform for quasi-circular intermediate mass-ratio inspirals [Huerta & Gair arXiv:1009.1985]
* @remarks Implemented in lalsimulation (time domain). */
IMRPhenomA, /**< Time domain (non-spinning) inspiral-merger-ringdown waveforms generated from the inverse FFT of IMRPhenomFA.
......
......@@ -1056,6 +1056,19 @@ int XLALSimInspiralChooseFDWaveformSequence(
phiRef, f_ref, distance, inclination, m1, m2, S1z, S2z, lambda1, lambda2);
break;
case SEOBNRv4T_surrogate:
/* Waveform-specific sanity checks */
if( !XLALSimInspiralWaveformParamsFlagsAreDefault(LALpars) )
ABORT_NONDEFAULT_LALDICT_FLAGS(LALpars);
if( !checkTransverseSpinsZero(S1x, S1y, S2x, S2y) )
ABORT_NONZERO_TRANSVERSE_SPINS(LALpars);
ret = XLALSimIMRSEOBNRv4TSurrogateFrequencySequence(hptilde, hctilde, frequencies,
phiRef, f_ref, distance, inclination,
m1, m2, S1z, S2z, lambda1, lambda2,
SEOBNRv4TSurrogate_LINEAR);
break;
case Lackey_Tidal_2013_SEOBNRv2_ROM:
/* Waveform-specific sanity checks */
if( !XLALSimInspiralWaveformParamsFlagsAreDefault(LALpars) )
......
......@@ -250,6 +250,7 @@ liblalsimulation_la_SOURCES = \
LALSimIMRSEOBNRv2ChirpTime.c \
LALSimIMRSEOBNRv4ROM.c \
LALSimIMRSEOBNRv4ROM_NRTidal.c \
LALSimIMRSEOBNRv4TSurrogate.c \
LALSimIMREOBNRv2HMROM.c \
LALSimIMRLackeyTidal2013.c \
LALSimIMRPhenom.c \
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment