sciforge-core 0.0.4

Shared engineering primitives: materials, fasteners, fluids, propulsion taxonomies, std components.
Documentation
use crate::moleculars::Gas;

pub fn mixture_molar_mass_kg_per_mol(gases: &[&Gas], mole_fractions: &[f64]) -> f64 {
    gases.iter().zip(mole_fractions.iter()).map(|(g, &y)| y * g.molar_mass_kg_per_mol).sum()
}

pub fn mixture_cp_j_kgk(gases: &[&Gas], mass_fractions: &[f64]) -> f64 {
    gases.iter().zip(mass_fractions.iter()).map(|(g, &y)| y * g.cp_j_kgk_ref).sum()
}

pub fn mixture_cv_j_kgk(gases: &[&Gas], mass_fractions: &[f64]) -> f64 {
    gases.iter().zip(mass_fractions.iter()).map(|(g, &y)| y * g.cv_j_kgk_ref).sum()
}

pub fn mixture_gamma(gases: &[&Gas], mass_fractions: &[f64]) -> f64 {
    mixture_cp_j_kgk(gases, mass_fractions) / mixture_cv_j_kgk(gases, mass_fractions)
}

pub fn partial_pressure_pa(total_pressure_pa: f64, mole_fraction: f64) -> f64 {
    total_pressure_pa * mole_fraction
}

pub fn mole_fraction_from_mass(gas: &Gas, mass_fraction: f64, mixture_molar_mass: f64) -> f64 {
    mass_fraction * mixture_molar_mass / gas.molar_mass_kg_per_mol
}

pub fn mass_fraction_from_mole(gas: &Gas, mole_fraction: f64, mixture_molar_mass: f64) -> f64 {
    mole_fraction * gas.molar_mass_kg_per_mol / mixture_molar_mass
}