Chord Length¶
A chord is a straight line segment that lies entirely in the pore space and ends at solid on both sides. The chord length distribution is the distribution of those lengths along each axis. It's a direct, model-free measure of pore extent, and comparing the three axes is the simplest test for anisotropy: layered, elongated or aligned pores give different distributions along different axes.
- Measures the lengths of straight runs of one phase along X, Y and Z
- Method line sampling on a regular grid, with PoreSpy
- Reports a number-weighted distribution for each axis, and the median chord length \(\ell_{50}\) along X
- How to run it Chord Length in the User guide
Definition¶
For the chords along one axis, \(p(\ell)\) is the number-weighted chord length density of Torquato and Lu:1 the probability that a randomly chosen chord has length between \(\ell\) and \(\ell + \mathrm{d}\ell\). \(F(\ell)\) is the fraction of chords at least \(\ell\) long, falling from 1 to 0, which the app plots as Fraction of chords with larger length. The median chord length \(\ell_{50}\) is where \(F\) crosses 0.5.
Two useful links to other quantities:2
- The mean chord length in the pore phase of an isotropic material is \(\bar\ell_p = 4\varphi / s_v\), where \(s_v\) is the specific surface area (interface area per bulk volume, see interfacial surface area). The chord distribution and the surface area should agree on this.
- A number-weighted chord distribution favours short chords. The volume-weighted version, \(\ell\,p(\ell)/\bar\ell\), weights each chord by its length, the way a pore size distribution weights by volume.
How it's computed¶
- Draw sampling lines through the image on a regular grid, one family per axis, with PoreSpy's chord routine.3 Lines along X lie on the planes \(y \equiv 0\), \(z \equiv 0 \pmod 4\), lines along Y on \(x \equiv 0\), \(z \equiv 2\), and lines along Z on \(x \equiv 2\), \(y \equiv 2\). That's one line every 4 voxels in each transverse direction, offset so the three families don't cross.
- Keep the pore segments. Where a line crosses solid, it breaks. Each unbroken run of pore voxels is one chord.
- Drop chords that touch the image boundary. A chord cut by the edge of the image is shorter than the real one, so it would bias the distribution towards short chords.
- Histogram. Each chord's length is its number of voxels. For each axis, the lengths are binned into \(n_b\) equal-width bins (Histogram bins) from the shortest to the longest chord. Each chord counts once. With \(n_i\) chords in bin \(i\) of width \(\Delta\ell\) and \(n\) chords in total:
Solid phase¶
With the Solid phase, the same analysis runs on the solid instead: chords are runs of solid voxels between pores, measured the same way along each axis. Solid chord lengths describe grain and wall thickness. The mean solid chord in an isotropic material is \(\bar\ell_s = 4(1-\varphi)/s_v\), the counterpart of the pore formula above.
Reading the result¶
- Anisotropy. Curves that coincide on all three axes mean the pores have no preferred direction at the scale sampled. An axis whose curve lies to the right has longer chords: pores elongated, or layers aligned, along it.
- The long tail is short. A chord that touches the image boundary is dropped, and the longer a chord, the likelier it is to touch one. Chords approaching the image's side length are under-counted, so a pore as long as the image barely registers.
- Empty axes. An axis with no complete chords, for example because the image is too thin along it, has no distribution.
- Only X sums the result up. Compare \(\ell_{50}\) along Y and Z from the distributions themselves.
References¶
-
S. Torquato, B. Lu, "Chord-length distribution function for two-phase random media," Physical Review E 47 (1993) 2950–2953. doi:10.1103/PhysRevE.47.2950 ↩
-
S. Torquato, Random Heterogeneous Materials: Microstructure and Macroscopic Properties, Springer (2002). doi:10.1007/978-1-4757-6355-3 ↩
-
J. T. Gostick et al., "PoreSpy: A Python toolkit for quantitative analysis of porous media images," Journal of Open Source Software 4 (2019) 1296. doi:10.21105/joss.01296 ↩