What this is about
We have found a way to "see" the forces that are exerted between each grain, in full 3D, while the whole packing is subject to transformation. Take the example of trucks passing on a road every day. The packed peebles comprising the road are repeatedly compressed, again and again. They move slowly, until the road is permanently deformed. But it is next to impossible to place a sensor between each grain and monitor how the road deforms. Computer simulations may be performed to access internal variables, but these rely on simplified models that are necessary to compute a solution in a reasonable time. Hence, nobody has a definite answer for what really happens at the grain level: we can only monitor the global changes, not the local ones. This is where our new work has a major impact: we can at the same time apply some transformations on the packing (e.g. repeated compression) and measure the forces between each grain. Of course, we have to take special grains: transparent ones, which we illuminate with a laser sheet (see the sketch). As we move the laser within the packing, we take pictures of the inside of each grains (see the ones embedded in the 3D visualization). Joshua Dijksman and former members of the group lead by Robert Behringer built the experimental apparatus. I have designed and implemented the algorithms necessary to put all the images together in this special context (accounting for noise, artifacts, etc), reconstruct the grain surfaces, compute their deformations and then get the 3D force vectors. Of course other tomographic techniques exist (e.g. X or gamma Rays, confocal microscopy…) but ours is the first to be cheap, very safe, allow easy manipulation of the sample even while scanning, as well as provide accurate force information at all contacts.
Article, data and software
Data used in the article is also freely accessible (≈ 420 MB). Surface shape coefficients were excluded to save space and reduce the server load. They are not at all necessary for most uses (forces and all other derived information are provided). If you really need the shape information (e.g. for visualizing specific grain surfaces), open this page html source and you will find the link to a ≈ 2.8 GB file. Please download this only if you need.
The source code is available in my source repository. I consider this project finished so the code should not change but, should this happen, the latest version can be downloaded either as a tar.gz archive, or by using GIT: git clone git://nicolas.brodu.net/scan. You will need a recent C++ compiler as well as a few of the most common support libraries (boost...).