#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Cryovolcano {
    pub name: &'static str,
    pub summit_elevation_m: f64,
    pub caldera_diameter_km: f64,
}

impl Cryovolcano {
    pub fn volume_index(&self) -> f64 {
        self.summit_elevation_m * self.caldera_diameter_km
    }
}

pub fn doom_mons() -> Cryovolcano {
    Cryovolcano {
        name: "Doom Mons",
        summit_elevation_m: 1_450.0,
        caldera_diameter_km: 70.0,
    }
}

pub fn cryovolcanic_resurfacing_rate_mm_yr(heat_flux_mw_m2: f64) -> f64 {
    heat_flux_mw_m2.max(0.0) * 0.005
}
