darkmatter 0.0.1

Dark matter simulation engine — gravitational fields, particle dynamics, halo stability, and cosmological constants
Documentation
use crate::constants::physical::{C, G};
use std::f64::consts::PI;

pub fn filament_linear_density(m_per_length: f64) -> f64 {
    m_per_length
}

pub fn critical_linear_density(cs: f64) -> f64 {
    2.0 * cs * cs / G
}

pub fn filament_radius_isothermal(sigma_v: f64, rho_central: f64) -> f64 {
    sigma_v / (4.0 * PI * G * rho_central).sqrt()
}

pub fn filament_overdensity_profile(rho_0: f64, r: f64, r_0: f64) -> f64 {
    rho_0 / (1.0 + (r / r_0).powi(2))
}

pub fn filament_dm_mass_enclosed(rho_0: f64, r_0: f64, r: f64, length: f64) -> f64 {
    PI * rho_0 * r_0 * r_0 * ((1.0 + (r / r_0).powi(2)).ln()) * length
}

pub fn lyman_alpha_optical_depth(n_hi: f64, sigma_lya: f64, path_length: f64) -> f64 {
    n_hi * sigma_lya * path_length
}

pub fn lyman_alpha_flux_decrement(tau: f64) -> f64 {
    1.0 - (-tau).exp()
}

pub fn gunn_peterson_tau(n_hi_mean: f64, z: f64) -> f64 {
    let sigma_lya = 4.48e-18;
    let h0 = 2.2e-18;
    sigma_lya * n_hi_mean * C / (h0 * (1.0 + z).powf(1.5))
}

pub fn igm_temperature_density_relation(t_0: f64, delta: f64, gamma_minus_1: f64) -> f64 {
    t_0 * delta.powf(gamma_minus_1)
}

pub const WARM_HOT_IGM_FRACTION: f64 = 0.40;

pub const WHIM_TEMPERATURE_RANGE_KELVIN: (f64, f64) = (1e5, 1e7);

pub const BARYON_CENSUS_FILAMENTS: f64 = 0.29;

pub fn dispersion_measure_intergalactic(n_e_mean: f64, distance_mpc: f64) -> f64 {
    let mpc = 3.0857e22;
    n_e_mean * distance_mpc * mpc * 1e-2
}

pub const COSMIC_WEB_DENSITY_THRESHOLD: f64 = 5.0;

pub fn spine_density_contrast(rho_filament: f64, rho_mean: f64) -> f64 {
    rho_filament / rho_mean
}