Network Validation¶
Network validation runs single-phase flow and diffusion on an extracted pore network, using OpenPNM,2 and reports the network's permeability and effective diffusivity. Put them next to the image-based permeability and diffusivity of the same sample and you can judge how well the network represents the pore space before you use it for anything else.
- Solves Stokes flow and Fickian diffusion on the pore network, as a linear resistor network
- Backend PoreSpy on CPU, solved with OpenPNM
- Reports the network permeability \(k\) and \(D_\text{eff}/D_0\)
- How to run it Network Validation in the User guide
PoreStore doesn't compare the numbers for you: it computes the network values. The comparison is yours to make.
The problem being solved¶
Each conduit, half a pore, then a throat, then half the next pore, is a set of resistors in series. Its hydraulic and diffusive conductances are
where the subscripts 1, \(t\) and 2 are the two pore halves and the throat, and \(F^h\) and \(F^d\) are their hydraulic and diffusive size factors, computed from their diameters and lengths under an assumed geometric shape (the shape model).
The method¶
With \(\mu = 1\) and \(D_0 = 1\):
- Trim the network. OpenPNM's health check flags isolated pores, pores outside the largest connected cluster, and headless, looped, duplicate or bidirectional throats, and all of them are removed in one step. Flow and diffusion are then solved on exactly the connected network that remains, whose pores and throats the result counts.
- Choose the faces. One marker point is placed just outside each face normal to the Flow direction, at 0.9 times the lowest and 1.1 times the highest pore coordinate along that axis, centred on the other two axes. The pores that OpenPNM's surface-pore search links to each marker by a Delaunay triangulation become the inlet and outlet. The side faces get no condition, so nothing flows or diffuses across them.
- Stokes flow. With \(p = 1\) at the inlet and \(p = 0\) at the outlet, solve the mass balance at every internal pore \(i\), summed over the pores \(j\) it shares a throat with: $$ \sum_{j} g_{h,ij}\,(p_i - p_j) = 0 . $$ Then, with \(Q\) the total flow rate through the inlet pores, $$ k = \frac{Q\,\mu\,L}{A\,\Delta p}. $$
- Fickian diffusion. With \(c = 1\) and \(c = 0\) at the same faces, solve the same balance with \(g_d\) and \(c\). Then, with \(\dot n\) the total molar flow rate through the inlet pores, $$ \frac{D_\text{eff}}{D_0} = \frac{\dot n\,L}{A\,D_0\,\Delta c}. $$
\(L\) is the image length along the flow direction, and \(A\) is the image's full cross-section, so \(D_\text{eff}/D_0\) includes porosity, as in the image-based diffusivity.
Boundary conditions¶
Shape models¶
The Geometry shape model decides how a pore or throat of a given diameter converts to a conductance. The default, Cones and Cylinders, treats each pore half as a truncated cone that narrows from the pore's diameter to the throat's, and the throat as a cylinder. It accepts throats wider than the pores they join, which SNOW2 and MAGNET networks nearly always contain. The options are OpenPNM's size-factor models:
Spheres and Cylinders · Cones and Cylinders · Cubes and Cuboids · Pyramids and Cuboids · Intersecting Cones · Intersecting Pyramids · N Cylinders in Series · Circles and Rectangles · Squares and Rectangles · Trapezoids and Rectangles
The last three are made of flat shapes; use one of the others for a network extracted from a 3D image.
Which diameters feed them is set by the Pore diameter key and Throat diameter key. The defaults are the equivalent diameters, which conserve each pore's volume and each throat's cross-sectional area. Inscribed diameters give smaller conductances. A diameter the network doesn't have, as a MAGNET network without throat areas lacks throat.equivalent_diameter, is refused rather than replaced with another, since the result would describe a different network.
Units¶
The network permeability is computed in voxel² and shown in m², and in millidarcy as the headline, once the image has a voxel size; \(D_\text{eff}/D_0\) is dimensionless. Changing the image's voxel size updates the permeability without a rerun. See Units and voxel size.
Reading the result¶
- How close is close? A good extraction can come within a few percent of the image-based permeability: MAGNET's authors report 5% on their test image.1 Gaps of tens of percent are common, and usually come from the throat-size definition, so try another throat diameter key or shape model.
- Consistency checks. A network that gets permeability right but diffusivity badly wrong, or the reverse, is usually misrepresenting pore volume or throat length.
- Same faces, different conditions. The network sees no-flux side faces, like the diffusivity solvers, not the periodic ones the image-based permeability solvers use. Expect the largest gap on narrow samples.
References¶
-
M. McKague, H. Fathiannasab, M. A. Sadeghi, J. T. Gostick, "MAGNET: Medial Axis Guided Network Extraction Tool," InterPore Journal 2 (2025) IPJ011225-7. doi:10.69631/g47x8w91 ↩
-
J. Gostick et al., "OpenPNM: A pore network modeling package," Computing in Science & Engineering 18 (2016) 60–74. doi:10.1109/MCSE.2016.49 ↩