dess_examples/tests/
mod.rs1pub 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}