Between the Sand

May 31, 2019

Web Application Link

Between the Sand
Screenshot of Between the Sand

For two weeks I was immersed in Dr. Kevin Mumford's Research Lab at the Department of Civil Engineering at Queen's University in Kingston, Ontario, Canada. This artist residency was organized, facilitated and hosted in collaboration with Art the Science. During this time, I observed several experiments where gas was injected into a column of sand and compressed between two plates of glass. I created this web application after observing these experiments and speaking with members of the research group, most notably Professor Mumford who guided me through his group's research, and Cole Van De Ven, whose experiments I observed while he conducted his PhD research.

The immersive residency took place from March 19th to March 30th, 2018. It was followed by a SciArt Event on February 27th 2019, at which I showcased this work for the first time. Between the Sand entered the Polyfield Gallery on May 31st, 2019.

sand column (installation)
The sand column as used in the experiments, and seen on display here at Modern Fuel Artist Run Center, February 2019. Image: Liam Rémillard / Garrett Elliott


close up of sand layer
Top of a freshly packed sand column filled with water and awaiting an injection of gas. Image: Owen Fernley

The lab's experiments began by packing a thin layer of sand between two plates of glass. This layer of sand was only about 14 grains thick, allowing for the entire section to be observed once it was illuminated by a powerful backlight. The sand was filled with water, and the experiment commenced when gas was injected from a site located in the lower middle of the column.

sand column (lab)
Raw image from the experiment reveals gas percolating through the sand column. Image: Cole Van De Ven

Each experiment took anywhere from a few seconds to several minutes, depending on the pressure of the gas used. The experiments were video recorded and processed afterward for analysis and integration into a larger dataset. This dataset will be used to help predict and determine how fluids travel through the spaces between sand, both in the lab and, eventually, between layers of underground soil.


Inspired by these observations, I built a code-based approximation of the sand as it appeared in the lab. This led to the creation of Code to Sand, a small project created at the residency to simulate the distribution and colour of the sand column.

While plotting the virtual grains, I noticed how they naturally created channels of negative space between the grains, much like the spaces between words in a book.

virtual grains
Original virtual sand column coded coded during the residency reveals the negative space between grains that were eventually used to drive the invasion percolation algorithm (screenshot of development process).


After the residency, I began creating a program that could contaminate this virtual 2D layer of sand. I used Invasion Percolation, an algorithm infamous in Dr. Mumford's research group for following only known pathways. The algorithm uses a grid that divides up all the available spaces in the sand column into cells. Each cell has an "r"-value that indicates how "invadable" they are in relation to the surrounding grains of sand. Spaces with a low r-value are considered very easy to invade; those with a high r-value are harder to infiltrate.

Between the Sand
Invasion Percolation tests the r-value of each sqaure. Low r-values are lighter in colour and harder to invade. This view tracks the invasion through a grid that is horizontally biased, flowing from right to left.


microscopic image of sand
Sand grains from the experiments, as seen through the lab's microscope. Image: Julia Krolik

The initial code for Between the Sand relied on computer-drawn grains. But at the end of the residency I had the opportunity to view and photograph the sand used in the experiments through a laboratory microscope. I used this microscopic imagery as source material to create sprites for each grain of sand, which are rotated to a unique position in the final work.


spaces between sand grains
The spaces between the sand, coloured florescent pink, each contain an invadability factor depending on how far the space in from the nearest grain of sand (screenshot of development process).

A grid is overlaid on the sand grains to break up the available space into cells and determine how each space will be invaded. Each cell contains information on how invadable it is depending on its distance to the nearest sand grain as well as outside forces such as flow speed or gravity. The shade of each cell represents its invadability. Cells that are not surrounded by grains of sand are darker, while cells nearby sand grains are lighter and less likely to be invaded. The position of each cell is slightly randomized for a more organic look.


delaunay triangles
Delaunay Triangles help to calculate the space between the sand (screenshot of development process).

In order to determine how invadable the spaces were, I needed an efficient way to find the closest sand grain to each cell. The linear approach to this would have been to calculate the distance between every sand grain and every cell, where the smallest distance would denote the closest sand grain. But this method would have been time consuming; there are currently 4489 sand grains and 62,500 cells in the work, which would have meant completing a total of 280,562,500 distance calculations. Instead, I determined the distances using the powerful d3-delaunay library, which calculates each distance sub-linearly using Delaunay triangles.


flow direction
Setting the flow gradient to the upper left allows invasion percolation to move towards bottom right of column (screenshot of development process).

The flow direction can be adjusted using the central dial in the control panel. If you lay a sand column flat, the contamination will percolate in all directions. The experiments I observed showed how a gas behaves when it is injected into sand filled with water. As gas is more buoyant than water, it travels upward from the point of injection to the top of the vertical sand column. This can be simulated by positioning the dial upward. Doing so will add a gradient on top of the invadability of each cell. With the dial positioned upward, cells at the bottom will be less invadable and lighter in shade. Cells near the top of the sand column will be darker and more likely to be invaded.


Different diffusion settings were used to create this invasion percolation pattern (screenshot of development process).

The experiments I observed ranged from slow injections that lasted several minutes to high pressure injections that lasted only seconds after they were initiated. The high pressure injections were impressive, and showed us a network of interconnected pathways that built up against the column wall for only a short while before being occluded. The amount of pressure affects the flow speed, which changes how fast the gas moves through the sand.

During the residency, we used the same sand, fluid and gas combination for all our experiments. However, gas can spread at different rates, depending on the pressure and viscosity of the fluid used. For example, sand could be filled with oil instead of water, or injected with creosote instead of gas. In this simulation, adjusting the diffusion dial can approximate these different effects. Turning the diffusion down to zero results in a spotted effect, which is comparable to the effect of increasing the viscosity of the injected fluid.


Laboratory image of sand grains after being dyed purple. Image: Cole Van De Ven

While the experiments I observed were not coloured, the lab was equipped with coloured beads and dyes that could be added to the media. These colours were added to help us to better view certain characteristics, although I often thought the real benefit was the beauty of the resulting images.

Web Application Link