Dyad (dyad)

Dyad is a two-body dynamics and binary-star statistics package for astrophysicists.

It provides:

  1. a class object, dyad.Orbit, that represents the bound orbit of a body in a gravitational central potential,

  2. a class object, dyad.TwoBody, that represents the component orbits of a bound gravitational two-body system,

  3. a suite of probability distributions, dyad.stats, for the orbital properties of a population of binary stars, and

  4. a suite of utility functions for computing derived properties.

Notes

The geometry of an orbit is shown in Figures Fig. 1 and Fig. 2. That orbit is an ellipse with semimajor axis, \(a\) and eccentricity, \(e\). The body’s phase is described by its true anomaly, :math:` heta`, which is the angle subtended by the body and the primary vertex (i.e. the point of perigee) at the primary focus, \(F_{1}\). The perifocal coordinate system has origin \(F_{1}\) and orthogonal basis \((\mathbf{e}_{p}, \mathbf{e}_{q}, \mathbf{e}_{w})\) such that \(\mathbf{e}_{p}\) is parallel with the latus rectum, \(\mathbf{e}_{q}\) is parallel with the major axis, and \(\mathbf{e}_{w}\) is parallel with the body’s angular momentum. If the observer’s frame is coordinatized by the orthogonal basis \((\mathbf{e}_{x}, \mathbf{e}_{y}, \mathbf{e}_{z})\) then the perifocal system is a rotation of the observer’s system defined by Euler angles \(\Omega\), \(i\), and \(\omega\) (being the longitude of the ascending node, the inclination, and the argument of pericentre).

../_images/elliptical_orbit.jpg

The orbit of a bound body in a gravitational central potential. The pericentral frame has coordinates \(X\) and \(Y\) while the perifocal frame has coordinates \(p\) and \(q\).

../_images/orbital_euler_angles.jpg

The orientation of the perifocal coordinates system with respect to the coordinate system of the observer is described by the Euler angles \(\Omega\), \(i\), and \(\omega\). The unit vector \(\mathbf{e}_{N}\) is parallel with the line of nodes (i.e. the straight line passing through \(F_{1}\) and the ascending node, being the point at which the orbit and the observer’s plane of reference intersect).

The geometry of a binary system’s component orbits is shown in Figure Fig. 3. Both bodies move on elliptical orbits with primary foci coincident with the system’s centre of mass (COM) frame. The primary (resp. secondary) body moves as if in a central potential generated by a mass of \(m_{2}^{3}/(m_{1} + m_{2})^{2}\) (resp. \(m_{1}^{3}/(m_{1} + m_{2})^{2}\)). Its orbit is described by its semimajor axis, \(a_{1}\) (resp. \(a_{2}\)), and eccentricity, \(e_{1}\) (resp. \(e_{2}\)). Its orientation is defined by the longitude of its ascending node, \(\Omega_{1}\) (resp. \(\Omega_{2}\)), inclination, \(i_{1}\) (resp. \(i_{2}\)), and argument of pericentre, \(\omega_{1}\) (resp. \(\omega_{2}\)). The phase of the primary (resp. secondary) body is described by its true anomaly, :math:` heta_{1}` (resp. :math:` heta_{2})`. It is the case that \(a_{2} = a_{1}/q\), \(e_{2} = e_{1}\). \(\Omega_{2} = \Omega_{1}\), \(i_{2} = i_{1}\), \(\omega_{2} = \omega_{1} + \pi\) and :math:` heta_{1} = heta_{2}`.

../_images/twobody_system.jpg

The orbits of the components of a two-body system.

Classes

Orbit(m, a, e[, Omega, i, omega])

A class representing an elliptical orbit

TwoBody(m_1, m_2, a, e[, Omega, i, omega])

A class representing the elliptical orbits of a two-body system

Functions

semimajor_axis_from_period(p, m_1, m_2)

Return the semimajor axis given the period

period_from_semimajor_axis(a, m_1, m_2)

Return the period given the semimajor axis

true_anomaly_from_mean_anomaly(mu, e)

Return the true anomaly

true_anomaly_from_eccentric_anomaly(eta, e)

Return the true anomaly

mean_anomaly_from_eccentric_anomaly(eta, e)

Return the mean anomaly

mean_anomaly_from_true_anomaly(theta, e)

Return the mean anomaly

eccentric_anomaly_from_true_anomaly(theta, e)

Return the eccentric anomaly

eccentric_anomaly_from_mean_anomaly(mu, e)

Return the eccentric anomaly

delaunay_elements_from_orbital_elements(a, ...)

Return the Delaunay elements given the orbital elements

orbital_elements_from_delaunay_elements(J_1, ...)

Return the orbital elements given the Delaunay elements

modified_delaunay_elements_from_orbital_elements(a, ...)

Return the modified Delaunay elements given the orbital elements

orbital_elements_from_modified_delaunay_elements(...)

Return the orbital elements given the modified Delaunay elements