Skip to content

Radial Density

The radial density distribution is the distribution of distance to the nearest solid over the pore space: how far a randomly chosen point in the pores is from the nearest wall. It's Torquato's pore size density function,1 and it governs anything that depends on wall proximity: surface reaction, NMR relaxation and the near-wall slowdown of flow.

  • Measures the distance from every pore voxel to the nearest solid, or from every solid voxel to the nearest pore
  • Method Euclidean distance transform and a histogram, with PoreSpy
  • Reports the distribution of distance, and its median \(r_{50}\)
  • How to run it Radial Density in the User guide

Definition

With \(d(\mathbf{x})\) the Euclidean distance from pore point \(\mathbf{x}\) to the nearest solid point, and \(\mathbf{x}\) uniform in \(\Omega_p\):

\[ F(r) = \Pr\bigl[\, d(\mathbf{x}) > r \,\bigr], \qquad P(r) = -\frac{\mathrm{d}F}{\mathrm{d}r} , \]

so \(F(r)\) is the fraction of pore volume farther than \(r\) from solid, and \(P(r)\) is its probability density. The app plots \(F\) as Fraction of pore volume with larger distance to solid against Distance to solid. The median distance \(r_{50}\) is where \(F\) crosses 0.5.

The distribution for a 120³ synthetic sample, porosity 0.55, run through PoreStore's own analysis code. On a voxel grid, distances take only the values 1, √2, √3, 2, √5, …, so each one-voxel bin gathers the few of these values that round to its centre.

How it's computed

PoreStore histograms \(d(\mathbf{x})\) over every pore voxel with PoreSpy's radial density distribution2 and reports:

\[ P(r_i) = \frac{n_i}{N_p\,\Delta r},\qquad F(r_i) = \sum_{j \ge i} P(r_j)\,\Delta r , \]

where \(n_i\) is the number of pore voxels in bin \(i\), \(N_p\) the number of pore voxels and \(\Delta r\) the bin width.

The bins are the pore size distribution's: centred on whole distances, with edges halfway between, one bin per voxel (\(0.5, 1.5, 2.5, \dots\) voxels) up to the largest distance in the image. If that would take more than 200 bins, every bin widens to the smallest odd number of voxels that keeps the count at most 200. Because both distributions use the same bins, they line up on any image. The bins aren't a setting.

Every segmented image gets a quick version of this distribution of its pore space when it's uploaded, in voxel units and with the same bins.

Solid phase

With the Solid phase, the distance transform is taken of the solid instead: each solid voxel gets its distance to the nearest pore, and the distribution describes how thick the solid is around each point. The app's axes then read Distance to pore and Fraction of solid volume with larger distance to pore, and the median is the median distance to pore.

Reading the result

  • Shape. The density is usually highest in the first bins, which hold the pore voxels nearest the walls, and reaches zero at the largest distance in the image: the radius of the largest sphere that fits in the pore space.
  • Surface per pore volume. For a continuous medium, \(P(0) = s_v/\varphi\), the interface area per unit pore volume,1 so the steeper the start, the more surface the pores have for their volume. On a voxel grid the first bin only approximates this limit.
  • Image edges. The image's outer faces don't count as solid, so near an edge a pore voxel can read farther from solid than it is in the full sample, whose nearest wall may lie outside the image.

How it differs from the pore size distribution

Both start from the distance transform, but they answer different questions:

Radial density Pore size distribution
Value at a point distance to the nearest solid, \(d(\mathbf{x})\) radius of the largest sphere covering it, \(\ell(\mathbf{x}) \ge d(\mathbf{x})\)
A point near the wall of a big pore small large
Measures wall proximity pore size

References


  1. S. Torquato, Random Heterogeneous Materials: Microstructure and Macroscopic Properties, Springer (2002), ch. 2. doi:10.1007/978-1-4757-6355-3 ↩↩

  2. 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 ↩