Cracks in soil, ice, coatings etc. tend to grow in a characteristic pattern that can be readily simulated. Slide the NSteps slider from small to large to see how the cracks progress from early beginning, then explore the effects of the other settings as you get a feel for what is going on. This is version 0.9 - previous versions had more artefacts.
When many systems such as soil or coatings transition from wet to dry, cracks can start to appear, with a familiar semi-regular shape. The general rules that control these shapes are well-known, but providing a convincing simulation is not so easy. Fortunately a relatively straightforward technique from Horgan and Young1 provides a reasonable simulation that allows you to change the key parameters that affect the crack pattern. A brief summary now follows. More technical details come at the end, after an excursion into the physics behind the cracking.
The algorithm goes in 3 stages. First, N0 cracks are made to start at random positions. For ease of programming, I have started them at the edges, but the end result is no different. Indeed, the number you choose (3, 4, 5 ...) also doesn't make much difference to the final result, so default to 3 or 4
These original cracks move along by length δl at each timestep. They move at an angle θ which varies randomly by a maximum of ±α (in radians). If a tip finds itself within a distance of less than b to another crack, it is attracted to that crack, changing angle so that it intercepts that crack at 90° - and terminates. The rate at which is changes is controlled by a. The effects of changing b and a aren't as dramatic as you might imagine. The cracks also terminate if they reach the edge of the square.
Once the original cracks have finished, individual cracks appear at random from an existing crack - always starting at right angles and then following the same rules as before.
These secondary cracks keep appearing, one by one, till the the open areas meet a size controlled by A1. We then get to the final phase.
Cracks now appear at an edge that is closest to the centroid of whatever is the largest open area. It starts at right angles and continues as normal. The whole process finishes when the smallest open area is less than A2.
Not in the original algorithm is the possibility of cracks initiating in the middle of a void with a 120°, 3-way pattern.
As the mud or coating dries out, unless the whole material can readily flow to fill the voids created by the missing solvent, stresses appear. At some point these stresses are large enough to initiate a crack at some random point, perhaps triggered by a bubble or some other sort of pre-defect. If you imagine the stresses created by pulling on the left and right sides of the image, clearly the crack will move vertically, its direction shifting somewhat as your stresses are unlikely to remain exactly 50:50 left:right. So the crack movement is always normal to the stress field.
Now imagine your crack approaching another crack that happens also to be more-or-less vertical. The left-right stresses have already been relaxed by the opening of that crack, so the maximum remaining stresses are normal to the old crack. This means that your advancing crack will start turning towards the old crack and reach it at right angles, keeping the maximum stresses to the end.
Near the start of the process, stresses are everywhere so new cracks can appear anywhere - except that they will start at an existing defect - which means they will start on an existing crack. Of course they will start at 90°, because the stress field is stronger parallel to the old crack.
As the process continues, new cracks will tend to start in those areas with the most residual stress, i.e. in the larger open areas but, of course, still starting on an existing crack, but one most likely to be near the centroid of that large area. Hopefully you can now see why Horgan and Young's algorithm makes sense.
In a perfectly uniform medium, the crack would just run along smoothly, more or less straight, following the global stress field. In real media with irregularities, the crack will tend to go in jerks, and each jerk will go in a slightly different direction. The α value is supposed to capture the jerkiness of the system - a low value gives straighter lines, a higher value gives more jagged patterns. Currently higher values tend to give unconvincing curvier effects. Hopefully that can be fixed in a future version.
If you have a large uniform stress across a large area, and if you have a weak spot such as a bubble, the easiest way to release the stress energy is by creating a 3-way crack at 120°. But for this to happen it needs to be hard for single cracks to start, and it turns out that thinner systems or ones which are less able to slip on the lower interface are more likely to show the 120° behaviour.
More on the Algorithm
The 120° cracks appear with increasing probability as the Prob-120 values is increased. Gradually the % 90° joins decreases and 120° increases, just as is observed experimentally as one, for example, reduces the thickness of the mud or coating and/or increase the friction of the underneath of the stressed material. The effect is plausible but finding an algorithm to produce an exact match to experiment has proved a challenge.
Although the process is random, if each time you vary a parameter everything starts at random, it's very hard to see the effects of each change. So each simulation starts with the same random seed. If you want to see a different random arrangement with your current settings, click the Randomize button. This sets another seed which gives you another controlled set till you click Randomize once more.
NSteps and Time-out
With some settings, and with large NSteps settings, the simulation might take too long. Of course, the simulation might have ended before reaching NSteps and in a timescale that causes no problems. But when you first start exploring, keep NSteps and Time-out relatively low (5000 and 0.5 respectively). If the simulation stops too early (i.e. with some unterminated cracks) then increase either parameter cautiously. You always get to see the actual NSteps and Time in the text box.
1G.W. Horgan, I.M. Young, An empirical stochastic model for the geometry of two-dimensional crack growth in soil, Geoderma 96 2000. 263–276