#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SulfurDeposit {
pub region_name: &'static str,
pub estimated_mass_kg: f64,
pub purity_fraction: f64,
}
impl SulfurDeposit {
pub fn extractable_sulfur_kg(&self, recovery_efficiency: f64) -> f64 {
self.estimated_mass_kg * self.purity_fraction * recovery_efficiency.clamp(0.0, 1.0)
}
}
pub fn loki_deposits() -> SulfurDeposit {
SulfurDeposit {
region_name: "Loki Patera ejecta",
estimated_mass_kg: 1.0e15,
purity_fraction: 0.80,
}
}
pub fn annual_propellant_potential(deposit: SulfurDeposit, kg_per_year: f64) -> f64 {
deposit.extractable_sulfur_kg(0.5) / kg_per_year.max(1.0)
}