funcs

Functions relating observable properties of binary stars and exoplanet systems to their fundamental properties, and vice versa. Also functions related to Keplerian orbits.

Parameters

Functions are defined in terms of the following parameters. [1]

  • a - orbital semi-major axis in solar radii = a_1 + a_2
  • P - orbital period in mean solar days
  • M - total system mass in solar masses, M = m_1 + m_2
  • e - orbital eccentricity
  • om - longitude of periastron, omega, in _degrees_
  • sini - sine of the orbital inclination
  • K - 2.pi.a.sini/(P.sqrt(1-e^2)) = K_1 + K_2
  • K_1, K_2 - orbital semi-amplitudes in km/s
  • q - mass ratio = m_2/m_1 = K_1/K_2 = a_1/a_2
  • f_m - mass function = m_2^3.sini^3/(m_1+m_2)^2 in solar masses
    = K_1^3.P/(2.pi.G).(1-e^2)^(3/2)
  • r_1 - radius of star 1 in units of the semi-major axis, r_1 = R_*/a
  • rho_1 - mean stellar density = 3.pi/(GP^2(1+q)r_1^3)
[1]Hilditch, R.W., An Introduction to Close Binary Stars, CUP 2001.

Functions

pycheops.funcs.a_rsun(P, M)

Semi-major axis in solar radii

Parameters:
  • P – orbital period in mean solar days
  • M – total mass in solar masses
Returns:

a = (G.M.P^2/(4.pi^2))^(1/3) in solar radii

pycheops.funcs.f_m(P, K, e=0)

Mass function in solar masses

Parameters:
  • P – orbital period in mean solar days
  • K – semi-amplitude of the spectroscopic orbit in km/s
  • e – orbital eccentricity
Returns:

f_m = m_2^3.sini^3/(m_1+m_2)^2 in solar masses

pycheops.funcs.m1sin3i(P, K_1, K_2, e=0)

Reduced mass of star 1 in solar masses

Parameters:
  • K_1 – semi-amplitude of star 1 in km/s
  • K_2 – semi-amplitude of star 2 in km/s
  • P – orbital period in mean solar days
  • e – orbital eccentricity
Returns:

m_1.sini^3 in solar masses

pycheops.funcs.m2sin3i(P, K_1, K_2, e=0)

Reduced mass of star 2 in solar masses

Parameters:
  • K_1 – semi-amplitude of star 1 in km/s
  • K_2 – semi-amplitude of star 2 in km/s
  • P – orbital period in mean solar days
  • e – orbital eccentricity
Returns:

m_2.sini^3 in solar masses

pycheops.funcs.asini(K, P, e=0)

a.sini in solar radii

Parameters:
  • K – semi-amplitude of the spectroscopic orbit in km/s
  • P – orbital period in mean solar days
Returns:

a.sin(i) in solar radii

pycheops.funcs.rhostar(r_1, P, q=0)

Mean stellar density from scaled stellar radius.

Parameters:
  • r_1 – radius of star in units of the semi-major axis, r_1 = R_*/a
  • P – orbital period in mean solar days
  • q – mass ratio, m_2/m_1
Returns:

Mean stellar density in solar units

pycheops.funcs.K_kms(m_1, m_2, P, sini, e)
Semi-amplitudes of the spectroscopic orbits in km/s
  • K = 2.pi.a.sini/(P.sqrt(1-e^2))
  • K_1 = K * m_2/(m_1+m_2)
  • K_2 = K * m_1/(m_1+m_2)
Parameters:
  • m_1 – mass of star 1 in solar masses
  • m_2 – mass of star 2 in solar masses
  • P – orbital period in mean solar days
  • sini – sine of the orbital inclination
  • e – orbital eccentrcity
Returns:

K_1, K_2 – semi-amplitudes in km/s

pycheops.funcs.m_comp(f_m, m_1, sini)

Companion mass in solar masses given mass function and stellar mass

Parameters:
  • f_m – = K_1^3.P/(2.pi.G).(1-e^2)^(3/2) in solar masses
  • m_1 – mass of star 1 in solar masses
  • sini – sine of orbital inclination
Returns:

m_2 = mass of companion to star 1 in solar masses

pycheops.funcs.transit_width(r, k, b, p=1)

Total transit duration.

See equation (3) from Seager and Malen-Ornelas, 2003ApJ…585.1038S.

Parameters:
  • r – R_star/a
  • k – R_planet/R_star
  • b – impact parameter = a.cos(i)/R_star
  • p – orbital period (optional, default=1)
Returns:

Total transit duration in the same units as p.

pycheops.funcs.esolve(M, e)

Solve Kepler’s equation M = E - e.sin(E)

Parameters:
  • M – mean anomaly
  • e – eccentricity
Returns:

eccentric anomaly, E

Algorithm is from Markley 1995, CeMDA, 63, 101 via pyAstronomy class keplerOrbit.py

Example:

Test precision using random values:

>>> from pycheops.funcs import esolve
>>> from numpy import pi, sin, abs, max
>>> from numpy.random import uniform
>>> e = uniform(0,1,1000)
>>> M = uniform(-2*pi,4*pi,1000)
>>> E = esolve(M, e)
>>> maxerr = max(abs(E - e*sin(E) - (M % (2*pi)) ))
>>> print("Maximum error = {:0.2e}".format(maxerr))
Maximum error = 8.88e-16