kepler equation solver in c for python
Project description
fast_kepler
A c implementation for solving kepler's equation in c. Made for astroemperor, put in a different library for public use.
Dependencies
This code makes use of:
- numpy
- cython
Installation
In the console type in your work folder
pip install fast_kepler
Usage
Solution to Kepler's equation. Given mean anomaly, M, and eccentricity, e, solve for E, the eccentric anomaly, which must satisfy:
$$E - e sin(E) - M = 0$$
For a given eccentricity, and an M array, we use:
import fast_kepler
M = np.sort(np.random.uniform(0, 100, size=100))
ecc = 0.11
E = fast_kepler.kepler_array(M, ecc)
More on usage
We can calculate RVs:
# time array of our observations
x = np.sort(np.random.uniform(0, 100, size=100))
# keplerian parameters
period = 4.1 # in days
semi_amplitude = 55 # in m/s
M0 = np.pi/3 # in rad
ecc = 0.23 # from 0 to 1
om = 3*np.pi/5 # in rad
theta = [period, semi_amplitude, M0, ecc, om]
def calc_RV(theta):
per, K, M0, ecc, om = theta
freq = 2. * np.pi / per
M = freq * x + M0
E = fast_kepler.kepler_array(M, ecc)
f = np.arctan(((1. + ecc)/(1. - ecc)) ** 0.5 * np.tan(E / 2.)) * 2.
return K * (np.cos(f + om) + ecc * np.cos(om))
# or simply:
def get_RV(theta):
per, K, M0, ecc, om = theta
return fast_kepler.calc_rv0(x, per, K, M0, ecc, om)
Additional Options
You can also use a different parameterization to retrieve RVs, with time of periastron passage $T_p$ instead of the mean anomaly $M_0$:
fast_kepler.calc_rv1(x, per, A, tp, ecc, w)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fast_kepler-0.5.1.tar.gz
(154.7 kB
view hashes)