#[derive(Debug, Clone, Copy, PartialEq)]
pub struct CryoVolcano {
pub name: &'static str,
pub vent_temperature_k: f64,
pub active: bool,
}
impl CryoVolcano {
pub fn activity_index(&self) -> f64 {
if self.active {
self.vent_temperature_k / 145.0
} else {
0.0
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Plume {
pub source: &'static str,
pub height_km: f64,
pub mass_flux_kg_s: f64,
pub water_fraction: f64,
}
impl Plume {
pub fn total_mass_per_orbit_kg(&self) -> f64 {
self.mass_flux_kg_s * crate::SIDEREAL_ORBIT_PERIOD_S
}
}
pub fn tiger_stripe_plume() -> Plume {
Plume {
source: "Tiger Stripes",
height_km: 500.0,
mass_flux_kg_s: 200.0,
water_fraction: 0.91,
}
}
pub fn plume_height_km() -> f64 {
500.0
}
pub fn mass_flux_kg_s() -> f64 {
200.0
}
pub fn baghdad_vent() -> CryoVolcano {
CryoVolcano {
name: "Baghdad Vent",
vent_temperature_k: 145.0,
active: true,
}
}