class Porosimetry(*args, **kwargs)[source]

Bases: openpnm.algorithms.OrdinaryPercolation.OrdinaryPercolation

Simulates mercury instrustion porosimetry using ordinary percolation

  • network (OpenPNM Network object) – The Network upon which this simulation should be run

  • name (string, optional) – An identifying name for the object. If none is given then one is generated.

  • project (OpenPNM Project object) – Either a Network or a Project must be specified


Mercury intrusion progresses by applying increasing pressures to the invading mercury phase, and measuring the resultant volume of invading fluid. This corresponds directly to an ordinary percolation process, with access limitations enabled.

run(points=25, start=None, stop=None)[source]

Runs the percolation algorithm to determine which pores and throats will be invaded at each given pressure point.

  • points (int or array_like) – An array containing the pressure points to apply. If a scalar is given then an array will be generated with the given number of points spaced between the lowest and highest values of throat entry pressures using logarithmic spacing. To specify low and high pressure points use the start and stop arguments.

  • start (int) – The optional starting point to use when generating pressure points. If not given the half the lowest capillary entry pressure in the network is used.

  • stop (int) – The optional stopping point to use when generating pressure points. If not given, then twice the highest capillary entry pressure in the network is used.


The inlet sites are set to invaded to start the simulation. This means that if ‘internal’ pores are used as inlets the capillary pressure curve will begin at a non-zero invading phase saturation. To avoid this either set the inlet pore volumes to zero or add boundary pores to the inlet face, and set their volumes to zero.


Define which pore filling model to apply.


propname (string) – Dictionary key on the physics object(s) containing the pore filling model(s) to apply.


It is assumed that these models are functions of the quantity specified in the algorithms settings. This values is applied to the corresponding phase just prior to regenerating the given pore-scale model(s).