Between the Sand

December 05, 2020

Visit Application

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.

sand column (installation)

The sand column from the experiments, on display at the Modern Fuel Artist Run Center, February 2019. Image: Liam RĂ©millard / Garrett Elliott

The residency consisted of three phases. Phase I was the immersive residency, which took place from March 19th to March 30th, 2018. It was followed by Phase II, a SciArt Event held on February 27th 2019, where the work was showcased for the first time as an installation at a local art gallery. Finally, Phase III completes the residency with the release of this interactive work. Between the Sand entered the Polyfield Gallery on December 5th, 2020 to coincide with World Soil Day.

Between the Sand

Screenshot of Between the Sand


A thin layer of sand is packed between two plates of glass. 14 grains thick and illuminated by a powerful backlight, the entire section of sand can be observed at once. The sand was filled with water, and the experiment commenced when gas was injected from a needle located in the lower middle of the column.

close up of sand layer

The top edge of a freshly packed sand column filled with water and awaiting an injection of gas. Image: Owen Fernley

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. The dataset will be used to help predict how gases and fluids travel through porous media.

sand column (lab)

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


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, much like the rivers of space that run between words in a book.

virtual grains

This is one of the original images as coded during the residency. It shows the negative space between the sand, and is the inspiration for what would eventually drive the invasion percolation algorithm (screenshot of development process).


After the residency, I started work on a program that could map these spaces. For this, I used Invasion Percolation. This algorithm follows a grid, where each cell in the grid is assigned an r-value based on the distance between each cell and the nearest grain 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.


Near the end of the residency I had the opportunity to view and photograph the sand used in the experiments using the lab microscope. This microscopic imagery became the source material for the sand in the final work.

microscopic image of sand

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


Available space is broken into cells to determine how each space will be invaded. An r-value describes how invadable a cell is depending on its distance to the nearest sand grain, as well as outside forces such as flow or gravity. This r-value is between 0 and 1, where 1 is an open pathway, and 0 is blocked by sand. The cells r-value is mapped to their alpha value. In other words, cells that are not surrounded by grains of sand are darker, while cells with nearby grains are lighter and less likely to be invaded.

spaces between sand grains

Sparsely positioned sand grains show how the invadability factor or r-valiue of each cell depends on the distance to the nearest grain of sand (screenshot of development process).


In order to determine how invadable the spaces were, the closest sand grain to each cell had to be determined. The linear approach to this would have been to find the minimum distance between every sand grain for each cell. However, there are currently 0 sand grains and 0 cells in this work, which would have meant completing a total of 0 distance calculations. Instead, the distances were determined using the powerful d3-delaunay library, which calculates each distance sub-linearly using Delaunay triangulation.

delaunay triangles

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


If you lay a sand column flat, the contamination will percolate in all directions along the plane of the column. The experiments showed how a gas behaves when it is injected into sand filled with water. This can be simulated by positioning the flow direction upward. Cells at the bottom will now be less invadable, and cells near the top will be darker and more likely to be invaded.

flow direction

Setting the flow gradient dial to the lower right allows invasion percolation to move diagonally across the column while still following the pathways between the sand (screenshot).


The experiments I observed ranged from slow injections that lasted several minutes to high pressure injections that lasted only a second or two after they were initiated. The high pressure injections were impressive, and showed a network of interconnected pathways for a short while before being occluded.


Gas can spread at different rates, depending on its viscosity. 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 mimic different mdeia and materials.


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


The lab is equipped with coloured beads and dyes that can be added to the media used in these experiments. These colours are added to help view certain characteristics, although I often thought the real benefit was the beauty of the resulting images.


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

Visit Application