Skip to content

Connectivity Analysis

Total porosity counts every pore voxel. Transport only uses some of them. Connectivity analysis splits the pore space, and the solid, by how each connected cluster meets the faces of the image: which clusters span the sample, which are open to the outside on one side only, and which are sealed inside. These are the numbers to compare with gas pycnometry (open porosity), with the porosity a flow simulation actually uses, and with what cleaning would remove.

  • Measures the connected clusters of pore and of solid, and how each meets the image's faces
  • Method connected-component labelling with face connectivity, with PoreSpy
  • Reports total, closed, blind and percolating porosity; solid connectivity
  • How to run it Connectivity Analysis in the User guide

Definition

Pores are grouped into clusters of voxels that share a face (6-connectivity: edge or corner contact doesn't join them). Boundaries are open, with no periodic wrap, and all six faces of the image count as openings. Every fraction is a share of the whole image volume (bulk), so the classes can be compared directly with the total porosity. Closed and blind clusters are found with PoreSpy's closed-pore and surface-pore routines.1

faces: all six count as openings x → Percolating along x one cluster touches both x faces Blind / surface porosity exactly one connected opening to the outside Closed porosity touches no face of the image Non-percolating, not blind two openings joined inside, but no spanning path Non-percolating along x = everything except teal. Connectivity: 6 (shared faces only); corners don't join.
How each pore cluster is classified, drawn on one slice. Every cluster is either percolating along an axis or not. Closed and blind clusters are two kinds of non-percolating cluster, and some non-percolating clusters are neither.
Class Definition
Total porosity pore voxels / bulk voxels
Closed porosity voxels in clusters that touch no face of the image
Blind / surface porosity voxels in clusters with exactly one connected opening to the outside. The opening may wrap round an edge or a corner. A cluster whose openings connect only through its interior has more than one, and isn't blind.
Percolating porosity along X voxels in clusters that touch both X faces. The same for Y and Z.
Non-percolating porosity along X all other pore voxels: total minus percolating
Percolating clusters along X number of separate clusters spanning X
Any direction the same three, for clusters spanning at least one axis. A cluster spanning two axes counts once.

Some consequences of these definitions:

  • Closed and blind overlap with non-percolating. Both are non-percolating, but non-percolating also includes clusters that are neither, such as a tunnel with two openings that never spans the sample.
  • Dead ends inside a spanning cluster count as percolating. Classes are decided per cluster, not per voxel, so a dead-end branch of a spanning cluster is percolating even though no flow passes through it.
  • Open porosity in the pycnometry sense, the pore space a gas can reach, is total minus closed.
  • Which faces you cut matters. A cluster that's closed in the full core may be blind or percolating in a cropped image, because cropping creates new openings.
A sparse 100³ synthetic sample, porosity 0.15, run through PoreStore's own analysis code. The 120³ sample the other pages use is almost entirely one spanning cluster, so its classes wouldn't show. Left: the middle slice. Right: each pore voxel coloured by its cluster's class: percolating spans at least one axis, as in Any direction, and other is the non-percolating clusters that are neither closed nor blind. Clusters are found in 3D, so a cluster that looks sealed in the slice can reach a face out of the plane. The colours reproduce the fractions the analysis reports.

Solid phase

The same analysis runs on the solid phase in every job:

Measure Definition
Solid volume fraction solid voxels / bulk
Floating solid (no boundary contact) solid in clusters touching no face: inclusions with no connection to the frame
Solid with one connected boundary contact solid in clusters with one connected boundary contact, the same rule as blind pores
Solid clusters number of separate solid clusters
All solid connected Yes if the solid is one cluster, No if several, and No solid voxels if there's no solid
Largest solid cluster the largest solid cluster / bulk
Solid outside the largest cluster all other solid / bulk
Solid percolation percolating and non-percolating solid fractions and cluster counts along X, Y, Z and any direction, as for pores

"Floating" and "connected" are different questions. One inclusion inside a pore is floating but leaves the solid all connected. Two slabs that both reach the faces aren't floating, yet the solid isn't all connected. Touching a face of a cropped image says nothing about mechanical support in the real sample.

Identities the result satisfies

These hold by construction, so they're a quick check on a downloaded result:

  • Percolating + non-percolating equals the phase fraction, along every axis.
  • Pore fraction + solid fraction equals 1.
  • Largest solid cluster + the rest equals the solid fraction.

Every fraction is dimensionless, and nothing depends on the voxel size.

Reading the result

  • Cleaning removes non-spanning pore clusters and floating solid. This analysis tells you how much each would remove.
  • Permeability and diffusivity count every pore voxel in the porosity they report, but only percolating clusters carry flux.

References


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