1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use crate::constants::{AMU_TO_KG, C}; pub fn wavenumber_to_wavelength(wavenumber_cm: f64) -> f64 { 1.0e4 / wavenumber_cm.max(1e-30) } pub fn wavelength_to_wavenumber(wavelength_um: f64) -> f64 { 1.0e4 / wavelength_um.max(1e-30) } pub fn wavenumber_to_frequency(wavenumber_cm: f64) -> f64 { wavenumber_cm * (C * 1e2) } pub fn force_constant_from_frequency(wavenumber: f64, reduced_mass_amu: f64) -> f64 { let c_cm = C * 1e2; let mu = reduced_mass_amu * AMU_TO_KG; let nu = wavenumber * c_cm; 4.0 * std::f64::consts::PI.powi(2) * nu * nu * mu } pub fn reduced_mass(m1: f64, m2: f64) -> f64 { m1 * m2 / (m1 + m2).max(1e-30) } pub fn ir_intensity_ratio(absorbance_sample: f64, absorbance_reference: f64) -> f64 { absorbance_sample / absorbance_reference.max(1e-30) }