example_energy/
example_energy.rs1use zmatrix::physics::basic::{Energy, Distance, Mass, Velocity, PhysicalQuantity};
2
3fn main() {
4 println!("=== 能量物理量示例 ===\n");
5
6 println!("1. 创建不同单位的能量:");
8 let e1 = Energy::from_joule(1.0); let e2 = Energy::from_mill_joule(1000.0); let e3 = Energy::from_micro_joule(1e6); let e4 = Energy::from_nano_joule(1e9); let e5 = Energy::from_kilo_joule(1e-3); let e6 = Energy::from_mega_joule(1e-6); let e7 = Energy::from_electron_volt(1.0 / 1.602176634e-19); let e8 = Energy::from_kilo_electron_volt(1.0 / 1.602176634e-16); let e9 = Energy::from_mega_electron_volt(1.0 / 1.602176634e-13); println!(" e1 = {} J", e1.as_joule());
19 println!(" e2 = {} mJ = {} J", e2.as_mill_joule(), e2.as_joule());
20 println!(" e3 = {} μJ = {} J", e3.as_micro_joule(), e3.as_joule());
21 println!(" e4 = {} nJ = {} J", e4.as_nano_joule(), e4.as_joule());
22 println!(" e5 = {} kJ = {} J", e5.as_kilo_joule(), e5.as_joule());
23 println!(" e6 = {} MJ = {} J", e6.as_mega_joule(), e6.as_joule());
24 println!(" e7 = {} eV = {} J", e7.as_electron_volt(), e7.as_joule());
25 println!(" e8 = {} keV = {} J", e8.as_kilo_electron_volt(), e8.as_joule());
26 println!(" e9 = {} MeV = {} J", e9.as_mega_electron_volt(), e9.as_joule());
27
28 println!("\n2. 单位转换:");
30 println!(" 1 J = {} mJ", e1.as_mill_joule());
31 println!(" 1 J = {} μJ", e1.as_micro_joule());
32 println!(" 1 J = {} nJ", e1.as_nano_joule());
33 println!(" 1 J = {} kJ", e1.as_kilo_joule());
34 println!(" 1 J = {} MJ", e1.as_mega_joule());
35 println!(" 1 J = {} eV", e1.as_electron_volt());
36 println!(" 1 J = {} keV", e1.as_kilo_electron_volt());
37 println!(" 1 J = {} MeV", e1.as_mega_electron_volt());
38
39 println!("\n3. 能量运算:");
41 let e_sum = e1 + e2; let e_diff = e_sum - e1; let e_scale = e1 * 3.0; let e_div = e_scale / 2.0; println!(" e1 + e2 = {} J", e_sum.as_joule());
47 println!(" e_sum - e1 = {} J", e_diff.as_joule());
48 println!(" e1 * 3 = {} J", e_scale.as_joule());
49 println!(" e_scale / 2 = {} J", e_div.as_joule());
50
51 println!("\n4. 不同单位之间的运算:");
53 let e_micro = Energy::from_micro_joule(1e6); let e_mill = Energy::from_mill_joule(1000.0); let e_result = e_micro + e_mill; println!(" {} μJ + {} mJ = {} J",
57 e_micro.as_micro_joule(),
58 e_mill.as_mill_joule(),
59 e_result.as_joule());
60
61 println!("\n5. 标量与能量的运算:");
63 let e_scaled = 5.0 * e1; let e_divided = 10.0 / e1; println!(" 5.0 * {} J = {} J", e1.as_joule(), e_scaled.as_joule());
66 println!(" 10.0 / {} J = {} J", e1.as_joule(), e_divided.as_joule());
67
68 println!("\n6. 零值检查:");
70 let e_zero = Energy::from_joule(0.0);
71 let e_nonzero = Energy::from_joule(1.0);
72 println!(" e_zero.is_zero() = {}", e_zero.is_zero());
73 println!(" e_nonzero.is_zero() = {}", e_nonzero.is_zero());
74
75 println!("\n7. 实际应用示例:");
77
78 let mass = Mass::from_kg(2.0); let velocity = Velocity::from_m_per_sec(3.0); let kinetic_energy = Energy::from_joule(0.5 * mass.as_kg() * velocity.as_m_per_sec().powi(2));
82 println!(" 质量: {} kg", mass.as_kg());
83 println!(" 速度: {} m/s", velocity.as_m_per_sec());
84 println!(" 动能: {} J", kinetic_energy.as_joule());
85
86 let mass = Mass::from_kg(1.0); let height = Distance::from_m(10.0); let g = 9.81; let potential_energy = Energy::from_joule(mass.as_kg() * g * height.as_m());
91 println!(" 质量: {} kg", mass.as_kg());
92 println!(" 高度: {} m", height.as_m());
93 println!(" 势能: {} J", potential_energy.as_joule());
94
95 let photon_energy = Energy::from_electron_volt(2.5); println!(" 光子能量: {} eV = {} J",
98 photon_energy.as_electron_volt(),
99 photon_energy.as_joule());
100
101 let nuclear_energy = Energy::from_mega_electron_volt(1.0); println!(" 核能: {} MeV = {} J",
103 nuclear_energy.as_mega_electron_volt(),
104 nuclear_energy.as_joule());
105
106 println!("\n=== 示例完成 ===");
107}