
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
- Define a reaction network using the friendly DSL provided by Catalyst.jl:
reaction = @reaction_network begin
γ*a + γ*U^2*V, ∅ --> U
γ, U --> ∅
γ*b, ∅ --> V
γ*U^2, V --> ∅
end
- Add some diffusion coefficients:
diffusion = @diffusion_system L begin
Dᵤ, U
Dᵥ, V
end
model = Model(reaction,diffusion)
- Explore the parameter space using the interactive visualisation tool. Slide parameters around and watch the patterns change in real-time.
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)

- Run a parallelised ensemble simulation over an interesting subset of parameter space:
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 are very welcome.