1use pyo3::prelude::*;
2
3pub mod errors;
4
5pub mod roche_context;
6pub use roche_context::RocheContext;
7
8pub mod vec3;
9pub use vec3::Vec3;
10
11pub mod point;
12pub use point::Point;
13
14pub mod planck;
15pub use planck::*;
16
17pub mod blink;
18pub use blink::blink;
19
20pub mod x_lagrange;
21pub use x_lagrange::*;
22
23pub mod pot_min;
24pub use pot_min::*;
25
26pub mod set_earth;
27pub use set_earth::*;
28
29pub mod potential;
30pub use potential::*;
31
32pub mod zeta_rlobe_eggleton;
33pub use zeta_rlobe_eggleton::*;
34
35pub mod sphere_eclipse;
36pub use sphere_eclipse::*;
37
38pub mod ref_sphere;
39pub use ref_sphere::*;
40
41pub mod stream_physics;
42pub use stream_physics::*;
43
44pub mod fblink;
45pub use fblink::*;
46
47pub mod ingress_egress;
48pub use ingress_egress::ingress_egress;
49
50pub mod disc_eclipse;
51pub use disc_eclipse::disc_eclipse;
52
53pub mod star_eclipse;
54pub use star_eclipse::star_eclipse;
55
56pub mod face;
57pub use face::*;
58
59pub mod vel_transform;
60pub use vel_transform::vel_transform;
61
62pub mod solve_triads;
63pub use solve_triads::findi;
64
65pub mod lobes;
66pub use lobes::lobe1;
67pub use lobes::lobe2;
68
69pub mod phases;
70pub use phases::*;
71
72pub mod jacobi;
73pub use jacobi::*;
74
75#[pyclass(from_py_object, eq, eq_int)]
76#[derive(Debug, PartialEq, Eq, Clone, Copy)]
77pub enum Star {
78 Primary = 1,
79 Secondary = 2,
80}
81
82pub type Etype = Vec<(f64, f64)>;
83
84pub fn add(left: u64, right: u64) -> u64 {
85 left + right
86}
87
88#[pymodule]
91fn roche(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
92 m.add_class::<vec3::Vec3>()?;
93 m.add_class::<Star>()?;
94 m.add_function(wrap_pyfunction!(set_earth::set_earth_iangle, m)?)?;
95 m.add_function(wrap_pyfunction!(set_earth::set_earth, m)?)?;
96 m.add_function(wrap_pyfunction!(x_lagrange::x_l1, m)?)?;
97 m.add_function(wrap_pyfunction!(x_lagrange::x_l1_1, m)?)?;
98 m.add_function(wrap_pyfunction!(x_lagrange::x_l1_2, m)?)?;
99 m.add_function(wrap_pyfunction!(x_lagrange::x_l2, m)?)?;
100 m.add_function(wrap_pyfunction!(x_lagrange::x_l3, m)?)?;
101 m.add_function(wrap_pyfunction!(zeta_rlobe_eggleton::zeta_rlobe_eggleton, m)?)?;
102 m.add_function(wrap_pyfunction!(zeta_rlobe_eggleton::dzetadq_rlobe_eggleton, m)?)?;
103 m.add_function(wrap_pyfunction!(sphere_eclipse::sphere_eclipse_wrapper, m)?)?;
104 m.add_function(wrap_pyfunction!(sphere_eclipse::sphere_eclipse_vector_wrapper, m)?)?;
105 m.add_function(wrap_pyfunction!(ref_sphere::ref_sphere, m)?)?;
106 m.add_function(wrap_pyfunction!(potential::rpot, m)?)?;
107 m.add_function(wrap_pyfunction!(potential::rpot1, m)?)?;
108 m.add_function(wrap_pyfunction!(potential::rpot2, m)?)?;
109 m.add_function(wrap_pyfunction!(potential::drpot, m)?)?;
110 m.add_function(wrap_pyfunction!(potential::drpot1, m)?)?;
111 m.add_function(wrap_pyfunction!(potential::drpot2, m)?)?;
112 m.add_function(wrap_pyfunction!(potential::rpot_val, m)?)?;
113 m.add_function(wrap_pyfunction!(potential::rpot_val_grad, m)?)?;
114 m.add_function(wrap_pyfunction!(ingress_egress::ingress_egress_wrapper, m)?)?;
115 m.add_function(wrap_pyfunction!(fblink::fblink, m)?)?;
116 m.add_function(wrap_pyfunction!(stream_physics::stradv_wrapper, m)?)?;
117 m.add_function(wrap_pyfunction!(stream_physics::rocacc, m)?)?;
118 m.add_function(wrap_pyfunction!(stream_physics::strinit, m)?)?;
119 m.add_function(wrap_pyfunction!(stream_physics::stream, m)?)?;
120 m.add_function(wrap_pyfunction!(stream_physics::streamr, m)?)?;
121 m.add_function(wrap_pyfunction!(stream_physics::strmnx_wrapper, m)?)?;
122 m.add_function(wrap_pyfunction!(stream_physics::brightspot_position, m)?)?;
123 m.add_function(wrap_pyfunction!(face::face, m)?)?;
124 m.add_function(wrap_pyfunction!(solve_triads::findi, m)?)?;
125 m.add_function(wrap_pyfunction!(solve_triads::findq, m)?)?;
126 m.add_function(wrap_pyfunction!(solve_triads::findphi, m)?)?;
127 m.add_function(wrap_pyfunction!(lobes::lobe1, m)?)?;
128 m.add_function(wrap_pyfunction!(lobes::lobe2, m)?)?;
129 m.add_function(wrap_pyfunction!(phases::wdphases, m)?)?;
130 m.add_function(wrap_pyfunction!(phases::bsphases, m)?)?;
131 m.add_function(wrap_pyfunction!(jacobi::jacobi, m)?)?;
132 Ok(())
133}