darkmatter 0.0.2

Dark matter simulation engine — gravitational fields, particle dynamics, halo stability, and cosmological constants
Documentation
use darkmatter::physics::phase_space::{
    bose_einstein_dm, chandrasekhar_mass_fermionic_dm, coarse_grained_phase_space_density,
    degenerate_fermi_pressure, fermi_dirac_dm, isothermal_distribution, king_distribution,
    liouville_phase_space_density_nfw, max_phase_space_density_fermionic, number_density_bosonic,
    number_density_fermionic, phase_space_constraint_satisfied, phase_space_temperature,
    tremaine_gunn_bound_ev, warm_dm_free_streaming_cutoff_ev,
};

#[test]
fn fermi_dirac_positive() {
    let f = fermi_dirac_dm(1e-24, 0.01, 100.0, 99.0);
    assert!(f >= 0.0);
    assert!(f <= 1.0);
}

#[test]
fn bose_einstein_positive() {
    let f = bose_einstein_dm(1e-24, 0.01, 100.0, 99.0);
    assert!(f >= 0.0);
}

#[test]
fn number_densities() {
    let n_f = number_density_fermionic(0.1, 10.0);
    let n_b = number_density_bosonic(0.1, 10.0);
    assert!(n_f >= 0.0);
    assert!(n_b >= 0.0);
}

#[test]
fn tremaine_gunn() {
    let m_min = tremaine_gunn_bound_ev(10.0, 10.0);
    assert!(m_min > 0.0);
}

#[test]
fn max_density() {
    let q_max = max_phase_space_density_fermionic(10.0, 2.0);
    assert!(q_max > 0.0);
}

#[test]
fn coarse_grained() {
    let q = coarse_grained_phase_space_density(1e-25, 200e3);
    assert!(q > 0.0);
}

#[test]
fn constraint_check() {
    let satisfied = phase_space_constraint_satisfied(1e-25, 200.0, 10.0, 2.0);
    let not_satisfied = phase_space_constraint_satisfied(1e-10, 200.0, 1e-5, 2.0);
    assert!(satisfied || !not_satisfied);
}

#[test]
fn liouville_nfw() {
    let q = liouville_phase_space_density_nfw(1e-25, 200.0);
    assert!(q > 0.0);
}

#[test]
fn warm_dm_cutoff() {
    let m_fs = warm_dm_free_streaming_cutoff_ev(0.001, 1.0);
    assert!(m_fs > 0.0);
}

#[test]
fn king_distribution_positive() {
    let f = king_distribution(-0.5, 1.0, 1e-25);
    assert!(f >= 0.0);

    let f_unbound = king_distribution(1.0, 1.0, 1e-25);
    assert_eq!(f_unbound, 0.0);
}

#[test]
fn isothermal() {
    let f = isothermal_distribution(100.0, 220.0);
    assert!(f > 0.0);
}

#[test]
fn degenerate_pressure() {
    let p = degenerate_fermi_pressure(10.0, 1e-20);
    assert!(p > 0.0);
}

#[test]
fn chandrasekhar_mass() {
    let m_ch = chandrasekhar_mass_fermionic_dm(10.0);
    assert!(m_ch > 0.0);
}

#[test]
fn temperature_positive() {
    let t = phase_space_temperature(1e-25, 200e3, 10.0);
    assert!(t > 0.0);
}