Talk:Reaction–diffusion system

This is an important concept which needs work
Reaction-diffusion systems, reaction-diffusion models, and the reaction-diffusion equation are very important concepts. We definitely need a good article about these. For now, I redirected reaction-diffusion system and reaction-diffusion equation to reaction-diffusion, as I think this article can explain them all. Oleg Alexandrov (talk) 00:34, 28 January 2007 (UTC)

Extension of the article
I made a large number of changes and extensions to the article.

Some important points are the following:

From a systematic point of view, it seems more reasonable to distinguish between the number of components of the reaction-diffusion system rather than the spatial dimension although the latter also plays a role for the existence of certain phenomena.

Concerning one-component systems, I added some mathematical details on the existence of a Liapunov functional as well as on stability considerations. Maybe I could plot an image of the mechanical analogue of one-component 1d systems.

Two-component systems, in particular the important Turing instability, are now treated in more detail. I had to adapt the original formulae a bit to match the new ones, but there are no drastic changes. The two new galleries for the Turing instability and other patterns should hopefully make the results more illustrative. Should I give the parameters for the calculation?

I also extended the Applications section. In the part Experiments I added comments on "real life" reaction-diffusion systems. I am not entirely sure whether the sentence "Simple reaction–diffusion-like patterns can be generated in many image editing programs by repeated applications of sharpening and blurring" is not misleading, so I took it out. The described procedure of repeated Fourier filtering and potentially other operations (diffusion = multiplication with -k^2) will probably not lead to a true reaction-diffusion-like process, but maybe some expert can comment on this point.

Last but not least, a number of reference was given, it would certainly be nice if additional ones could be added.

Dr. Hendrik U. Boedeker 13:50, 6 July 2007 (UTC)


 * That's excellent, well done. Yes, I do think that you should give the parameters. It should be possible for others to reproduce the picture. Personally, I'm curious about the details of the computation because I'm evaluating different methods for simulating RD systems: what numerical method did you use? What grid size? (Very roughly) how long did the computation take and up to which t did you integrate?
 * But most importantly, thanks very much for your contribution. -- Jitse Niesen (talk) 21:45, 6 July 2007 (UTC)

Alright, I will add the parameters at the beginning of next week when I am back at my institute. I used Comsol 3.3 to produce data for the figures. The program has an adaptive time step selection such that the calculations in 2d take about 2 to 30 minutes on a 3GHz Xeon processor with 4 GB RAM, depending on whether the system converges to a stationary state or not. I used about 20000 nodes for the finite element discretisation. In addition, I also checked the results by comparing with self-written C code using a finite-difference scheme and code I wrote in Matlab (basically, I only exploited the functions for the inversion of tridiagonal matrices). As I did not yet have time to implement an adaptive time step control into my code in either case, the calculation naturally took significantly longer, in particular in Matlab. An implicit time stepping method brought an improvement by about a factor of 3, but Comsol is still faster. I found however that a great advantage of the self-written finite-difference scheme is that spatio-temporal fluctuations are much easier to implement, in particular if one is interested in quantitative results depending on their properties. In this case, I was forced to use an explicit time step procedure for stochastic integration. I hope that could help you a bit. Best,

Dr. Hendrik U. Boedeker 15:06, 7 July 2007 (UTC)

Jitse Niesen reverted my addition of a reaction-diffusion-like image, with the comment: "just because the pictures look similar does not mean that there is a connection (also see talk page); if there is a connection, then please provide a reference)"

Sorry about that Jitse, I thought that looking similar was all that was required to be an example of "reaction-diffusion-like"?

I don't think there is any academic literature about this out there (it's just something I figured out myself) so maybe it will have to stay off the RD page. I wonder if I might instead add it to the 'pattern formation' page though?

Danwills 08:46, 5 September 2007 (UTC)


 * The main reason why I removed it is that Hendrik removed a similar text before, as he says above (by the way, I wanted to remove both the picture and the text). I think that the Gaussian blur can be considered as diffusion, but the sharpening does not seem to have the form of a reaction term. I guess you could put it in pattern formation, though I would be happier if there were actually a source to go with it (and I think it's quite likely there is a paper on this, though I cannot find one quickly). -- Jitse Niesen (talk) 12:30, 5 September 2007 (UTC)


 * Ah no worries.. you're certainly correct that sharpening is different from reaction in RD, though obviously that isn't very important in terms of pattern formation because it still generates the same kind of "turing pattern". I will put a 'computer graphics' section on pattern formation and link the image there instead. Thanks for your rigor Jitse! -- Danwills 06:34, 6 September 2007 (UTC)

Underline or bold?
I am a molecular biologist so I may be wrong but in the intro the diagonal matrix is underlined and I was under the impression when you write on paper and pen you underline as making the character bold would require a thicker pen, which is instead done when typed. --Squidonius (talk) 17:09, 19 May 2008 (UTC)
 * I think it refers to a tensor but then it should have a double line. I will try changing it. --kupirijo (talk) 16:44, 13 February 2010 (UTC)

Laplacian Notation
In the reaction diffusion equation, I noticed that the delta symbol is used to represent the laplace operator (or so I believe). I think the inverted delta symbol squared, or "Del Squared" is a more unambiguous notation, and would lead to less confusion. Before I realized this, I was rather confused, and I think it likely that I'm not the only one out there who would be confused by this. —Preceding unsigned comment added by Danielkwalsh (talk • contribs) 11:39, 14 July 2008 (UTC)


 * Perhaps; I don't know. However, I added a remark that \Delta denotes the Laplace operator. -- Jitse Niesen (talk) 12:11, 14 July 2008 (UTC)


 * Would anyone mind if I changed the notation? That would give the equation

\partial_t \boldsymbol{q} = \underline{\boldsymbol{D}} \nabla^2 \boldsymbol{q} + \boldsymbol{R}(\boldsymbol{q}), $$

The original delta symbol could be confused to have the meaning "change in" so I think the del squared operator is clearer. —Preceding unsigned comment added by Danielkwalsh (talk • contribs) 19:34, 30 July 2008 (UTC)
 * Done. --kupirijo (talk) 01:25, 20 November 2009 (UTC)

Reference issue in Experiments section
There has been a long-term error on a reference in the Experiments section. There are two ref tags in a row, and I am wondering if a reference got lost. It's actually been like this ever since Huboedeker's edit of 2007-07-06 when this section was introduced, and has never been fixed. I left a message on Huboedeker's user page, but that user hasn't logged in in 2008.--Larrybob (talk) 22:26, 22 October 2008 (UTC)


 * I closed the ref tag, because I'm pretty confident that that is what Huboedeker meant. The reference (FitzHugh 1961) is to one of the papers introducing the FitzHugh–Nagumo model, which makes perfect sense at that location. -- Jitse Niesen (talk) 10:42, 23 October 2008 (UTC)


 * Thank you very much for closing the tag, I should have realized earlier. I would have done it myself, but was a bit busy recently. Dr. Hendrik U. Boedeker (talk) 13:03, 25 November 2008 (UTC)

Solutions?
This is all very interesting information, but the article contains no information whatsoever about how to _solve_ reaction-diffusion systems which is frustrating for people who go here to find that information rather than information about bifurcations and stability. I'm here to find information about solutions, as I'm sure many others are interested in, so it would be super-great if someone with know-how could add that! —Preceding unsigned comment added by 193.157.203.57 (talk) 11:18, 10 October 2010 (UTC)

G'day IP-address identified person :) I've got a bit of experience in implementing reaction diffusion, but only Gray Scott (GSRD). If what you are talking about is essentially the recipe (in pseudocode, say) for how to get a simulation going, I think I could try to provide a rough version. At least, by combining this with the info on Robert Munafo's xmorphia-revived site you should have a good start. So, here's a draft of what that would look like:


 * Build cells to run the simulation on. All they really need are values for the reagents (two floats, u and v) and information about connectivity. In other words, a neighborhood must be specified that identifies which cells are neighbors of any given cell. The connectivity need not limited to the types of connectivity allowed in a polygon mesh, but polygon meshes are certainly in good supply these days, so you may well want to choose one to run a simulation on. I often use a polygon grid to solve the traditional 2-dimensional RD patterns.


 * Initialize the values of the reagents. For Gray-Scott RD, I use a background of 'u' values with softish 'holes' (zero-value zones) in it, and a fringe of 'v' values around these 'u' holes. I visualize this with u as red and v as green, and it looks like black dots with a fringe surrounding them in green, on a red background.


 * In order to begin, you also need to select values for the two parameters of the simulation, F and k. It is interesting to allow these values to vary across the simulation, but you can pick single float values for them in order to get the same behavior accross the simulation space. Easily one of the best ways to do this is to use Robert Munafo's Xmorphia map, and get F and k values from the spot that has the pattern that you want to simulate.


 * Now you are ready to go into a feedback loop with the cells, where you apply the RD operation, then apply it to the result of that, and to the result of that, and so on. Do this until you have enough frames, or you have reached some resulting state that you're after.


 * The GSRD operation requires that you take the laplacian (the upside-down triangle in the formulas on Robert Munafo's site), which may sound tricky (certainly took me a little while to get it) until you realize that it is just the sum of differences between a value in a cell, and the value at all of its neighbors. There is weighting and normalization that can be done to the operation to improve it's fidelity and usability, but it works for me just using a simple: For each neighbor: Add the difference (cellVal-neighborVal) to a summation variable. I also provide a user-controllable scaling factor, in case the mesh has unusual connectivity.


 * If neccesary, make a buffer in which to store all the new cell values. Then, for each cell make the laplacian values (both for u and v) and then assign new values for u and v using the following, fairly simple to implement formulae:
 * next u:-> laplacian (of u) - uv^2 + F(1-u)
 * next v:-> laplacian (of v) + uv^2 - (F + k)v

I hope that this is helpful to someone, and if anyone wants to tidy this up or add to it and potentially put it on the page, that would be totally fine. I realize it's rough at the moment, but I just wanted to put it out there.

Incidentally, here are some of my experiments with Gray-Scott RD in SideFX houdini apprentice:


 * 

Danwills (talk) 16:59, 11 July 2012 (UTC)

x and y coordinates?
The figure axes are labelled "coordinate x" and "coordinate y", but there is no "coordinate y" in the equations. What are the independent (axis label) variables and what is the dependent variable (quantity that is colour-mapped) in these figures? 60.234.248.40 (talk) 10:13, 13 June 2011 (UTC)

Clicking onto the figures, the respective equations are shown, containing the Laplacian (here, in two dimensions, x and y). The color-coded quantity is the variable u in the two-component Fitzhugh-Nagumo equation.

Dr. Hendrik U. Boedeker (talk) 14:54, 29 December 2012 (UTC)

typo on a parameter
In the example there is a parameter which is written first kappa and then kappa_3 (in the analysis of the linear stability region) 94.7.155.115 (talk) 11:56, 12 May 2012 (UTC)

The index 3 was removed from "kappa_3" to have a consistent variable naming.

Dr. Hendrik U. Boedeker (talk) 14:46, 29 December 2012 (UTC)

But does the model actually apply to biology?
Mathematical Reaction–Diffusion systems are frequently used as a model to explain morphogenesis in biology (seed head geometry (see also Fibonacci Phyllotaxis), giraffe, leopard, and zebra skin patterns, butterfly wing coloration patterns, etc.). These examples were and are a primary inspiration in studying R-D systems.

Yet none of the articles on this topic I found, including this WP article and The Chemical Basis of Morphogenesis, explore whether the model actually is the one used, that is, whether there are actual chemicals and biological mechanisms that implement the R-D mathematics in e.g. generating the colorful skin patterns of giraffe.

This should be stated in the article. It is an important limitation of the practical effects of the R-D theory and may indicate that some other mathematics are at work. I am adding this note here so that someone with expertise in this area can add citations showing that R-D systems have or have not been found in the biological systems that inspired them.

Note that Reaction-Diffusion mathematics, as well as Automata Theory, are apparently the actual mechanism of the pattern-forming chemical reactions known as Belousov–Zhabotinsky reactions. The question raised here is whether or not the same applicability obtains in biology. It seems a natural question that an encyclopedic article should address. David Spector (talk) 18:35, 26 June 2011 (UTC)

Yes, Reaction-diffusion is now recognized as applying to biology
I don't work in academia but I do read papers from time to time. The two referenced below seem to indicate (and other things I have read seem to make it quite concrete) that RD is a good model for some biological phenomena, including giraffes/fish and phyllotaxis/fibbonacci spirals (the PennyBacker link). I suspect that in fact this class of simulations can go far deeper than that as well, check out the quantum-mechanics sims in Ready under Patterns/Schrodinger1926!).

The BZ-reaction is only one point of evidence towards the idea that diffusing molecular reactions can behave in a way that can be modelled by an RD-like simulation. Take the wave-equation for example though, no-one argues that that is not a good model for how waves propagate (example in Ready/Patterns/wave_equation.vti).

I think that this article should be expanded to include some indication of now fairly well recognized links between RD-like simulations (including automata and abstract/graph-automata ie neural architectures) and our tissues (esp. brains) and the universe.


 * 
 * 
 * 

Edit: forgot to sign. Added another relevant link.

Danwills (talk) 13:03, 21 May 2019 (UTC)