sciforge-lib 0.0.4

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

pub const TABLE: &[RefractiveIndex] = &[
    RefractiveIndex { formula: "AIR",    n_d: 1.000277, temperature_k: 288.15, phase: "gas" },
    RefractiveIndex { formula: "He",     n_d: 1.000035, temperature_k: 273.15, phase: "gas" },
    RefractiveIndex { formula: "N2",     n_d: 1.000298, temperature_k: 273.15, phase: "gas" },
    RefractiveIndex { formula: "O2",     n_d: 1.000272, temperature_k: 273.15, phase: "gas" },
    RefractiveIndex { formula: "CO2",    n_d: 1.000449, temperature_k: 273.15, phase: "gas" },

    RefractiveIndex { formula: "H2O",    n_d: 1.3330,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "Hg",     n_d: 1.6200,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "CH3OH",  n_d: 1.3284,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C2H5OH", n_d: 1.3614,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C3H8O3", n_d: 1.4729,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C6H6",   n_d: 1.5011,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C7H8",   n_d: 1.4969,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C8H10",  n_d: 1.4972,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C6H14",  n_d: 1.3749,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C7H16",  n_d: 1.3876,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C8H18",  n_d: 1.3974,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "CHCl3",  n_d: 1.4458,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "CCl4",   n_d: 1.4607,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "CH2Cl2", n_d: 1.4242,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C3H6O",  n_d: 1.3588,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "CS2",    n_d: 1.6276,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "Br2",    n_d: 1.6610,   temperature_k: 293.15, phase: "liquid" },
    RefractiveIndex { formula: "C2H4O2", n_d: 1.3716,   temperature_k: 293.15, phase: "liquid" },

    RefractiveIndex { formula: "SiO2",   n_d: 1.4585,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "Al2O3",  n_d: 1.7700,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "TiO2",   n_d: 2.6140,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "C",      n_d: 2.4170,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "NaCl",   n_d: 1.5442,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "KCl",    n_d: 1.4900,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "CaF2",   n_d: 1.4338,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "MgO",    n_d: 1.7350,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "ZnO",    n_d: 2.0080,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "Si",     n_d: 3.4200,   temperature_k: 293.15, phase: "solid" },
    RefractiveIndex { formula: "Ge",     n_d: 4.0500,   temperature_k: 293.15, phase: "solid" },
];

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

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