Skip to main content

nyx_space/propagators/
python.rs

1use super::IntegratorOptions;
2use hifitime::{Duration, Unit};
3use pyo3::prelude::*;
4
5#[pymethods]
6impl IntegratorOptions {
7    #[pyo3(signature=(min_step_s=None, max_step_s=None,tolerance=None))]
8    #[new]
9    fn py_new(min_step_s: Option<f64>, max_step_s: Option<f64>, tolerance: Option<f64>) -> Self {
10        let mut opts = Self::default();
11        if let Some(min_step_s) = min_step_s {
12            opts.min_step = Unit::Second * min_step_s;
13        }
14        if let Some(max_step_s) = max_step_s {
15            opts.max_step = Unit::Second * max_step_s;
16        }
17        if let Some(tolerance) = tolerance {
18            opts.tolerance = tolerance;
19        }
20        opts
21    }
22
23    #[getter]
24    fn get_min_step(&self) -> Duration {
25        self.min_step
26    }
27    #[getter]
28    fn get_max_step(&self) -> Duration {
29        self.max_step
30    }
31    #[getter]
32    fn get_tolerance(&self) -> f64 {
33        self.tolerance
34    }
35}