pvlib/transformer.rs
1/// Calculate transformer output power accounting for efficiency losses.
2///
3/// Uses a quadratic model where load losses scale with the square of output power.
4///
5/// # Arguments
6/// * `input_power` - Real AC power input to the transformer in W.
7/// * `transformer_rating` - Nominal output power of the transformer in VA.
8/// * `no_load_loss` - Constant losses as fraction of rating (0-1).
9/// * `load_loss` - Load-dependent losses as fraction of rating (0-1).
10///
11/// # Returns
12/// Real AC power output in W.
13pub fn simple_efficiency(
14 input_power: f64,
15 transformer_rating: f64,
16 no_load_loss: f64,
17 load_loss: f64,
18) -> f64 {
19 let input_normalized = input_power / transformer_rating;
20
21 let a = load_loss;
22 let b = 1.0;
23 let c = no_load_loss - input_normalized;
24
25 // Alternative quadratic formula to avoid divide-by-zero when a == 0
26 let disc = (b * b - 4.0 * a * c).sqrt();
27 let output_normalized = 2.0 * c / (-b - disc);
28
29 output_normalized * transformer_rating
30}