# \[ANN\] ReactionDiffusion.jl v1.0.0 - Simulation and visualization for 1D reaction-diffusion systems

**URL:** <https://discourse.julialang.org/t/ann-reactiondiffusion-jl-v1-0-0-simulation-and-visualization-for-1d-reaction-diffusion-systems/139041>\
**Category:** Package Announcements\
**Tags:** package, announcement, pde, biology, modelling\
**Created:** [August 25, 2026, 6:36pm UTC](https://discourse.julialang.org/t/ann-reactiondiffusion-jl-v1-0-0-simulation-and-visualization-for-1d-reaction-diffusion-systems/139041 "2026-08-25T18:36:45Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![homocarbonis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/homocarbonis/32/223614_2.png) [@homocarbonis](https://discourse.julialang.org/u/homocarbonis)\
**Post date:** [August 25, 2026, 6:36pm UTC](https://discourse.julialang.org/t/ann-reactiondiffusion-jl-v1-0-0-simulation-and-visualization-for-1d-reaction-diffusion-systems/139041/1 "2026-08-25T18:36:45Z")

</div>

![image](https://global.discourse-cdn.com/julialang/original/3X/7/b/7b9ba42c3e2d77e97687d70a1f0c52045607dbbd.png)  
I’d like to announce a brand new version of ReactionDiffusion.jl, a general purpose toolkit for anyone interested in modelling reaction-diffusion systems on a 1D domain. This release builds on the design of its predecessor but has been rewritten to make use of high-performance solvers and interactive plotting tools.

### Typical usage

1. Define a reaction network using the friendly DSL provided by Catalyst.jl:

```julia
reaction = @reaction_network begin
    γ*a + γ*U^2*V, ∅ --> U
    γ, U --> ∅
    γ*b, ∅ --> V
    γ*U^2, V --> ∅
end

```

1. Add some diffusion coefficients:

```julia
diffusion = @diffusion_system L begin
    Dᵤ, U
    Dᵥ, V
end

model = Model(reaction,diffusion)

```

1. Explore the parameter space using the interactive visualisation tool. Slide parameters around and watch the patterns change in real-time.

```julia
params = dict(a = 0.2, b = 2.0, γ = 1.0, Dᵤ = 1.0, Dᵥ = 50.0, L=100.0)
num_verts=64 # Balance performance against your tolerance for ugly jagged plots.
dt=0.04 # The GUI currently struggles if dt isn't small enough to avoid any instabilities.
interactive_plot(model, params; normalise=true, num_verts, dt)

```

![20260825-1811-42.2419634](https://global.discourse-cdn.com/julialang/original/3X/7/0/70f7db9348396b1d193c4bad3ffa0ff01db44469.gif)

1. Run a parallelised ensemble simulation over an interesting subset of parameter space:

```julia
params = product(a = range(0.0,1.0,20), b = range(0.0,5.0,20), γ = [1.0], Dᵤ = [1.0], Dᵥ = [50.0], L=[50.0])
turing_params=filter_turing(model,params) # Select only parameter sets which give rise to Turing instabilities.
sol = simulate(model, turing_params)

```

### Features

- Intuitive model specification thanks to the Catalyst.jl chemical modelling language.
- High-performance solver design based on pseudo-spectral discretisation and exponential-time differencing methods provided by OrdinaryDiffEqExponentialRK.jl.
- Interactive animated plotting interface show how the system responds to changes to parameter values in real time.
- Automatically identify Turing instabilities.
- Convenient wrapper for running simulations, both individually and in ensemble via SciML’s `EnsembleProblem`.

### Coming soon

- Black box parameter optimisation.
- Benchmark tools
- Make it go even faster!

Enjoy making Turing patterns!  
[Bug reports](https://github.com/hiscocklab/ReactionDiffusion.jl/issues) are very welcome.
