#[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 plume_particle() -> Self {
Self {
particle_size_um: 1.0,
lofting_probability: 0.90,
abrasive_index: 0.10,
}
}
pub fn settled_ice() -> Self {
Self {
particle_size_um: 30.0,
lofting_probability: 0.05,
abrasive_index: 0.08,
}
}
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)
}
}