sciforge-lib 0.0.4

Scientific computing library — mathematics, physics, chemistry, biology, astronomy, geology, meteorology.
Documentation
#[derive(Debug, Clone, Copy)]
pub struct SoundSpeed {
    pub formula: &'static str,
    pub c_m_per_s: f64,
    pub temperature_k: f64,
    pub phase: &'static str,
}

pub const TABLE: &[SoundSpeed] = &[
    SoundSpeed { formula: "AIR",  c_m_per_s:  343.21, temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "N2",   c_m_per_s:  349.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "O2",   c_m_per_s:  328.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "H2",   c_m_per_s: 1310.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "He",   c_m_per_s: 1007.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "Ne",   c_m_per_s:  461.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "Ar",   c_m_per_s:  323.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "Kr",   c_m_per_s:  220.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "Xe",   c_m_per_s:  178.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "CO2",  c_m_per_s:  267.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "CO",   c_m_per_s:  349.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "CH4",  c_m_per_s:  446.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "NH3",  c_m_per_s:  431.0,  temperature_k: 293.15, phase: "gas" },
    SoundSpeed { formula: "SF6",  c_m_per_s:  136.0,  temperature_k: 293.15, phase: "gas" },

    SoundSpeed { formula: "H2O",    c_m_per_s: 1497.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "Hg",     c_m_per_s: 1450.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "CH3OH",  c_m_per_s: 1103.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "C2H5OH", c_m_per_s: 1162.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "C3H8O3", c_m_per_s: 1923.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "C6H6",   c_m_per_s: 1295.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "C7H8",   c_m_per_s: 1305.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "C3H6O",  c_m_per_s: 1174.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "CCl4",   c_m_per_s:  926.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "CHCl3",  c_m_per_s:  984.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "C6H14",  c_m_per_s: 1083.0, temperature_k: 298.15, phase: "liquid" },
    SoundSpeed { formula: "C8H18",  c_m_per_s: 1192.0, temperature_k: 298.15, phase: "liquid" },

    SoundSpeed { formula: "Fe",    c_m_per_s: 5957.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Al",    c_m_per_s: 6420.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Cu",    c_m_per_s: 4760.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Au",    c_m_per_s: 3240.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Ag",    c_m_per_s: 3650.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Ni",    c_m_per_s: 5630.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Ti",    c_m_per_s: 6070.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "W",     c_m_per_s: 5410.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Pb",    c_m_per_s: 2160.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Mg",    c_m_per_s: 5770.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Si",    c_m_per_s: 8433.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "C",     c_m_per_s: 18350.0,temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "SiO2",  c_m_per_s: 5968.0, temperature_k: 298.15, phase: "solid" },
    SoundSpeed { formula: "Al2O3", c_m_per_s: 10845.0,temperature_k: 298.15, phase: "solid" },
];

pub fn by_formula(formula: &str) -> Option<&'static SoundSpeed> {
    TABLE.iter().find(|s| s.formula == formula)
}

pub fn by_formula_phase(formula: &str, phase: &str) -> Option<&'static SoundSpeed> {
    TABLE.iter().find(|s| s.formula == formula && s.phase == phase)
}