Phases

Overview of Module

openpnm.phases


This module contains the GenericPhase class, plus several subclasses which are preconfigured to have the properties of specific fluids


The GenericPhase Class

The GenericPhase class is a direct child of the Base class, so contains the usual methods such as find pore indices based on labels. It does, however, also inherit from ModelsMixin so has methods for add, removing and regenerating models.


Library of Preconfigured Phase Classes

OpenPNM include a few Phase subclasses that contain a suite of pre-configured models that predict the thermophysical properties of certain common phases.

Class

Comments

Water

Most models include the impact of salinity

Air

A mixture of O2 and N2, but no humidity

Mercury

Useful for porosimetry simulations, assumed theta is 140


Customizing a GenericPhase Instance

The GenericPhase class has no pore-scale models attached, so is a blank slate for creating custom Phases. The following code snippet illustrates how to do this to create an oil phase with a temperature dependent viscosity model based on a simple 2nd order polynomial:

>>> import openpnm as op
>>> import numpy as np
>>> pn = op.network.Cubic([5, 5, 5])
>>> oil = op.phases.GenericPhase(network=pn)

Now add the pore-scale model for viscosity from the models module:

>>> oil.add_model(propname='pore.viscosity',
...               model=op.models.misc.polynomial,
...               a=[50000, 1, -.1],
...               prop='pore.temperature')

Upon adding the model, values are immediately calculated at the Phase’s current temperature:

>>> np.round(oil['pore.viscosity'][0])
41418.0

If the temperature is changed, the model can be regenerated to update the viscosity values:

>>> oil['pore.temperature'] = 355
>>> np.round(oil['pore.viscosity'][0])
41418.0

Note that the oil viscosity has NOT changed! To propigate the new temperature to all the other calculated pore-scale properties, call the regenerate_models function:

>>> oil.regenerate_models()
>>> np.round(oil['pore.viscosity'][0])
37752.0