Skip to main content

sidereon_core/astro/integrators/
tableau.rs

1pub struct DP54Tableau {
2    pub c: [f64; 7],
3    pub a: Vec<Vec<f64>>,
4    pub b5: [f64; 7],
5    pub b4: [f64; 7],
6}
7
8impl Default for DP54Tableau {
9    fn default() -> Self {
10        // Dormand-Prince 5(4) coefficients (DOPRI5)
11        Self {
12            c: [0.0, 1.0 / 5.0, 3.0 / 10.0, 4.0 / 5.0, 8.0 / 9.0, 1.0, 1.0],
13            a: vec![
14                vec![],
15                vec![1.0 / 5.0],
16                vec![3.0 / 40.0, 9.0 / 40.0],
17                vec![44.0 / 45.0, -56.0 / 15.0, 32.0 / 9.0],
18                vec![
19                    19372.0 / 6561.0,
20                    -25360.0 / 2187.0,
21                    64448.0 / 6561.0,
22                    -212.0 / 729.0,
23                ],
24                vec![
25                    9017.0 / 3168.0,
26                    -355.0 / 33.0,
27                    46732.0 / 5247.0,
28                    49.0 / 176.0,
29                    -5103.0 / 18656.0,
30                ],
31                vec![
32                    35.0 / 384.0,
33                    0.0,
34                    500.0 / 1113.0,
35                    125.0 / 192.0,
36                    -2187.0 / 6784.0,
37                    11.0 / 84.0,
38                ],
39            ],
40            b5: [
41                35.0 / 384.0,
42                0.0,
43                500.0 / 1113.0,
44                125.0 / 192.0,
45                -2187.0 / 6784.0,
46                11.0 / 84.0,
47                0.0,
48            ],
49            b4: [
50                5179.0 / 57600.0,
51                0.0,
52                7571.0 / 16695.0,
53                393.0 / 640.0,
54                -92097.0 / 339200.0,
55                187.0 / 2100.0,
56                1.0 / 40.0,
57            ],
58        }
59    }
60}