Add DiagonalWalkera and fix 3D KD grid

This commit is contained in:
2023-03-10 15:28:42 +00:00
parent 73bb0f8ed1
commit 10c7450c8a
9 changed files with 90 additions and 100 deletions
+22 -9
View File
@@ -2,7 +2,6 @@
#![feature(generic_const_exprs)]
#![feature(let_chains)]
use std::ops::Deref;
use clap::Parser;
use rand::prelude::*;
use crate::cli::{drive_system};
@@ -12,12 +11,12 @@ use crate::surface_probability_measure::{LoggerSticker, ReadOnlyVectorStorage};
use crate::system::model::DLASystem;
use crate::system::spaces::continuous::{ContinuousSticker, ContinuousStorage, ContinuousWalker};
use crate::system::spaces::hexagonal::HexPosition;
use crate::system::spaces::kd_grid::{KDGrid, KDGrid2Sticker};
use crate::system::spaces::kd_grid::{KDSpace};
use crate::system::spaces::square_grid::{Grid2D, Grid3D};
use crate::system::spaces::VectorStorage;
use crate::system::spawner::UniformSpawner;
use crate::system::sticker::{ProbabilisticSticking, SimpleSticking};
use crate::system::walker::LocalRandomWalker;
use crate::system::walker::{DiagonalRandomWalker, LocalRandomWalker};
mod system;
mod surface_probability_measure;
@@ -49,7 +48,7 @@ fn main() {
VectorStorage::new(grid_size, 2),
LocalRandomWalker,
UniformSpawner,
ProbabilisticSticking { stick_probability },
ProbabilisticSticking::new(stick_probability).unwrap(),
cli.max_particles,
);
@@ -58,12 +57,26 @@ fn main() {
}
PCM::Grid3KD(StickProbabilityCli { grid_size, stick_probability }) => {
let mut sys = DLASystem::<_, Grid2D, _, _, _, _>::new(
let mut sys = DLASystem::<_, Grid3D, _, _, _, _>::new(
SmallRng::seed_from_u64(cli.seed),
KDGrid { inner: kiddo::KdTree::new() },
KDSpace::new(),
LocalRandomWalker,
UniformSpawner,
KDGrid2Sticker { stick_probability },
ProbabilisticSticking::new(stick_probability).unwrap(),
cli.max_particles,
);
drive_system(&mut sys, cli.max_frames, cli.notify_every);
write(&sys, cli.format, &cli.output);
}
PCM::Grid3KDTsang(StickProbabilityCli { grid_size, stick_probability }) => {
let mut sys = DLASystem::<_, Grid3D, _, _, _, _>::new(
SmallRng::seed_from_u64(cli.seed),
KDSpace::new(),
DiagonalRandomWalker,
UniformSpawner,
ProbabilisticSticking::new(stick_probability).unwrap(),
cli.max_particles,
);
@@ -77,7 +90,7 @@ fn main() {
VectorStorage::new(grid_size, 3),
LocalRandomWalker,
UniformSpawner,
ProbabilisticSticking { stick_probability },
ProbabilisticSticking::new(stick_probability).unwrap(),
cli.max_particles,
);
@@ -91,7 +104,7 @@ fn main() {
VectorStorage::new(grid_size, 2),
LocalRandomWalker,
UniformSpawner,
ProbabilisticSticking { stick_probability },
ProbabilisticSticking::new(stick_probability).unwrap(),
cli.max_particles,
);