Polyps: Double Diffusion Model

This is a diffusion model that is a form of Laplacian growth function. But rather than one diffused chemical (creating a thin tree) it uses two, so generates a thick tree with one chemical diffusing inside (orange) and one diffusing outside (black).

It reminds me of polyps, or some other sea life growing on a coral reef. In the sequence to the left you can see a new polyp forming and fanning out. This isn't unusual, it is the main means by which the boundary changes over time. 

The two chemicals concentrations are always zero at the boundary, and the boundary growth is a function of the the gradient b of the chemical B (outside) and the gradient r of the chemical R (inside) such that:

          growth rate = (br-1)(b-r)

The second term in this product is a signed version of Laplacian growth, so when the first term is positive it makes the boundary more rough, and when the first term is negative it makes the boundary more smooth. The result is that smooth boundaries are unstable once a sufficient chemical gradient has built up. But also, it seems that fixed boundaries are also unstable, the simulated results are always moving, with new 'polyps' growing or shrinking away.

We can think of the above function physically by rearranging it to:

          growth rate = (r - b) + (rb2 - br2)

This can be interpreted in terms of individual molecules making up the chemicals. We can draw r and b as red and blue dots respectively.

Let's look at the (r-b) term first.

It is as though the blue molecule (b) in the water is corrosive, and dissolves the polyp surface on contact, whereas the red molecule in the polyp (r) is constructive, and converts to polyp matter when it touches the surface, extending the surface a little. The result is a smoothing effect: b corrodes fastest on convex parts because there is a higher gradient (more molecules surrounding) the convex part. r builds quickest on concave parts in the same way. As well as smoothing the surface, it makes the surface move to an equilibrium, half way between the source of each chemical. 

The (rb2 - br2) term is another story however. It plays a role when there is enough chemical concentration that the squared terms are significant. It means that whenever two b meet one r, it generates a piece of polyp, so convex parts get more convex. Conversely, when two r molecules meet one b, it corrodes the surface, so concave parts get more concave. It makes the surface rougher.

The interplay between roughness and smoothness depends on the concentrations. In the left sequence, the new polyp grows very quickly, into where b is concentrated. The result is that the rb2, term dominates, causing fast growth. But it is kept in check by the -b term, wherever the polyp grows too quickly the r diffusion can't keep up and the rb2 factor drops off. The result is that the fast growing polyp remains smooth.


As the polyp grows from a bump into a protrusion with a neck, the r concentration reduces, so the rb2 term subsides and the growth slows. Consequently the r molecules have more time to diffuse inwards, and the b molecules have time to be absorbed, so the new polyp then returns to its unsteady balance, and regains its roughness.

You can view this model in action on Shadertoy here.