Source code for radvel.orbit


import numpy as np
import radvel


[docs]def timetrans_to_timeperi(tc, per, ecc, omega): """ Convert Time of Transit to Time of Periastron Passage Args: tc (float): time of transit per (float): period [days] ecc (float): eccecntricity omega (float): longitude of periastron (radians) Returns: float: time of periastron passage """ try: if ecc >= 1: return tc except ValueError: pass f = np.pi/2 - omega ee = 2 * np.arctan(np.tan(f/2) * np.sqrt((1-ecc)/(1+ecc))) # eccentric anomaly tp = tc - per/(2*np.pi) * (ee - ecc*np.sin(ee)) # time of periastron return tp
[docs]def timeperi_to_timetrans(tp, per, ecc, omega, secondary=False): """ Convert Time of Periastron to Time of Transit Args: tp (float): time of periastron per (float): period [days] ecc (float): eccentricity omega (float): argument of peri (radians) secondary (bool): calculate time of secondary eclipse instead Returns: float: time of inferior conjuntion (time of transit if system is transiting) """ try: if ecc >= 1: return tp except ValueError: pass if secondary: f = 3*np.pi/2 - omega # true anomaly during secondary eclipse else: f = np.pi/2 - omega # true anomaly during transit ee = 2 * np.arctan(np.tan(f/2) * np.sqrt((1-ecc)/(1+ecc))) # eccentric anomaly tc = tp + per/(2*np.pi) * (ee - ecc*np.sin(ee)) # time of conjunction return tc
[docs]def true_anomaly(t, tp, per, e): """ Calculate the true anomoly for a given time, period, eccentricity. Args: t (array): array of times in JD tp (float): time of periastron, same units as t per (float): orbital period in days e (float): eccentricity Returns: array: true anomoly at each time """ # f in Murray and Dermott p. 27 m = 2 * np.pi * (((t - tp) / per) - np.floor((t - tp) / per)) eccarr = np.zeros(t.size) + e e1 = radvel.kepler.kepler(m, eccarr) n1 = 1.0 + e n2 = 1.0 - e nu = 2.0 * np.arctan((n1 / n2)**0.5 * np.tan(e1 / 2.0)) return nu