dess_examples/tests/
mod.rs

1pub mod euler_three_thermal_mass_sys;
2pub mod euler_three_thrml_mass_w_bc_sys;
3pub mod tests_core;
4pub mod dess {
5    pub mod solver {}
6}
7pub struct AdaptiveSolverConfig;
8
9#[cfg(test)]
10mod method_tests {
11    use super::euler_three_thermal_mass_sys::*;
12    use super::euler_three_thrml_mass_w_bc_sys::*;
13    use dess::solver::*;
14    #[test]
15    fn test_eulers_accuracy() {
16        println!("Euler's Method:");
17        test_method_against_euler_baseline(SolverTypes::EulerFixed { dt: 1e-3 }, 5e-3);
18        println!("Euler's Method bc:");
19        test_method_against_euler_baseline_bc(
20            SolverTypes::EulerFixed {
21                dt: 0.013888888888888886,
22            },
23            1e-3,
24        );
25    }
26    #[test]
27    fn test_heuns_accuracy() {
28        println!("Heun's Method:");
29        test_method_against_euler_baseline(
30            SolverTypes::HeunsMethod {
31                dt: 0.1,
32            },
33            5e-3,
34        );
35        println!("Heun's Method bc:");
36        test_method_against_euler_baseline_bc(
37            SolverTypes::HeunsMethod {
38                dt: 0.1,
39            },
40            1e-2,
41        );
42    }
43    #[test]
44    fn test_midpoint_accuracy() {
45        println!("Midpoint Method:");
46        test_method_against_euler_baseline(
47            SolverTypes::MidpointMethod {
48                dt: 0.1,
49            },
50            5e-3,
51        );
52        println!("Midpoint Method bc:");
53        test_method_against_euler_baseline_bc(
54            SolverTypes::MidpointMethod {
55                dt: 0.013888888888888892,
56            },
57            1e-2,
58        );
59    }
60    #[test]
61    fn test_ralstons_accuracy() {
62        println!("Ralston's Method:");
63        test_method_against_euler_baseline(
64            SolverTypes::RalstonsMethod {
65                dt: 0.09090909090909091,
66            },
67            2.5e-2,
68        );
69        println!("Ralston's Method bc:");
70        test_method_against_euler_baseline_bc(
71            SolverTypes::RalstonsMethod {
72                dt: 0.014285714285714282,
73            },
74            1e-4,
75        );
76    }
77    #[test]
78    fn test_rk23_accuracy() {
79        println!("RK23 (Bogacki-Shampine) Method:");
80        test_method_against_euler_baseline(
81            SolverTypes::RK23BogackiShampine(Box::new(AdaptiveSolverConfig {
82                rtol: 1e-2,
83                atol: 1e-3,
84                state: SolverState {
85                    dt: 0.1,
86                    ..Default::default()
87                },
88                ..Default::default()
89            })),
90            1e-2,
91        );
92        println!("RK23 (Bogacki-Shampine) Method bc:");
93        test_method_against_euler_baseline_bc(
94            SolverTypes::RK23BogackiShampine(Box::new(AdaptiveSolverConfig {
95                rtol: 1e-2,
96                atol: 1e-3,
97                ..Default::default()
98            })),
99            5e-4,
100        );
101    }
102    #[test]
103    fn test_rk4_accuracy() {
104        println!("RK4 Method:");
105        test_method_against_euler_baseline(
106            SolverTypes::RK4Fixed {
107                dt: 0.05555555555555555,
108            },
109            7.5e-5,
110        );
111        println!("RK4 Method bc:");
112        test_method_against_euler_baseline_bc(
113            SolverTypes::RK4Fixed {
114                dt: 0.038461538461538464,
115            },
116            7.5e-3,
117        );
118    }
119    #[test]
120    fn test_rk45_accuracy() {
121        println!("RK45 (Cash-Karp) Method:");
122        test_method_against_euler_baseline(SolverTypes::RK45CashKarp(Box::default()), 2.5e-6);
123        println!("RK45 (Cash-Karp) Method bc:");
124        test_method_against_euler_baseline_bc(
125            SolverTypes::RK45CashKarp(Box::new(AdaptiveSolverConfig {
126                rtol: 1e-3,
127                atol: 1e-5,
128                ..Default::default()
129            })),
130            2.5e-3,
131        );
132    }
133}