From 14b5cb467932e24354f0b9add94104938a57cc90 Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Sat, 4 Mar 2023 12:22:17 +0000 Subject: [PATCH] Swap LocalRandomWalker to GriddedPosition --- src/system/model.rs | 18 +++++++++--------- src/system/walker.rs | 22 ++++++++-------------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/src/system/model.rs b/src/system/model.rs index d162949..97a68cb 100644 --- a/src/system/model.rs +++ b/src/system/model.rs @@ -9,9 +9,9 @@ use crate::system::storage::{Storage, VectorStorage}; use crate::system::walker::{LocalRandomWalker, Walker}; use serde::{Serialize, Deserialize}; -pub struct DLASystem, W: Walker> { +pub struct DLASystem, W: Walker

> { rng: R, - storage: S, + space: S, walker: W, stick_probability: f32, @@ -29,7 +29,7 @@ pub struct DLASystem, W: Walker> cluster_radius: f32, } -impl, W: Walker> DLASystem { +impl, W: Walker

> DLASystem { pub fn new(rng: R, max_particles: usize, stick_probability: f32) -> DLASystem { let mut sys: DLASystem = DLASystem { rng, @@ -37,8 +37,8 @@ impl, W: Walker> DLASystem, W: Walker> DLASystem self.kill_circle { self.active_particle = None; - } else if !self.storage.at(&next_position) { + } else if !self.space.at(&next_position) { if self.check_stick(&next_position) { self.deposit(&next_position); self.active_particle = None; @@ -91,7 +91,7 @@ impl, W: Walker> DLASystem, W: Walker> DLASystem self.cluster_radius { diff --git a/src/system/walker.rs b/src/system/walker.rs index bb02e33..af72685 100644 --- a/src/system/walker.rs +++ b/src/system/walker.rs @@ -2,20 +2,14 @@ use num_integer::Integer; use rand::prelude::Rng; use crate::system::{GriddedPosition, Position}; -pub trait Walker { - fn walk(&self, rng: &mut R, position: &P) -> P; +pub trait Walker { + fn walk(&self, rng: &mut R, position: &P) -> P; } -pub struct LocalRandomWalker { - dim: u32, -} +pub struct LocalRandomWalker; -impl LocalRandomWalker { - pub(crate) fn new(dim: u32) -> LocalRandomWalker { LocalRandomWalker { dim } } -} - -impl Walker for LocalRandomWalker { - fn walk(&self, rng: &mut R, position: &Position) -> Position { +impl Walker for LocalRandomWalker { + fn walk(&self, rng: &mut R, position: &Position) -> Position { let neighbours = position.neighbours(); let index = rng.gen_range(0..(neighbours.len())); neighbours[index].clone() @@ -25,16 +19,16 @@ impl Walker for LocalRandomWalker { mod test { use rand::rngs::SmallRng; use rand::{SeedableRng, thread_rng}; - use crate::system::Position; + use crate::system::{GriddedPosition, Position}; use crate::system::walker::{LocalRandomWalker, Walker}; #[test] fn uniformity() { - let walker = LocalRandomWalker::new(2); + let walker = LocalRandomWalker::new(); let mut rng = SmallRng::from_rng(thread_rng()).unwrap(); let mut results: Vec = vec![]; - let origin = &Position(0, 0); + let origin = &Position::zero(); let x: u32 = (1_000000_000); for i in 0..x {