jupiters 0.0.3

Jupiter celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
pub struct ThermalAnomaly {
    pub temperaturek: f64,
    pub durationdays: u32,
    pub altitudem: f64,
}

impl ThermalAnomaly {
    pub fn warmingexcessk(&self) -> f64 {
        (self.temperaturek - crate::ONEBARTEMPK).max(0.0)
    }

    pub fn coldexcessk(&self) -> f64 {
        (crate::ONEBARTEMPK - self.temperaturek).max(0.0)
    }

    pub fn ammoniaboilingtempk() -> f64 {
        239.8
    }

    pub fn dangerlevel(&self) -> &'static str {
        let excess = self.warmingexcessk();
        if excess >= 30.0 {
            "Extreme anomaly"
        } else if excess >= 15.0 {
            "Strong anomaly"
        } else if excess >= 5.0 {
            "Moderate anomaly"
        } else {
            "Normal"
        }
    }

    pub fn ammoniacondensationpressurepa(temperaturek: f64) -> f64 {
        let tref = 195.4;
        let pref = 101325.0;
        let lhvap = 23350.0;
        let r = sciforge::hub::prelude::constants::R_GAS / crate::mnh3();
        pref * (lhvap / r * (1.0 / tref - 1.0 / temperaturek)).exp()
    }
}

pub fn saturationvaporpressureammoniana(tempk: f64) -> f64 {
    ThermalAnomaly::ammoniacondensationpressurepa(tempk)
}

pub fn dewpointammoniak(pressure: f64) -> f64 {
    let pref = 101325.0;
    let tref = 195.4;
    let lhvap = 23350.0;
    let r = sciforge::hub::prelude::constants::R_GAS / crate::mnh3();
    1.0 / (1.0 / tref - r / lhvap * (pressure / pref).ln())
}