#[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 volcanic_plume() -> Self {
Self {
particle_size_um: 5.0,
lofting_probability: 0.95,
abrasive_index: 0.80,
}
}
pub fn sulfur_frost() -> Self {
Self {
particle_size_um: 30.0,
lofting_probability: 0.10,
abrasive_index: 0.15,
}
}
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)
}
}