(
geometries: G,
field: &'v VectorField,
timestep: f64,
num_timesteps: usize,
random_timesteps: bool,
rng: &'v mut StdRng,
streamline_kind: StreamlineKind,
record_strea
| 259 | |
| 260 | #[allow(clippy::too_many_arguments)] |
| 261 | fn simulate<'v, G>( |
| 262 | geometries: G, |
| 263 | field: &'v VectorField, |
| 264 | timestep: f64, |
| 265 | num_timesteps: usize, |
| 266 | random_timesteps: bool, |
| 267 | rng: &'v mut StdRng, |
| 268 | streamline_kind: StreamlineKind, |
| 269 | record_streamlines: bool, |
| 270 | ) -> impl Iterator<Item = (Geometry, Vec<LineString>)> + 'v |
| 271 | where |
| 272 | G: IntoIterator<Item = Geometry>, |
| 273 | G: 'v, |
| 274 | { |
| 275 | geometries.into_iter().map(move |g| { |
| 276 | let num_timesteps = if random_timesteps { |
| 277 | let n = num_timesteps * 2; // changes mean |
| 278 | let p = 0.5; // changes skew |
| 279 | let dist = Binomial::new(n as u64, p).unwrap(); |
| 280 | dist.sample(rng) as usize |
| 281 | } else { |
| 282 | num_timesteps |
| 283 | }; |
| 284 | simulate_geometry( |
| 285 | g, |
| 286 | field, |
| 287 | timestep, |
| 288 | num_timesteps, |
| 289 | streamline_kind, |
| 290 | record_streamlines, |
| 291 | ) |
| 292 | }) |
| 293 | } |
| 294 | |
| 295 | fn simulate_geometry( |
| 296 | geometry: Geometry, |
no test coverage detected