enceladuss 0.0.3

Enceladus celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
#[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,
    }
}