physics_in_parallel 4.0.0-alpha.1

High-performance infrastructure for numerical simulations in physics
Documentation
use physics_in_parallel::prelude::basic::{
    ResolvedRng, RngMethod, VectorSamplingMethod, set_max_threads,
};
use physics_in_parallel::prelude::models::{
    ATTR_R, ParticleSelection, Spring, SpringNetwork, create_template, randomize_r,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    set_max_threads(Some(4))?;

    let mut particles = create_template(2, 2)?;
    let rng = ResolvedRng::new(42, RngMethod::IndexedSplitMix64);
    randomize_r(
        &mut particles,
        VectorSamplingMethod::Uniform {
            low: -1.0,
            high: 1.0,
        },
        rng,
    )?;

    let mut springs = SpringNetwork::new();
    springs.insert((0, 1), Spring::new(1.0, 0.5, None)?)?;
    springs.apply(&mut particles, ParticleSelection::AliveOnly)?;

    println!("positions: {:?}", particles.attribute::<f64>(ATTR_R)?);
    Ok(())
}