marss 0.0.3

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

impl AncientOcean {
    pub fn oceanus_borealis() -> Self {
        Self {
            name: "Oceanus Borealis",
            estimated_volume_km3: 1.56e7,
            estimated_depth_m: 550.0,
            estimated_area_km2: 2.84e7,
            epoch: "Late Hesperian (~3.2 Gyr ago)",
        }
    }

    pub fn arabia_ocean() -> Self {
        Self {
            name: "Arabia Ocean",
            estimated_volume_km3: 1.2e7,
            estimated_depth_m: 250.0,
            estimated_area_km2: 4.8e7,
            epoch: "Early Noachian (~4.0 Gyr ago)",
        }
    }

    pub fn mass_kg(&self) -> f64 {
        self.estimated_volume_km3 * 1e9 * 1000.0
    }

    pub fn equivalent_global_layer_m(&self) -> f64 {
        self.estimated_volume_km3 * 1e9 / crate::MARS_SURFACE_AREA
    }
}

pub fn subsurface_water_estimate_km3() -> f64 {
    5e6
}

pub fn total_water_inventory_m_gel() -> f64 {
    35.0
}

pub struct RecurringSlopeLineae {
    pub latitude_deg: f64,
    pub length_m: f64,
    pub active_season: &'static str,
}

impl RecurringSlopeLineae {
    pub fn typical() -> Self {
        Self {
            latitude_deg: -30.0,
            length_m: 300.0,
            active_season: "Southern spring/summer",
        }
    }

    pub fn count_observed() -> u32 {
        1000
    }
}