-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkepcart.h
52 lines (39 loc) · 1.37 KB
/
kepcart.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// used by kepcart
#ifndef _KEPCART_
#define _KEPCART_
// phasespace and orbital element structures
typedef struct {
double x, y, z, xd, yd, zd;
} PhaseState;
typedef struct {
double a, e, i, longnode, argperi, meananom;
} OrbitalElements;
#define GG 6.6732e-8 // grav constant cgs
#define CC 2.997924562e10 // speed o light, cm/s
#define Msol 1.989e33 // mass o sun, g
#define AU 1.49597892e13 // astron unit, cm
/* in kepcart.cpp */
// handing probability distributions randoms
double rayleigh(double sigma);
double powerlaw(double xmin, double xmax, double gamma);
// kepcart conversions
double ecc_ano(double e,double l); // solves kepler's eqn
double ecc_anohyp(double e,double l); // solves kepler's eqn
void keplerian(double GM, PhaseState state, OrbitalElements *orbel);
void cartesian(double GM, OrbitalElements orbel, PhaseState *state);
double kepler(double ecc, double mean_anom);
// for integrating with f,g functions
void kepstep(double t, double M1,
PhaseState state, PhaseState *newstate);
double solvex(double r0dotv0, double alpha,
double M1, double r0, double dt);
double C_prussing(double y);
double S_prussing(double y);
/*
void kepstep(double t, double M1,
double x, double y, double z,
double vx, double vy, double vz,
double *xnew, double *ynew, double *znew,
double *vxnew, double *vynew, double *vznew);
*/
#endif