pvlib-rust 0.1.6

A Rust port of pvlib-python: solar energy modeling toolkit
Documentation
/// Calculate transformer output power accounting for efficiency losses.
///
/// Uses a quadratic model where load losses scale with the square of output power.
///
/// # Arguments
/// * `input_power` - Real AC power input to the transformer in W.
/// * `transformer_rating` - Nominal output power of the transformer in VA.
/// * `no_load_loss` - Constant losses as fraction of rating (0-1).
/// * `load_loss` - Load-dependent losses as fraction of rating (0-1).
///
/// # Returns
/// Real AC power output in W.
#[inline]
pub fn simple_efficiency(
    input_power: f64,
    transformer_rating: f64,
    no_load_loss: f64,
    load_loss: f64,
) -> f64 {
    let input_normalized = input_power / transformer_rating;

    let a = load_loss;
    let b = 1.0;
    let c = no_load_loss - input_normalized;

    // Alternative quadratic formula to avoid divide-by-zero when a == 0
    let disc = (b * b - 4.0 * a * c).sqrt();
    let output_normalized = 2.0 * c / (-b - disc);

    output_normalized * transformer_rating
}