#[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 terminator() -> Self {
Self {
particle_size_um: 18.0,
lofting_probability: 0.72,
abrasive_index: 0.84,
}
}
pub fn sheltered_habitat() -> Self {
Self {
particle_size_um: 35.0,
lofting_probability: 0.08,
abrasive_index: 0.21,
}
}
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)
}
}