marss 0.0.3

Mars celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
pub fn coriolis_parameter(latitude_deg: f64) -> f64 {
    let lat_rad = latitude_deg.to_radians();
    2.0 * crate::OMEGA_MARS * lat_rad.sin()
}

pub fn geostrophic_wind_speed(pressure_gradient_pa_per_m: f64, latitude_deg: f64) -> f64 {
    let f = coriolis_parameter(latitude_deg);
    if f.abs() < 1e-10 {
        return f64::INFINITY;
    }
    let rho = crate::SURFACE_AIR_DENSITY;
    pressure_gradient_pa_per_m / (rho * f.abs())
}

pub fn thermal_tide_amplitude(surface_temp_swing_k: f64) -> f64 {
    let r_s = crate::R_SPECIFIC;
    let circumference = 2.0 * std::f64::consts::PI * crate::MARS_RADIUS;
    r_s * surface_temp_swing_k / (circumference * crate::OMEGA_MARS)
}

pub fn saltation_threshold_m_s() -> f64 {
    25.0
}

pub fn mean_surface_wind_speed() -> f64 {
    5.0
}

pub fn max_gust_speed_estimate() -> f64 {
    40.0
}

pub fn polar_jet_speed_m_s() -> f64 {
    170.0
}

pub fn co2_condensation_flow_m_s(latitude_deg: f64) -> f64 {
    if latitude_deg.abs() < 60.0 {
        return 0.0;
    }
    30.0 * ((latitude_deg.abs() - 60.0) / 30.0).min(1.0)
}