#[derive(Debug, Clone, Copy, PartialEq)]
pub struct DustEnvironment {
    pub particle_size_um: f64,
    pub lofting_probability: f64,
    pub abrasive_index: f64,
}

impl DustEnvironment {
    pub fn impact_ejecta() -> Self {
        Self {
            particle_size_um: 20.0,
            lofting_probability: 0.30,
            abrasive_index: 0.55,
        }
    }
    pub fn settled_regolith() -> Self {
        Self {
            particle_size_um: 45.0,
            lofting_probability: 0.03,
            abrasive_index: 0.12,
        }
    }
    pub fn adhesion_risk(&self, electrostatic_potential_v: f64) -> f64 {
        (self.lofting_probability * 0.6
            + self.abrasive_index * 0.3
            + electrostatic_potential_v.abs() / 500.0)
            .clamp(0.0, 1.0)
    }
}
