#[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)
}
}