sciforge-lib 0.0.4

Scientific computing library — mathematics, physics, chemistry, biology, astronomy, geology, meteorology.
Documentation
pub fn turbulent_kinetic_energy(u_prime: f64, v_prime: f64, w_prime: f64) -> f64 {
    0.5 * (u_prime * u_prime + v_prime * v_prime + w_prime * w_prime)
}

pub fn kolmogorov_length_scale(nu: f64, epsilon: f64) -> f64 {
    (nu.powi(3) / epsilon).powf(0.25)
}

pub fn kolmogorov_time_scale(nu: f64, epsilon: f64) -> f64 {
    (nu / epsilon).sqrt()
}

pub fn kolmogorov_velocity_scale(nu: f64, epsilon: f64) -> f64 {
    (nu * epsilon).powf(0.25)
}

pub fn taylor_microscale(u_rms: f64, epsilon: f64, nu: f64) -> f64 {
    u_rms * (15.0 * nu / epsilon).sqrt()
}

pub fn integral_length_scale(tke: f64, epsilon: f64) -> f64 {
    tke.powf(1.5) / epsilon.max(1e-30)
}

pub fn friction_velocity(tau_wall: f64, rho: f64) -> f64 {
    (tau_wall / rho).sqrt()
}

pub fn law_of_wall(u_tau: f64, y: f64, nu: f64) -> f64 {
    let y_plus = u_tau * y / nu;
    if y_plus < 5.0 {
        u_tau * y_plus
    } else if y_plus < 30.0 {
        u_tau * (5.0 * y_plus.ln() - 3.05)
    } else {
        u_tau * (2.5 * y_plus.ln() + 5.5)
    }
}

pub fn mixing_length(kappa: f64, y: f64) -> f64 {
    kappa * y
}

pub fn eddy_viscosity(mixing_length: f64, du_dy: f64) -> f64 {
    mixing_length * mixing_length * du_dy.abs()
}

pub fn turbulence_intensity(u_rms: f64, u_mean: f64) -> f64 {
    u_rms / u_mean.max(1e-30)
}

pub fn energy_spectrum_kolmogorov(c_k: f64, epsilon: f64, k: f64) -> f64 {
    c_k * epsilon.powf(2.0 / 3.0) * k.powf(-5.0 / 3.0)
}