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
pub fn effective_atomic_number(metal_electrons: u32, ligand_electrons: u32) -> u32 { metal_electrons + ligand_electrons } pub fn chelate_effect(k_mono: f64, k_chelate: f64) -> f64 { (k_chelate / k_mono).log10() } pub fn irving_williams_stability(ionization_energy: f64, ionic_radius: f64) -> f64 { ionization_energy / ionic_radius.max(1e-30) } pub fn coordination_number_radius_ratio(r_cation: f64, r_anion: f64) -> u32 { let ratio = r_cation / r_anion.max(1e-30); if ratio < 0.155 { 2 } else if ratio < 0.225 { 3 } else if ratio < 0.414 { 4 } else if ratio < 0.732 { 6 } else { 8 } }