Commit dbc066e8 authored by Andrea taracchini's avatar Andrea taracchini

BNS EOB model with dynamic tides

Signed-off-by: default avatarAndrea taracchini <andrea.taracchini@aei.mpg.de>
Original: a8ce00d3dd21a86e8aeca53e7c20254466d17775
parent 90a4e531
......@@ -103,8 +103,8 @@ SphHarmTimeSeries *XLALSimIMREOBNRv2Modes(const REAL8 phiRef, const REAL8 deltaT
/* in module LALSimIMRSpinAlignedEOB.c */
double XLALSimIMRSpinAlignedEOBPeakFrequency(REAL8 m1SI, REAL8 m2SI, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion);
int XLALSimIMRSpinAlignedEOBWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion);
int XLALSimIMRSpinAlignedEOBWaveformAll(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8Vector * tVec, REAL8Vector * rVec, REAL8Vector * phiVec, REAL8Vector * prVec, REAL8Vector * pphiVec, const REAL8 phiC, REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion, const REAL8 comp1, const REAL8 comp2, const REAL8 k2Tidal1, const REAL8 k2Tidal2, const REAL8 omega02Tidal1, const REAL8 omega02Tidal2, const REAL8 k3Tidal1, const REAL8 k3Tidal2, const REAL8 omega03Tidal1, const REAL8 omega03Tidal2);
int XLALSimIMRSpinAlignedEOBWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion, LALDict *LALparams);
int XLALSimIMRSpinAlignedEOBWaveformAll(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8Vector * tVec, REAL8Vector * rVec, REAL8Vector * phiVec, REAL8Vector * prVec, REAL8Vector * pphiVec, const REAL8 phiC, REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 spin1z, const REAL8 spin2z, UINT4 SpinAlignedEOBversion, const REAL8 lambda2Tidal1, const REAL8 lambda2Tidal2, const REAL8 omega02Tidal1, const REAL8 omega02Tidal2, const REAL8 lambda3Tidal1, const REAL8 lambda3Tidal2, const REAL8 omega03Tidal1, const REAL8 omega03Tidal2, REAL8Vector *nqcCoeffsInput, const INT4 nqcFlag);
/*int XLALSimIMRSpinEOBWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, const REAL8 phiC, const REAL8 deltaT, const REAL8 m1SI, const REAL8 m2SI, const REAL8 fMin, const REAL8 r, const REAL8 inc, const REAL8 spin1[], const REAL8 spin2[]);
*/
......
......@@ -50,19 +50,17 @@ extern "C"
/**
* Tidal parameters for EOB model of NS:
* mass - dimensionless ratio mass/M
* comp - compactness
* k2Tidal - adiabatic quadrupole Love number
* omega02Tidal - quadrupole f-mode freq
* k3Tidal - adiabatic octupole Love number
* omega03Tidal - octupole f-mode freq
* mByM - dimensionless ratio m_{NS}/M
* lambda2Tidal - dimensionless adiabatic quadrupole tidal deformability normalized by total mass (2/3 k_2 (R_{NS}/M)^5)
* omega02Tidal - quadrupole f-mode angular freq m_{NS}*omega_{02}
* lambda2Tidal - dimensionless adiabatic octupole tidal deformability normalized by total mass (2/15 k_3 (R_{NS}/M)^7)
* omega03Tidal - octupole f-mode angular freq m_{NS}*omega_{03}
*/
typedef struct tagTidalEOBParams
{
REAL8 mass;
REAL8 comp;
REAL8 k2Tidal;
REAL8 k3Tidal;
REAL8 mByM;
REAL8 lambda2Tidal;
REAL8 lambda3Tidal;
REAL8 omega02Tidal;
REAL8 omega03Tidal;
}
......
This diff is collapsed.
......@@ -188,18 +188,36 @@ XLALInspiralSpinFactorizedFlux (REAL8Vector * values, /**< dynamical variables *
}
}
COMPLEX16 hT= 0.;
// printf( "v = %.16e\n", v );
for (l = 2; l <= lMax; l++)
{
for (m = 1; m <= l; m++)
{
INT4 use_optimized_v2 = 0;
if (XLALSimIMRSpinEOBFluxGetSpinFactorizedWaveform
(&hLM, values, v, H, l, m, ak, use_optimized_v2,
NULL) == XLAL_FAILURE)
{
XLAL_ERROR_REAL8 (XLAL_EFUNC);
}
if ( (ak->seobCoeffs->tidal1->lambda2Tidal != 0. && ak->seobCoeffs->tidal1->omega02Tidal != 0.) || (ak->seobCoeffs->tidal2->lambda2Tidal != 0. && ak->seobCoeffs->tidal2->omega02Tidal != 0.) ) {
if (XLALSimIMRSpinEOBGetSpinFactorizedWaveform
(&hLM, values, v, H, l, m, ak, use_optimized_v2
) == XLAL_FAILURE)
{
XLAL_ERROR_REAL8 (XLAL_EFUNC);
}
if (XLALSimIMRSpinEOBWaveformTidal
(&hT, values, v, l, m, ak
) == XLAL_FAILURE)
{
XLAL_ERROR_REAL8 (XLAL_EFUNC);
}
}
else {
if (XLALSimIMRSpinEOBFluxGetSpinFactorizedWaveform
(&hLM, values, v, H, l, m, ak, use_optimized_v2,
NULL) == XLAL_FAILURE)
{
XLAL_ERROR_REAL8 (XLAL_EFUNC);
}
}
/* For the 2,2 mode, we apply NQC correction to the flux */
if (l == 2 && m == 2)
{
......@@ -222,6 +240,8 @@ XLALInspiralSpinFactorizedFlux (REAL8Vector * values, /**< dynamical variables *
/* Eq. 16 */
hLM *= hNQC;
}
hLM += hT;
//printf( "l = %d, m = %d, mag(hLM) = %.17e, omega = %.16e\n", l, m, sqrt(creal(hLM)*creal(hLM)+cimag(hLM)*cimag(hLM)), omega );
/* Eq. 13 */
flux +=
......
......@@ -90,6 +90,109 @@ static int XLALSimIMREOBCalcSpinFacWaveformCoefficients (FacWaveformCoeffs *
*
*------------------------------------------------------------------------------------------
*/
/**
* Function to compute PN corrections to the tidal term that enters the (2,2) amplitude
*/
static REAL8 XLALTEOBbeta221( REAL8 X /**<< NS mass */ ) {
return (-202. + 560.*X - 340.*X*X + 45.*X*X*X) / (42.*(3. - 2.*X));
}
/**
* Function to compute the dynamical enhancement of the quadrupolar Love number
* that enters the tidal corrections to the mode amplitudes
*/
static REAL8 XLALSimIMRTEOBk2effMode (
REAL8 Omega, /**<< Orbital frequency */
REAL8 k2TidaleffHam, /**<< Dynamical enhancement of k2Tidal that enters the Hamiltonian */
REAL8 omega02Tidal, /**<< f-mode frequency */
REAL8 XCompanion /**<< Mass of NS companion divided by M */
)
{
return ((-1. + k2TidaleffHam)*omega02Tidal*omega02Tidal + 6.*k2TidaleffHam*XCompanion*Omega*Omega) / (1. + 2*XCompanion) / (3.*Omega*Omega);
}
/**
* Function to compute the tidal correction to the mode amplitudes
*/
static COMPLEX16 XLALhTidal(
INT4 l, /**<< Mode index */
INT4 m, /**<< Mode index */
REAL8 phase, /**<< Orbutal phase */
REAL8 v, /**<< Orbital speed^2 */
REAL8 eta, /**<< Symmetric mass ratio */
TidalEOBParams *tidal1, /**<< Tidal parameters of body 1 */
TidalEOBParams *tidal2 /**<< Tidal parameters of body 2 */
)
{
COMPLEX16 hNewtonTidal = 0;
COMPLEX16 hhatTidal = 0;
REAL8 v2 = v*v;
REAL8 Omega = v*v*v;
REAL8 v10 = v2*v2*v2*v2*v2;
REAL8 X1 = tidal1->mByM;
REAL8 X2 = tidal2->mByM;
REAL8 lambda1 = tidal1->lambda2Tidal;
REAL8 lambda2 = tidal2->lambda2Tidal;
REAL8 omega02Tidal1 = tidal1->omega02Tidal;
REAL8 omega02Tidal2 = tidal2->omega02Tidal;
REAL8 k2Tidal1effHam = 0.;
REAL8 k2Tidal2effHam = 0.;
REAL8 k2Tidal1eff = 0.;
REAL8 k2Tidal2eff = 0.;
REAL8 u = 1./pow(Omega,-2./3);
if ( lambda1 != 0.) {
k2Tidal1effHam = XLALSimIMRTEOBk2eff(u, eta, tidal1);
k2Tidal1eff = XLALSimIMRTEOBk2effMode (Omega, k2Tidal1effHam, omega02Tidal1, X2);
}
if ( lambda2 != 0.) {
k2Tidal2effHam = XLALSimIMRTEOBk2eff(u, eta, tidal2);
k2Tidal2eff = XLALSimIMRTEOBk2effMode (Omega, k2Tidal2effHam, omega02Tidal2, X1);
}
REAL8 q = X2/X1;
switch (l) {
case 2:
switch (m) {
case 2:
hNewtonTidal = -8. * v2 * sqrt(LAL_PI/5.);
hhatTidal = (3.*q*lambda1*(X1/X2 + 3.)*(1. + XLALTEOBbeta221(X1)*v2)*k2Tidal1eff
+ 3./q*lambda2*(X2/X1 + 3.)*(1. + XLALTEOBbeta221(X2)*v2)*k2Tidal2eff) * v10;
break;
case 1:
hNewtonTidal = 8./3. * I * v*v2 * sqrt(LAL_PI/5.);
hhatTidal = (-3*q*lambda1*(4.5 - 6.*X1) - (-3./q*lambda2*(4.5 - 6.*X2))) * v10;
break;
default:
return 0.;
break;
}
break;
case 3:
hhatTidal = -18.*(X2*q*lambda1 - X1/q*lambda2) * v10;
switch (m) {
case 3:
hNewtonTidal = -3. * I * v*v2 * sqrt(6.*LAL_PI/7.);
break;
case 2:
hNewtonTidal = -8./3. * v2*v2 * sqrt(LAL_PI/7.);
break;
case 1:
hNewtonTidal = 1./3. * I * v*v2 * sqrt(2.*LAL_PI/35.);
break;
case 0:
return 0.;
break;
default:
return 0.;
break;
}
break;
default:
return 0.;
break;
}
return eta*hNewtonTidal*hhatTidal*( cos(-m*phase) + I * sin(-m*phase) );
}
/**
* This function calculates hlm mode factorized-resummed waveform
* for given dynamical variables. This is optimized for flux calculation,
......@@ -611,6 +714,7 @@ XLALSimIMRSpinEOBFluxGetSpinFactorizedWaveform (COMPLEX16 * restrict hlm,
return XLAL_SUCCESS;
}
/*--------------------------------------------------------------*/
/**
* Spin Factors
......@@ -1872,4 +1976,52 @@ XLALSimIMRSpinEOBGetSpinFactorizedWaveform (COMPLEX16 * restrict hlm,
return XLAL_SUCCESS;
}
/**
* This function calculates tidal correction to the hlm mode factorized-resummed waveform
* for given dynamical variables.
*/
static INT4
XLALSimIMRSpinEOBWaveformTidal (COMPLEX16 * restrict hlm,
/**< OUTPUT, hlm waveforms */
REAL8Vector * restrict values,
/**< dyanmical variables */
const REAL8 v,
/**< velocity */
const INT4 l,
/**< l mode index */
const INT4 m,
/**< m mode index */
SpinEOBParams * restrict params
/**< Spin EOB parameters */
)
{
REAL8 eta;
if (abs (m) > (INT4) l)
{
XLAL_ERROR (XLAL_EINVAL);
}
if (m == 0)
{
XLAL_ERROR (XLAL_EINVAL);
}
eta = params->eobParams->eta;
/* Check our eta was sensible */
if (eta > 0.25 && eta < 0.25 +1e-4) {
eta = 0.25;
}
if (eta > 0.25)
{
XLALPrintError
("XLAL Error - %s: Eta seems to be > 0.25 - this isn't allowed!\n",
__func__);
XLAL_ERROR (XLAL_EINVAL);
}
COMPLEX16 hTidal = XLALhTidal( l, m, values->data[1], v, eta, params->seobCoeffs->tidal1, params->seobCoeffs->tidal2 );
*hlm = hTidal;
return XLAL_SUCCESS;
}
#endif /* _LALSIMIMRSPINEOBFACTORIZEDWAVEFORM */
......@@ -129,6 +129,8 @@ static const char *lalSimulationApproximantNames[] = {
INITIALIZE_NAME(SEOBNRv3_opt_rk4),
INITIALIZE_NAME(SEOBNRv4),
INITIALIZE_NAME(SEOBNRv4_opt),
INITIALIZE_NAME(TEOBv2),
INITIALIZE_NAME(TEOBv4),
INITIALIZE_NAME(SEOBNRv1_ROM_EffectiveSpin),
INITIALIZE_NAME(SEOBNRv1_ROM_DoubleSpin),
INITIALIZE_NAME(SEOBNRv2_ROM_EffectiveSpin),
......@@ -766,7 +768,7 @@ int XLALSimInspiralChooseTDWaveform(
/* Call the waveform driver routine */
SpinAlignedEOBversion = 1;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case SEOBNRv2_opt:
......@@ -784,7 +786,7 @@ int XLALSimInspiralChooseTDWaveform(
SpinAlignedEOBversion = 2;
if(approximant==SEOBNRv2_opt) SpinAlignedEOBversion = 200;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case SEOBNRv4_opt:
......@@ -802,7 +804,7 @@ int XLALSimInspiralChooseTDWaveform(
SpinAlignedEOBversion = 4;
if(approximant==SEOBNRv4_opt) SpinAlignedEOBversion = 400;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case SEOBNRv3_opt_rk4:
......@@ -835,7 +837,35 @@ int XLALSimInspiralChooseTDWaveform(
}
break;
case HGimri:
case TEOBv2:
/* Waveform-specific sanity checks */
if( !XLALSimInspiralWaveformParamsFlagsAreDefault(LALparams) )
ABORT_NONDEFAULT_LALDICT_FLAGS(LALparams);
if( !checkTransverseSpinsZero(S1x, S1y, S2x, S2y) )
ABORT_NONZERO_TRANSVERSE_SPINS(LALparams);
if( f_ref != 0.)
XLALPrintWarning("XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
/* Call the waveform driver routine */
SpinAlignedEOBversion = 2;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case TEOBv4:
/* Waveform-specific sanity checks */
if( !XLALSimInspiralWaveformParamsFlagsAreDefault(LALparams) )
ABORT_NONDEFAULT_LALDICT_FLAGS(LALparams);
if( !checkTransverseSpinsZero(S1x, S1y, S2x, S2y) )
ABORT_NONZERO_TRANSVERSE_SPINS(LALparams);
if( f_ref != 0.)
XLALPrintWarning("XLAL Warning - %s: This approximant does not use f_ref. The reference phase will be defined at coalescence.\n", __func__);
/* Call the waveform driver routine */
SpinAlignedEOBversion = 4;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case HGimri:
/* Waveform-specific sanity checks */
if( !checkTidesZero(lambda1, lambda2) )
ABORT_NONZERO_TIDES(LALparams);
......@@ -4417,6 +4447,8 @@ int XLALSimInspiralImplementedTDApproximants(
case SEOBNRv3_opt_rk4:
case SEOBNRv4:
case SEOBNRv4_opt:
case TEOBv2:
case TEOBv4:
case NR_hdf5:
case TEOBResum_ROM:
return 1;
......@@ -4871,6 +4903,8 @@ int XLALSimInspiralGetSpinSupportFromApproximant(Approximant approx){
case SEOBNRv4:
case SEOBNRv2_opt:
case SEOBNRv4_opt:
case TEOBv2:
case TEOBv4:
case SEOBNRv1_ROM_EffectiveSpin:
case SEOBNRv1_ROM_DoubleSpin:
case SEOBNRv2_ROM_EffectiveSpin:
......@@ -4959,6 +4993,8 @@ int XLALSimInspiralApproximantAcceptTestGRParams(Approximant approx){
case SEOBNRv3_opt_rk4:
case SEOBNRv4:
case SEOBNRv4_opt:
case TEOBv2:
case TEOBv4:
case SEOBNRv1_ROM_EffectiveSpin:
case SEOBNRv1_ROM_DoubleSpin:
case SEOBNRv2_ROM_EffectiveSpin:
......@@ -5666,6 +5702,7 @@ int XLALSimInspiralChooseTDWaveformOLD(
const Approximant approximant /**< post-Newtonian approximant to use for waveform production */
)
{
LALDict *LALparams = NULL;
REAL8 LNhatx, LNhaty, LNhatz, E1x, E1y, E1z;
char *numrel_data_path;
//REAL8 tmp1, tmp2;
......@@ -6088,7 +6125,7 @@ int XLALSimInspiralChooseTDWaveformOLD(
/* Call the waveform driver routine */
SpinAlignedEOBversion = 1;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case SEOBNRv2:
......@@ -6104,7 +6141,7 @@ int XLALSimInspiralChooseTDWaveformOLD(
/* Call the waveform driver routine */
SpinAlignedEOBversion = 2;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case SEOBNRv4:
......@@ -6120,7 +6157,7 @@ int XLALSimInspiralChooseTDWaveformOLD(
/* Call the waveform driver routine */
SpinAlignedEOBversion = 4;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case SEOBNRv2_opt:
......@@ -6136,7 +6173,7 @@ int XLALSimInspiralChooseTDWaveformOLD(
/* Call the waveform driver routine */
SpinAlignedEOBversion = 200;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case SEOBNRv3:
......@@ -6169,7 +6206,7 @@ int XLALSimInspiralChooseTDWaveformOLD(
/* Call the waveform driver routine */
SpinAlignedEOBversion = 400;
ret = XLALSimIMRSpinAlignedEOBWaveform(hplus, hcross, phiRef,
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion);
deltaT, m1, m2, f_min, distance, inclination, S1z, S2z, SpinAlignedEOBversion, LALparams);
break;
case HGimri:
......
......@@ -328,6 +328,10 @@ typedef enum tagApproximant {
* @remarks Implemented in lalsimulation (time domain). */
SEOBNRv4_opt, /**< Optimized Spin-aligned EOBNR model v4
* @remarks Implemented in lalsimulation (time domain). */
TEOBv2, /**< Tidal EOB model
* @remarks Implemented in lalsimulation (time domain). */
TEOBv4, /**< Tidal EOB model
* @remarks Implemented in lalsimulation (time domain). */
SEOBNRv1_ROM_EffectiveSpin, /**< Single-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv1 See [Purrer:2014fza]
* @remarks Implemented in lalsimulation (frequency domain). */
SEOBNRv1_ROM_DoubleSpin, /**< Double-spin frequency domain reduced order model of spin-aligned EOBNR model SEOBNRv1 See [Purrer:2014fza]
......@@ -798,6 +802,12 @@ int XLALSimInspiralREAL8WaveTaper(REAL8Vector *signalvec, LALSimInspiralApplyTap
int XLALSimInspiralTEOBResumROM(REAL8TimeSeries **hPlus, REAL8TimeSeries **hCross, REAL8 phiRef, REAL8 deltaT, REAL8 fLow, REAL8 fRef, REAL8 distance, REAL8 inclination, REAL8 m1SI, REAL8 m2SI, REAL8 lambda1, REAL8 lambda2);
REAL8 XLALSimUniversalRelation( REAL8 x, REAL8 coeffs[] );
REAL8 XLALSimUniversalRelationlambda3TidalVSlambda2Tidal( REAL8 lambda2Tidal );
REAL8 XLALSimUniversalRelationomega02TidalVSlambda2Tidal( REAL8 lambda2Tidal );
REAL8 XLALSimUniversalRelationomega03TidalVSlambda3Tidal( REAL8 lambda3Tidal );
#if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
......
......@@ -70,6 +70,12 @@ DEFINE_INSERT_FUNC(PNTidalOrder, INT4, "tideO", -1)
DEFINE_INSERT_FUNC(TidalLambda1, REAL8, "lambda1", 0)
DEFINE_INSERT_FUNC(TidalLambda2, REAL8, "lambda2", 0)
DEFINE_INSERT_FUNC(TidalOctupolarLambda1, REAL8, "TidalOctupolarLambda1", 0)
DEFINE_INSERT_FUNC(TidalOctupolarLambda2, REAL8, "TidalOctupolarLambda2", 0)
DEFINE_INSERT_FUNC(TidalQuadrupolarFMode1, REAL8, "TidalQuadrupolarFMode1", 0)
DEFINE_INSERT_FUNC(TidalQuadrupolarFMode2, REAL8, "TidalQuadrupolarFMode2", 0)
DEFINE_INSERT_FUNC(TidalOctupolarFMode1, REAL8, "TidalOctupolarFMode1", 0)
DEFINE_INSERT_FUNC(TidalOctupolarFMode2, REAL8, "TidalOctupolarFMode2", 0)
DEFINE_INSERT_FUNC(dQuadMon1, REAL8, "dQuadMon1", 0)
DEFINE_INSERT_FUNC(dQuadMon2, REAL8, "dQuadMon2", 0)
DEFINE_INSERT_FUNC(Redshift, REAL8, "redshift", 0)
......@@ -161,6 +167,12 @@ DEFINE_LOOKUP_FUNC(PNTidalOrder, INT4, "tideO", -1)
DEFINE_LOOKUP_FUNC(TidalLambda1, REAL8, "lambda1", 0)
DEFINE_LOOKUP_FUNC(TidalLambda2, REAL8, "lambda2", 0)
DEFINE_LOOKUP_FUNC(TidalOctupolarLambda1, REAL8, "TidalOctupolarLambda1", 0)
DEFINE_LOOKUP_FUNC(TidalOctupolarLambda2, REAL8, "TidalOctupolarLambda2", 0)
DEFINE_LOOKUP_FUNC(TidalQuadrupolarFMode1, REAL8, "TidalQuadrupolarFMode1", 0)
DEFINE_LOOKUP_FUNC(TidalQuadrupolarFMode2, REAL8, "TidalQuadrupolarFMode2", 0)
DEFINE_LOOKUP_FUNC(TidalOctupolarFMode1, REAL8, "TidalOctupolarFMode1", 0)
DEFINE_LOOKUP_FUNC(TidalOctupolarFMode2, REAL8, "TidalOctupolarFMode2", 0)
DEFINE_LOOKUP_FUNC(dQuadMon1, REAL8, "dQuadMon1", 0)
DEFINE_LOOKUP_FUNC(dQuadMon2, REAL8, "dQuadMon2", 0)
DEFINE_LOOKUP_FUNC(Redshift, REAL8, "redshift", 0)
......@@ -245,6 +257,12 @@ DEFINE_ISDEFAULT_FUNC(PNTidalOrder, INT4, "tideO", -1)
DEFINE_ISDEFAULT_FUNC(TidalLambda1, REAL8, "lambda1", 0)
DEFINE_ISDEFAULT_FUNC(TidalLambda2, REAL8, "lambda2", 0)
DEFINE_ISDEFAULT_FUNC(TidalOctupolarLambda1, REAL8, "TidalOctupolarLambda1", 0)
DEFINE_ISDEFAULT_FUNC(TidalOctupolarLambda2, REAL8, "TidalOctupolarLambda2", 0)
DEFINE_ISDEFAULT_FUNC(TidalQuadrupolarFMode1, REAL8, "TidalQuadrupolarFMode1", 0)
DEFINE_ISDEFAULT_FUNC(TidalQuadrupolarFMode2, REAL8, "TidalQuadrupolarFMode2", 0)
DEFINE_ISDEFAULT_FUNC(TidalOctupolarFMode1, REAL8, "TidalOctupolarFMode1", 0)
DEFINE_ISDEFAULT_FUNC(TidalOctupolarFMode2, REAL8, "TidalOctupolarFMode2", 0)
DEFINE_ISDEFAULT_FUNC(dQuadMon1, REAL8, "dQuadMon1", 0)
DEFINE_ISDEFAULT_FUNC(dQuadMon2, REAL8, "dQuadMon2", 0)
DEFINE_ISDEFAULT_FUNC(Redshift, REAL8, "redshift", 0)
......
......@@ -26,6 +26,12 @@ int XLALSimInspiralWaveformParamsInsertPNTidalOrder(LALDict *params, INT4 value)
int XLALSimInspiralWaveformParamsInsertTidalLambda1(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertTidalLambda2(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertTidalOctupolarLambda1(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertTidalOctupolarLambda2(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertTidalQuadrupolarFMode1(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertTidalQuadrupolarFMode2(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertTidalOctupolarFMode1(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertTidalOctupolarFMode2(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertdQuadMon1(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertdQuadMon2(LALDict *params, REAL8 value);
int XLALSimInspiralWaveformParamsInsertRedshift(LALDict *params, REAL8 value);
......@@ -105,9 +111,16 @@ INT4 XLALSimInspiralWaveformParamsLookupPNTidalOrder(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupTidalLambda1(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupTidalLambda2(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupTidalOctupolarLambda1(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupTidalOctupolarLambda2(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupTidalQuadrupolarFMode1(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupTidalQuadrupolarFMode2(LALDict *params);;
REAL8 XLALSimInspiralWaveformParamsLookupTidalOctupolarFMode1(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupTidalOctupolarFMode2(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupdQuadMon1(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupdQuadMon2(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupRedshift(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupNonGRPhi1(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupNonGRPhi2(LALDict *params);
REAL8 XLALSimInspiralWaveformParamsLookupNonGRPhi3(LALDict *params);
......@@ -183,6 +196,12 @@ int XLALSimInspiralWaveformParamsPNTidalOrderIsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalLambda1IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalLambda2IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalOctupolarLambda1IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalOctupolarLambda2IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalQuadrupolarFMode1IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalQuadrupolarFMode2IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalOctupolarFMode1IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsTidalOctupolarFMode2IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsdQuadMon1IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsdQuadMon2IsDefault(LALDict *params);
int XLALSimInspiralWaveformParamsRedshiftIsDefault(LALDict *params);
......
......@@ -88,6 +88,9 @@ const char * usage =
" SEOBNRv1\n"
" SEOBNRv2\n"
" SEOBNRv3\n"
" SEOBNRv4\n"
" TEOBv2\n"
" TEOBv4\n"
" SpinTaylorT4\n"
" SpinTaylorT2\n"
" PhenSpinTaylor\n"
......@@ -138,6 +141,14 @@ const char * usage =
" (~128-2560 for NS, 0 for BH) (default 0)\n"
"--tidal-lambda2 L2 (tidal deformability of mass 2) / (mass of body 2)^5\n"
" (~128-2560 for NS, 0 for BH) (default 0)\n"
"--tidal-lambda-octu1 L31 (octupolar tidal deformability of mass 1) / (mass of body 1)^7\n"
" (0 for BH) (default 0)\n"
"--tidal-lambda-octu2 L32 (octupolar tidal deformability of mass 2) / (mass of body 2)^7\n"
" (0 for BH) (default 0)\n"
"--tidal-quadfmode1 W21 dimensionless quadrupolar f-mode angular frequency of mass 1, normalized to mass 1\n"
"--tidal-quadfmode2 W22 dimensionless quadrupolar f-mode angular frequency of mass 2, normalized to mass 2\n"
"--tidal-octufmode1 W31 dimensionless octupolar f-mode angular frequency of mass 1, normalized to mass 1\n"
"--tidal-octufmode2 W32 dimensionless octupolar f-mode angular frequency of mass 2, normalized to mass 2\n"
"--spin-order ORD Twice PN order of spin effects\n"
" (default ORD=-1 <==> All spin effects)\n"
"--tidal-order ORD Twice PN order of tidal effects\n"
......@@ -205,6 +216,12 @@ static GSParams *parse_args(ssize_t argc, char **argv) {
params->meanPerAno = 0.;
XLALSimInspiralWaveformParamsInsertTidalLambda1(params->params, 0.);
XLALSimInspiralWaveformParamsInsertTidalLambda2(params->params, 0.);
XLALSimInspiralWaveformParamsInsertTidalOctupolarLambda1(params->params, 0.);
XLALSimInspiralWaveformParamsInsertTidalOctupolarLambda2(params->params, 0.);
XLALSimInspiralWaveformParamsInsertTidalQuadrupolarFMode1(params->params, 0.);
XLALSimInspiralWaveformParamsInsertTidalQuadrupolarFMode2(params->params, 0.);
XLALSimInspiralWaveformParamsInsertTidalOctupolarFMode1(params->params, 0.);
XLALSimInspiralWaveformParamsInsertTidalOctupolarFMode2(params->params, 0.);
strncpy(params->outname, "simulation.dat", 256); /* output to this file */
params->verbose = 0; /* No verbosity */
......@@ -265,9 +282,21 @@ static GSParams *parse_args(ssize_t argc, char **argv) {
} else if (strcmp(argv[i], "--spin2z") == 0) {
params->s2z = atof(argv[++i]);
} else if (strcmp(argv[i], "--tidal-lambda1") == 0) {
XLALSimInspiralWaveformParamsInsertTidalLambda1(params->params, atoi(argv[++i]));
XLALSimInspiralWaveformParamsInsertTidalLambda1(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--tidal-lambda2") == 0) {
XLALSimInspiralWaveformParamsInsertTidalLambda2(params->params, atoi(argv[++i]));
XLALSimInspiralWaveformParamsInsertTidalLambda2(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--tidal-lambda-octu1") == 0) {
XLALSimInspiralWaveformParamsInsertTidalOctupolarLambda1(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--tidal-lambda-octu2") == 0) {
XLALSimInspiralWaveformParamsInsertTidalOctupolarLambda2(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--tidal-quadfmode1") == 0) {
XLALSimInspiralWaveformParamsInsertTidalQuadrupolarFMode1(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--tidal-quadfmode2") == 0) {
XLALSimInspiralWaveformParamsInsertTidalQuadrupolarFMode2(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--tidal-octufmode1") == 0) {
XLALSimInspiralWaveformParamsInsertTidalOctupolarFMode1(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--tidal-octufmode2") == 0) {
XLALSimInspiralWaveformParamsInsertTidalOctupolarFMode2(params->params, atof(argv[++i]));
} else if (strcmp(argv[i], "--spin-order") == 0) {
XLALSimInspiralWaveformParamsInsertPNSpinOrder(params->params, atoi(argv[++i]));
} else if (strcmp(argv[i], "--tidal-order") == 0) {
......
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