# rs_isl [![Crates.io Version](https://img.shields.io/crates/v/rs_isl)](https://crates.io/crates/rs_isl) [![docs.rs page](https://docs.rs/rs_isl/badge.svg)](https://docs.rs/rs_isl) [![Crates.io Downloads](https://img.shields.io/crates/d/rs_isl)](https://crates.io/crates/rs_isl) [![Crates.io License](https://img.shields.io/crates/l/rs_isl)](https://crates.io/crates/rs_isl) [![CI](https://github.com/KonradKaralus/rs_isl/workflows/Rust/badge.svg)](https://github.com/KonradKaralus/rs_isl/actions) rs_isl is an implementation of Iterative Stencil Loops in Rust. ISLs can be used in a variety of scenarios such as image processing, fluid simulation and the calculation of PDEs. For more information see [Wikipedia](https://wikipedia.org/wiki/Iterative_Stencil_Loops). ## Example This animation was created with [Paraview](https://www.paraview.org/) from the data created by the example [two_waves](examples/two_waves.rs).
## Output rs_isl writes [.vtk](https://vtk.org/) output files to a specified path. Their contents may be defined by the user. To create those files rs_isl uses the [vtkio](https://github.com/elrnv/vtkio) crate. ## Usage ### General ```rust use core::f64; use std::{cmp::max, path::PathBuf}; use rs_isl::*; fn main() { // create a domain with a size of 200 by 100 let dim = (200, 100) // we only access the left neighbour of every cell let neighbours = vec![(-1, 0)]; // take neighbours value, if there is no neighbour decrease by 3 let op = |num: &f32, nb: Vec