pint.derived_quantities.companion_mass
- pint.derived_quantities.companion_mass(pb: ~astropy.units.quantity.Quantity, x: ~astropy.units.quantity.Quantity, i: ~astropy.units.quantity.Quantity = <Quantity 60. deg>, mp: ~astropy.units.quantity.Quantity = <Quantity 1.4 solMass>) -> Unit("solMass")[source]
Commpute the companion mass from the orbital parameters
Compute companion mass for a binary system from orbital mechanics, not Shapiro delay. Can handle scalar or array inputs.
- Parameters:
pb (astropy.units.Quantity) – Binary orbital period
x (astropy.units.Quantity) – Projected pulsar semi-major axis (aka ASINI) in
pint.lsi (astropy.coordinates.Angle or astropy.units.Quantity, optional) – Inclination angle, in
u.degoru.rad.Default is 60 deg.mp (astropy.units.Quantity, optional) – Pulsar mass in
u.solMass. Default is 1.4 Msun
- Returns:
mass – In
u.solMass- Return type:
- Raises:
astropy.units.UnitsError – If the input data are not appropriate quantities
TypeError – If the input data are not quantities
Example
>>> import pint >>> import pint.derived_quantities >>> from astropy import units as u >>> print(pint.derived_quantities.companion_mass(1*u.d, 2*pint.ls, inc=30*u.deg, mpsr=1.3*u.Msun)) 0.6363138973397279 solMass
Notes
This ends up as a a cubic equation of the form: \(a M_c^3 + b M_c^2 + c M_c + d = 0\)
\(a = \\sin^3(inc)\)
\(b = -{\\rm massfunct}\)
\(c = -2 M_p {\\rm massfunct}\)
\(d = -{\\rm massfunct} M_p^2\)
To solve it we can use a direct calculation of the cubic roots [3].
It’s useful to look at the discriminant to understand the nature of the roots and make sure we get the right one [4].
\(\\Delta = (b^2 c^2 - 4ac^3-4b^3d-27a^2d^2+18abcd)\)
if \(\\delta< 0\) then there is only 1 real root, and I think we do it correctly below and this should be < 0 since this reduces to \(-27\\sin^6 i f(P_b,x)^2 M_p^4 -4\\sin^3 i f(P_b,x)^3 M_p^3\) (where \(f(P_b,x)\) is the mass function) so there is just 1 real root.