Example: Regenerating Data from

R. Wu et al. / Elec Acta 54 25 (2010) 7394–7403

Import the modules


In [1]:
import openpnm as op
import matplotlib.pyplot as plt
import scipy as sp
import numpy as np
import openpnm.models.geometry as gm
import openpnm.topotools as tt
%matplotlib inline


C:\Users\Tom\Anaconda3\lib\site-packages\h5py\__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters

Set the workspace loglevel to not print anything


In [2]:
wrk = op.Workspace()
wrk.loglevel=50

As the paper requires some lengthy calculation we have split it into parts and put the function in a separate notebook to be re-used in each part. The following code runs and loads the shared functions into this kernel


In [3]:
%run shared_funcs.ipynb

The main function runs the simulation for a given network size 'n' and number of points for the relative diffusivity curve. Setting 'npts' to 1 will return the single phase diffusivity. the network size is doubled in the z direction for percolation but the diffusion calculation is effectively only calculated on the middle square section of length 'n'. This is achieved by copying the saturation distribution from the larger network to a smaller one.

We can inspect the source in this notebook by running a code cell with the following: simulation??

Run the simulation once for a network of size 8 x 8 x 8


In [4]:
x_values, y_values = simulation(n=8)


************************************************************
Running Sim with Net Size = 8 num points 51
************************************************************
Step 0 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 90.04439572124551
Solution converged: 0.0
Step 0 Saturation 0.000 Diffusivity 0.101
Step 1 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 90.04439572124551
Solution converged: 0.0
Step 1 Saturation 0.000 Diffusivity 0.101
Step 2 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 90.48619730090466
Solution converged: 0.0
Step 2 Saturation 0.006 Diffusivity 0.100
Step 3 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 91.23672446800403
Solution converged: 0.0
Step 3 Saturation 0.014 Diffusivity 0.099
Step 4 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 92.62763725358529
Solution converged: 0.0
Step 4 Saturation 0.037 Diffusivity 0.093
Step 5 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 94.96579031783907
Solution converged: 0.0
Step 5 Saturation 0.062 Diffusivity 0.086
Step 6 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 96.14035310680433
Solution converged: 0.0
Step 6 Saturation 0.070 Diffusivity 0.084
Step 7 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 98.59983033381558
Solution converged: 0.0
Step 7 Saturation 0.092 Diffusivity 0.080
Step 8 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 100.9927505991573
Solution converged: 0.0
Step 8 Saturation 0.121 Diffusivity 0.072
Step 9 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 102.77393562572517
Solution converged: 0.0
Step 9 Saturation 0.143 Diffusivity 0.066
Step 10 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 104.27808034117362
Solution converged: 0.0
Step 10 Saturation 0.156 Diffusivity 0.063
Step 11 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 108.72659592848656
Solution converged: 0.0
Step 11 Saturation 0.187 Diffusivity 0.057
Step 12 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 113.37403549849355
Solution converged: 0.0
Step 12 Saturation 0.221 Diffusivity 0.047
Step 13 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 116.81250411445566
Solution converged: 0.0
Step 13 Saturation 0.238 Diffusivity 0.040
Step 14 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 116.2043036163653
Solution converged: 0.0
Step 14 Saturation 0.254 Diffusivity 0.040
Step 15 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 122.12450739620795
Solution converged: 0.0
Step 15 Saturation 0.279 Diffusivity 0.032
Step 16 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 121.97259621564366
Solution converged: 0.0
Step 16 Saturation 0.314 Diffusivity 0.028
Step 17 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 117.85510404758202
Solution converged: 0.0
Step 17 Saturation 0.354 Diffusivity 0.026
Step 18 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 117.85510404758202
Solution converged: 0.0
Step 18 Saturation 0.355 Diffusivity 0.026
Step 19 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 115.11546886862304
Solution converged: 0.0
Step 19 Saturation 0.383 Diffusivity 0.024
Step 20 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 119.39285697205887
Solution converged: 0.0
Step 20 Saturation 0.418 Diffusivity 0.018
Step 21 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 118.96420890674254
Solution converged: 0.0
Step 21 Saturation 0.443 Diffusivity 0.017
Step 22 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 118.50280421367746
Solution converged: 0.0
Step 22 Saturation 0.471 Diffusivity 0.017
Step 23 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 118.40677390439848
Solution converged: 0.0
Step 23 Saturation 0.480 Diffusivity 0.017
Step 24 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 117.97879082014788
Solution converged: 0.0
Step 24 Saturation 0.490 Diffusivity 0.017
Step 25 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 117.86815988046516
Solution converged: 0.0
Step 25 Saturation 0.492 Diffusivity 0.017
Step 26 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 117.60405386157711
Solution converged: 0.0
Step 26 Saturation 0.500 Diffusivity 0.017
Step 27 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 117.60405386157711
Solution converged: 0.0
Step 27 Saturation 0.500 Diffusivity 0.017
Step 28 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 117.60405386157711
Solution converged: 0.0
Step 28 Saturation 0.500 Diffusivity 0.017
Step 29 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 116.9388702478527
Solution converged: 0.0
Step 29 Saturation 0.512 Diffusivity 0.017
Step 30 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 115.83157476484499
Solution converged: 0.0
Step 30 Saturation 0.551 Diffusivity 0.013
Step 31 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 113.25748820002065
Solution converged: 0.0
Step 31 Saturation 0.586 Diffusivity 0.004
Step 32 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 111.26155266609473
Solution converged: 0.0
Step 32 Saturation 0.613 Diffusivity 0.004
Step 33 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 107.46107868782858
Solution converged: 0.0
Step 33 Saturation 0.648 Diffusivity 0.002
Step 34 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 108.63283347113213
Solution converged: 0.0
Step 34 Saturation 0.680 Diffusivity 0.002
Step 35 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 103.68945565493385
Solution converged: 0.0
Step 35 Saturation 0.709 Diffusivity 0.002
Step 36 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 100.55269696150185
Solution converged: 0.0
Step 36 Saturation 0.740 Diffusivity 0.002
Step 37 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 108.24748564395568
Solution converged: 0.0
Step 37 Saturation 0.775 Diffusivity 0.000
Step 38 is percolating
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Running ReactiveTransport
Tolerance not met: 106.54704961577414
Solution converged: 0.0
Step 38 Saturation 0.814 Diffusivity 0.000
Step 39 is NOT percolating
Step 39 Saturation 0.840 Diffusivity 0.000
Step 40 is NOT percolating
Step 40 Saturation 0.857 Diffusivity 0.000
Step 41 is NOT percolating
Step 41 Saturation 0.887 Diffusivity 0.000
Step 42 is NOT percolating
Step 42 Saturation 0.893 Diffusivity 0.000
Step 43 is NOT percolating
Step 43 Saturation 0.912 Diffusivity 0.000
Step 44 is NOT percolating
Step 44 Saturation 0.938 Diffusivity 0.000
Step 45 is NOT percolating
Step 45 Saturation 0.963 Diffusivity 0.000
Step 46 is NOT percolating
Step 46 Saturation 0.979 Diffusivity 0.000
Step 47 is NOT percolating
Step 47 Saturation 0.994 Diffusivity 0.000
Step 48 is NOT percolating
Step 48 Saturation 1.000 Diffusivity 0.000
Step 49 is NOT percolating
Step 49 Saturation 1.000 Diffusivity 0.000
Step 50 is NOT percolating
Step 50 Saturation 1.000 Diffusivity 0.000

In [5]:
plt.figure()
plt.plot(x_values, y_values, 'ro')
plt.title('normalized diffusivity versus saturation')
plt.xlabel('saturation')
plt.ylabel('normalized diffusivity')
plt.show()