Skip to main content

example_power/
example_power.rs

1use zmatrix::physics::basic::{Power, Energy, Force, Velocity, PhysicalQuantity};
2use zmatrix::physics::basic::time_delta_to_secs_f64;
3use chrono::TimeDelta;
4
5fn main() {
6    println!("=== 功率物理量示例 ===\n");
7
8    // 1. 创建不同单位的功率
9    println!("1. 创建不同单位的功率:");
10    let p1 = Power::from_watt(1.0); // 1 W
11    let p2 = Power::from_mill_watt(1000.0); // 1000 mW = 1 W
12    let p3 = Power::from_micro_watt(1000000.0); // 1000000 μW = 1 W
13    let p4 = Power::from_nano_watt(1000000000.0); // 1000000000 nW = 1 W
14    let p5 = Power::from_kilo_watt(0.001); // 0.001 kW = 1 W
15    let p6 = Power::from_mega_watt(0.000001); // 0.000001 MW = 1 W
16    let p7 = Power::from_horse_power(1.0 / 745.7); // 1/745.7 hp ≈ 1 W
17
18    println!("   p1 = {} W", p1.as_watt());
19    println!("   p2 = {} mW = {} W", p2.as_mill_watt(), p2.as_watt());
20    println!("   p3 = {} μW = {} W", p3.as_micro_watt(), p3.as_watt());
21    println!("   p4 = {} nW = {} W", p4.as_nano_watt(), p4.as_watt());
22    println!("   p5 = {} kW = {} W", p5.as_kilo_watt(), p5.as_watt());
23    println!("   p6 = {} MW = {} W", p6.as_mega_watt(), p6.as_watt());
24    println!("   p7 = {} hp = {} W", p7.as_horse_power(), p7.as_watt());
25
26    // 2. 单位转换
27    println!("\n2. 单位转换:");
28    println!("   1 W = {} mW", p1.as_mill_watt());
29    println!("   1 W = {} μW", p1.as_micro_watt());
30    println!("   1 W = {} nW", p1.as_nano_watt());
31    println!("   1 W = {} kW", p1.as_kilo_watt());
32    println!("   1 W = {} MW", p1.as_mega_watt());
33    println!("   1 W = {} hp", p1.as_horse_power());
34
35    // 3. 功率的运算
36    println!("\n3. 功率的运算:");
37    let p_sum = p1 + p2; // 1 W + 1 W = 2 W
38    let p_diff = p_sum - p1; // 2 W - 1 W = 1 W
39    let p_scale = p1 * 3.0; // 1 W * 3 = 3 W
40    let p_div = p_scale / 2.0; // 3 W / 2 = 1.5 W
41
42    println!("   p1 + p2 = {} W", p_sum.as_watt());
43    println!("   p_sum - p1 = {} W", p_diff.as_watt());
44    println!("   p1 * 3 = {} W", p_scale.as_watt());
45    println!("   p_scale / 2 = {} W", p_div.as_watt());
46
47    // 4. 功率与时间的乘积(得到能量)
48    println!("\n4. 功率与时间的乘积(得到能量):");
49    let power = Power::from_watt(100.0); // 100 W
50    let time = TimeDelta::seconds(5); // 5 s
51    let energy: Energy = power * time; // 500 J
52
53    println!("   功率: {} W", power.as_watt());
54    println!("   时间: {} s", time_delta_to_secs_f64(&time));
55    println!("   能量: {} J", energy.as_joule());
56    println!("   验证: 100 W × 5 s = 500 J ✓");
57
58    // 5. 时间与功率的乘积(满足交换律)
59    println!("\n5. 时间与功率的乘积(满足交换律):");
60    let energy2: Energy = time * power; // 同样是 500 J
61    println!("   时间 × 功率 = {} J", energy2.as_joule());
62    println!("   验证: 5 s × 100 W = 500 J ✓");
63
64    // 6. 力与速度的乘积(得到功率)
65    println!("\n6. 力与速度的乘积(得到功率):");
66    let force = Force::from_newton(10.0); // 10 N
67    let velocity = Velocity::from_m_per_sec(5.0); // 5 m/s
68    let power_from_fv: Power = force * velocity; // 50 W
69
70    println!("   力: {} N", force.as_newton());
71    println!("   速度: {} m/s", velocity.as_m_per_sec());
72    println!("   功率: {} W", power_from_fv.as_watt());
73    println!("   验证: 10 N × 5 m/s = 50 W ✓");
74
75    // 7. 速度与力的乘积(满足交换律)
76    println!("\n7. 速度与力的乘积(满足交换律):");
77    let power_from_vf: Power = velocity * force; // 同样是 50 W
78    println!("   速度 × 力 = {} W", power_from_vf.as_watt());
79    println!("   验证: 5 m/s × 10 N = 50 W ✓");
80
81    // 8. 不同单位之间的运算
82    println!("\n8. 不同单位之间的运算:");
83    let p_micro = Power::from_micro_watt(1000000.0); // 1 W
84    let p_kilo = Power::from_kilo_watt(0.001);       // 1 W
85    let p_result = p_micro + p_kilo; // 1 W + 1 W = 2 W
86    println!("   {} μW + {} kW = {} W",
87             p_micro.as_micro_watt(),
88             p_kilo.as_kilo_watt(),
89             p_result.as_watt());
90
91    // 9. 马力转换
92    println!("\n9. 马力转换:");
93    let hp = Power::from_horse_power(1.0); // 1 hp
94    println!("   1 hp = {} W", hp.as_watt());
95    
96    let watt = Power::from_watt(745.7); // 745.7 W
97    println!("   745.7 W = {} hp", watt.as_horse_power());
98
99    // 10. 零值检查
100    println!("\n10. 零值检查:");
101    let p_zero = Power::from_watt(0.0);
102    let p_nonzero = Power::from_watt(1.0);
103    println!("   p_zero.is_zero() = {}", p_zero.is_zero());
104    println!("   p_nonzero.is_zero() = {}", p_nonzero.is_zero());
105
106    // 11. 实际应用示例
107    println!("\n11. 实际应用示例:");
108    
109    // 电灯泡功率
110    let lightbulb = Power::from_watt(60.0); // 60 W灯泡
111    let usage_time = TimeDelta::seconds(3600); // 1小时
112    let energy_consumed: Energy = lightbulb * usage_time; // 216 kJ
113    println!("   60W灯泡使用1小时消耗: {} kJ", energy_consumed.as_kilo_joule());
114
115    // 汽车发动机功率
116    let engine = Power::from_horse_power(200.0); // 200 hp发动机
117    println!("   200 hp发动机 = {} kW", engine.as_kilo_watt());
118    
119    // 风力发电机
120    let wind_turbine = Power::from_mega_watt(2.0); // 2 MW风力发电机
121    println!("   2 MW风力发电机 = {} hp", wind_turbine.as_horse_power());
122
123    // 12. 功率与时间的复杂计算
124    println!("\n12. 功率与时间的复杂计算:");
125    
126    // 不同功率设备的使用
127    let tv = Power::from_watt(100.0); // 100 W电视
128    let tv_time = TimeDelta::seconds(7200); // 2小时
129    
130    let computer = Power::from_watt(300.0); // 300 W电脑
131    let computer_time = TimeDelta::seconds(3600); // 1小时
132    
133    let total_energy: Energy = tv * tv_time + computer * computer_time;
134    println!("   电视2小时 + 电脑1小时 = {} kWh", total_energy.as_kilo_joule() / 3600.0);
135
136    // 13. 机械功率计算
137    println!("\n13. 机械功率计算:");
138    
139    // 电梯功率
140    let elevator_force = Force::from_kilo_newton(10.0); // 10 kN
141    let elevator_speed = Velocity::from_m_per_sec(2.0); // 2 m/s
142    let elevator_power: Power = elevator_force * elevator_speed; // 20 kW
143    println!("   电梯功率: {} kN × {} m/s = {} kW", 
144             elevator_force.as_kilo_newton(), 
145             elevator_speed.as_m_per_sec(), 
146             elevator_power.as_kilo_watt());
147
148    // 汽车牵引功率
149    let car_force = Force::from_newton(2000.0); // 2000 N牵引力
150    let car_speed = Velocity::from_km_per_h(80.0); // 80 km/h
151    let car_power: Power = car_force * car_speed; // 约44.4 kW
152    println!("   汽车牵引功率: {} N × {} km/h = {} kW", 
153             car_force.as_newton(), 
154             car_speed.as_km_per_h(), 
155             car_power.as_kilo_watt());
156
157    println!("\n=== 示例完成 ===");
158}