sciforge-lib 0.0.4

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

pub const TABLE: &[ThermalExpansion] = &[
    ThermalExpansion { formula: "Al",    alpha_per_k: 23.1e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Cu",    alpha_per_k: 16.5e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Fe",    alpha_per_k: 11.8e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Au",    alpha_per_k: 14.2e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Ag",    alpha_per_k: 18.9e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Ni",    alpha_per_k: 13.4e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Ti",    alpha_per_k: 8.6e-6,  temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Mg",    alpha_per_k: 24.8e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Zn",    alpha_per_k: 30.2e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Pb",    alpha_per_k: 28.9e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Sn",    alpha_per_k: 22.0e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "W",     alpha_per_k: 4.5e-6,  temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Mo",    alpha_per_k: 4.8e-6,  temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Pt",    alpha_per_k: 8.8e-6,  temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Si",    alpha_per_k: 2.6e-6,  temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "C",     alpha_per_k: 1.0e-6,  temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "SiO2",  alpha_per_k: 0.55e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "Al2O3", alpha_per_k: 8.1e-6,  temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "MgO",   alpha_per_k: 13.5e-6, temperature_k: 298.15, phase: "solid" },
    ThermalExpansion { formula: "NaCl",  alpha_per_k: 39.6e-6, temperature_k: 298.15, phase: "solid" },

    ThermalExpansion { formula: "H2O",    alpha_per_k: 207.0e-6,  temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "Hg",     alpha_per_k: 181.0e-6,  temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "CH3OH",  alpha_per_k: 1190.0e-6, temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "C2H5OH", alpha_per_k: 1099.0e-6, temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "C3H8O3", alpha_per_k: 504.0e-6,  temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "C6H6",   alpha_per_k: 1240.0e-6, temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "C7H8",   alpha_per_k: 1080.0e-6, temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "C3H6O",  alpha_per_k: 1430.0e-6, temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "CCl4",   alpha_per_k: 1230.0e-6, temperature_k: 298.15, phase: "liquid" },
    ThermalExpansion { formula: "CHCl3",  alpha_per_k: 1273.0e-6, temperature_k: 298.15, phase: "liquid" },
];

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

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