sciforge 0.0.3

A comprehensive scientific computing library in pure Rust with zero dependencies
Documentation
pub fn plate_velocity(distance: f64, time: f64) -> f64 {
    distance / time
}

pub fn euler_pole_velocity(omega: f64, radius: f64, colatitude: f64) -> f64 {
    omega * radius * colatitude.sin()
}

pub fn isostatic_equilibrium(rho_crust: f64, thickness: f64, rho_mantle: f64) -> f64 {
    thickness * (1.0 - rho_crust / rho_mantle)
}

pub fn pratt_isostasy(rho_ref: f64, d_ref: f64, elevation: f64) -> f64 {
    rho_ref * d_ref / (d_ref + elevation)
}

pub fn airy_root(elevation: f64, rho_crust: f64, rho_mantle: f64) -> f64 {
    elevation * rho_crust / (rho_mantle - rho_crust)
}

pub fn thermal_subsidence(e0: f64, t: f64, tau: f64) -> f64 {
    e0 * (1.0 - (-t / tau).exp())
}

pub fn mckenzie_stretching(beta: f64, rho_m: f64, rho_c: f64, alpha: f64, tl: f64, tc: f64) -> f64 {
    tc * (rho_m * alpha * tl / (2.0 * (rho_m - rho_c))) * (1.0 - 1.0 / beta)
}

pub fn heat_flow(k: f64, dt_dz: f64) -> f64 {
    -k * dt_dz
}

pub fn geothermal_gradient(surface_temp: f64, depth: f64, gradient: f64) -> f64 {
    surface_temp + gradient * depth
}

pub fn flexural_rigidity(e: f64, te: f64, nu: f64) -> f64 {
    e * te.powi(3) / (12.0 * (1.0 - nu * nu))
}

pub fn elastic_thickness_from_rigidity(d: f64, e: f64, nu: f64) -> f64 {
    (12.0 * d * (1.0 - nu * nu) / e).powf(1.0 / 3.0)
}