static int test_tidal_T4( const REAL8 m2M ) { REAL8 m1M = 1.L-m2M; REAL8 eta = m1M*m2M; REAL8 energy2 = XLALSimInspiralPNEnergy_2PNCoeff(eta); REAL8 flux2 = XLALSimInspiralPNFlux_2PNCoeff(eta); REAL8 energy10 = XLALSimInspiralPNEnergy_10PNTidalCoeff(m2M); REAL8 flux10 = XLALSimInspiralPNFlux_10PNTidalCoeff(m2M); REAL8 energy12 = XLALSimInspiralPNEnergy_12PNTidalCoeff(m2M); REAL8 flux12 = XLALSimInspiralPNFlux_12PNTidalCoeff(m2M); REAL8 dvdt2 = flux2 - 2.L*energy2; REAL8 dvdt10 = flux10 - 6.L*energy10; REAL8 dvdt12 = (flux12 -7.L*energy12) - 2.L*energy2*dvdt10 - 6.L*energy10*dvdt2; REAL8 phasing10 = XLALSimInspiralTaylorT4wdot_10PNTidalCoeff(m2M); REAL8 phasing12 = XLALSimInspiralTaylorT4wdot_12PNTidalCoeff(m2M); int ret = 0; ret += compare(dvdt10, phasing10, 10, 0); ret += compare(dvdt12, phasing12, 12, 0); return ret; }
/** * Set up the expnCoeffsTaylorT4 and expnFuncTaylorT4 structures for * generating a TaylorT4 waveform and select the post-newtonian * functions corresponding to the desired order. * * Inputs given in SI units. */ static int XLALSimInspiralTaylorT4Setup( expnCoeffsTaylorT4 *ak, /**< coefficients for TaylorT4 evolution [modified] */ expnFuncTaylorT4 *f, /**< functions for TaylorT4 evolution [modified] */ expnCoeffsdEnergyFlux *akdEF, /**< coefficients for Energy calculation [modified] */ REAL8 m1, /**< mass of companion 1 */ REAL8 m2, /**< mass of companion 2 */ REAL8 lambda1, /**< (tidal deformability of body 1)/(mass of body 1)^5 */ REAL8 lambda2, /**< (tidal deformability of body 2)/(mass of body 2)^5 */ LALSimInspiralTidalOrder tideO, /**< twice PN order of tidal effects */ int O /**< twice post-Newtonian order */ ) { ak->m1 = m1; ak->m2 = m2; ak->m = ak->m1 + ak->m2; ak->mu = m1 * m2 / ak->m; ak->nu = ak->mu/ak->m; ak->chi1 = ak->m1/ak->m; ak->chi2 = ak->m2/ak->m; /* Angular velocity co-efficient */ ak->av = pow(LAL_C_SI, 3.0)/(LAL_G_SI*ak->m); /* PN co-efficients for energy */ akdEF->ETaN = XLALSimInspiralPNEnergy_0PNCoeff(ak->nu); akdEF->ETa1 = XLALSimInspiralPNEnergy_2PNCoeff(ak->nu); akdEF->ETa2 = XLALSimInspiralPNEnergy_4PNCoeff(ak->nu); akdEF->ETa3 = XLALSimInspiralPNEnergy_6PNCoeff(ak->nu); /* PN co-efficients for angular acceleration */ ak->aatN = XLALSimInspiralTaylorT4wdot_0PNCoeff(ak->nu)/(ak->m/LAL_MSUN_SI*LAL_MTSUN_SI)/3.; ak->aat2 = XLALSimInspiralTaylorT4wdot_2PNCoeff(ak->nu); ak->aat3 = XLALSimInspiralTaylorT4wdot_3PNCoeff(ak->nu); ak->aat4 = XLALSimInspiralTaylorT4wdot_4PNCoeff(ak->nu); ak->aat5 = XLALSimInspiralTaylorT4wdot_5PNCoeff(ak->nu); ak->aat6 = XLALSimInspiralTaylorT4wdot_6PNCoeff(ak->nu); ak->aat7 = XLALSimInspiralTaylorT4wdot_7PNCoeff(ak->nu); ak->aat6l = XLALSimInspiralTaylorT4wdot_6PNLogCoeff(ak->nu); /* Tidal coefficients for energy and angular acceleration */ akdEF->ETa5 = 0.; akdEF->ETa6 = 0.; ak->aat10 = 0.; ak->aat12 = 0.; switch( tideO ) { case LAL_SIM_INSPIRAL_TIDAL_ORDER_ALL: case LAL_SIM_INSPIRAL_TIDAL_ORDER_6PN: akdEF->ETa6 = lambda1 * XLALSimInspiralPNEnergy_12PNTidalCoeff(ak->chi1) + lambda2 * XLALSimInspiralPNEnergy_12PNTidalCoeff(ak->chi2); ak->aat12 = lambda1 * XLALSimInspiralTaylorT4wdot_12PNTidalCoeff(ak->chi1) + lambda2 * XLALSimInspiralTaylorT4wdot_12PNTidalCoeff(ak->chi2); case LAL_SIM_INSPIRAL_TIDAL_ORDER_5PN: akdEF->ETa5 = lambda1 * XLALSimInspiralPNEnergy_10PNTidalCoeff(ak->chi1) + lambda2 * XLALSimInspiralPNEnergy_10PNTidalCoeff(ak->chi2); ak->aat10 = lambda1 * XLALSimInspiralTaylorT4wdot_10PNTidalCoeff(ak->chi1) + lambda2 * XLALSimInspiralTaylorT4wdot_10PNTidalCoeff(ak->chi2); case LAL_SIM_INSPIRAL_TIDAL_ORDER_0PN: break; default: XLALPrintError("XLAL Error - %s: Invalid tidal PN order %d\nSee LALSimInspiralTidalOrder enum in LALSimInspiralWaveformFlags.h for valid tidal orders.\n", __func__, tideO ); XLAL_ERROR(XLAL_EINVAL); break; } switch (O) { case 0: f->energy4 = &XLALSimInspiralEt0; f->angacc4 = &XLALSimInspiralAngularAcceleration4_0PN; break; case 1: XLALPrintError("XLAL Error - %s: PN approximant not supported for PN order %d\n", __func__,O); XLAL_ERROR(XLAL_EINVAL); break; case 2: f->energy4 = &XLALSimInspiralEt2; f->angacc4 = &XLALSimInspiralAngularAcceleration4_2PN; break; case 3: f->energy4 = &XLALSimInspiralEt2; f->angacc4 = &XLALSimInspiralAngularAcceleration4_3PN; break; case 4: f->energy4 = &XLALSimInspiralEt4; f->angacc4 = &XLALSimInspiralAngularAcceleration4_4PN; break; case 5: f->energy4 = &XLALSimInspiralEt4; f->angacc4 = &XLALSimInspiralAngularAcceleration4_5PN; break; case 6: f->energy4 = &XLALSimInspiralEt6; f->angacc4 = &XLALSimInspiralAngularAcceleration4_6PN; break; case 7: case -1: f->energy4 = &XLALSimInspiralEt6; f->angacc4 = &XLALSimInspiralAngularAcceleration4_7PN; break; case 8: XLALPrintError("XLAL Error - %s: PN approximant not supported for PN order %d\n", __func__,O); XLAL_ERROR(XLAL_EINVAL); break; default: XLALPrintError("XLAL Error - %s: Unknown PN order in switch\n", __func__); XLAL_ERROR(XLAL_EINVAL); } return 0; }