marss 0.0.3

Mars celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
pub struct Paleolake {
    pub name: &'static str,
    pub crater_name: &'static str,
    pub estimated_area_km2: f64,
    pub estimated_depth_m: f64,
    pub latitude_deg: f64,
}

impl Paleolake {
    pub fn volume_km3(&self) -> f64 {
        self.estimated_area_km2 * self.estimated_depth_m / 1000.0 * 0.5
    }

    pub fn is_open_basin(&self) -> bool {
        true
    }

    pub fn residence_time_years(&self, estimated_inflow_m3_s: f64) -> f64 {
        let vol_m3 = self.volume_km3() * 1e9;
        vol_m3 / (estimated_inflow_m3_s * crate::SECONDS_PER_YEAR)
    }
}

pub fn gale_crater_lake() -> Paleolake {
    Paleolake {
        name: "Gale Crater Lake",
        crater_name: "Gale",
        estimated_area_km2: 7_800.0,
        estimated_depth_m: 700.0,
        latitude_deg: -5.4,
    }
}

pub fn jezero_crater_lake() -> Paleolake {
    Paleolake {
        name: "Jezero Crater Lake",
        crater_name: "Jezero",
        estimated_area_km2: 900.0,
        estimated_depth_m: 250.0,
        latitude_deg: 18.4,
    }
}

pub fn eridania_lake() -> Paleolake {
    Paleolake {
        name: "Eridania Lake",
        crater_name: "Eridania Basin",
        estimated_area_km2: 1_100_000.0,
        estimated_depth_m: 2_400.0,
        latitude_deg: -35.0,
    }
}

pub fn total_paleolake_count() -> u32 {
    500
}

pub fn major_paleolakes() -> Vec<Paleolake> {
    vec![gale_crater_lake(), jezero_crater_lake(), eridania_lake()]
}