pc_to_satn#

Convert a capillary pressure map to saturation map.

import matplotlib.pyplot as plt
import numpy as np
import porespy as ps
ps.visualization.set_mpl_style()
[17:43:59] ERROR    PARDISO solver not installed, run `pip install pypardiso`. Otherwise,          _workspace.py:56
                    simulations will be slow. Apple M chips not supported.                                         

The arguments and their defaults are:

import inspect
inspect.signature(ps.filters.pc_to_satn)
<Signature (pc, im, mode='drainage')>

The capillary pressure map, such as that computed by ps.simulations.drainage

im = ps.generators.blobs(shape=[200, 200], porosity=0.6)
drn = ps.simulations.drainage(im=im, voxel_size=1, g=0)

pc and im#

satn = ps.filters.pc_to_satn(pc=drn.im_pc, im=im)

fig, ax = plt.subplots(1, 2, figsize=[12, 6])
ax[0].imshow(drn.im_pc/im, interpolation='none', origin='lower')
ax[0].axis(False)
ax[1].imshow(satn/im, interpolation='none', origin='lower')
ax[1].axis(False);
../../../_images/11884bb59e54bc8182319b22e47c6fbc285b37ee74642c0bfacbbc675b75c664.png

The saturation image allows for easy determination of a desired fluid configuration:

fig, ax = plt.subplots(1, 2, figsize=[12, 6])
ax[0].imshow((satn < 0.3)*(satn > 0)/im, interpolation='none', origin='lower')
ax[0].axis(False)
ax[1].imshow((satn < 0.8)*(satn > 0)/im, interpolation='none', origin='lower')
ax[1].axis(False);
../../../_images/a800eb23e1e27610603b8ef8ce9f9d5e3198c4a20b0fbd3efd6a6a248c409f79.png