Using Taufactor

This documentation covers the full usage of TauFactor

Core solver

Tau and D_eff

The main output of the solve function is tau and D_eff. tau is the tortuoisty factor, a measure of the reduction in diffusive transport caused by convolution in the geometry of the material. D_eff is the effective diffusivity resulting from the tortuous nature of the material. The relationship between these values is given by:

\(D_{eff}=D\frac{\epsilon}{\tau}\)

For more see Cooper et al.

import taufactor as tau
import tifffile

# load segmented image
img = tifffile.imread('path/filename')
s = tau.Solver(img)
# tau
s.tau
# D_eff
s.D_eff

Flux direction

The direction of flow by default is the first index of the loaded image. If a different direction is required, the image must be permuted before solving. To visualise this and give guidance, the utility function flux_direction can be used

from taufactor.utils import flux_direction
import tifffile

img = tifffile.imread('path/filename')
flux_direction(img)

When the flux direction has been chosen, the image can be permuted using torch.permute as outlined in the output from flux_direction, for example

import taufactor as tau
import tifffile

# load segmented image
img = tifffile.imread('path/filename')
flux_direction(img)
img = torch.permute(img, (1,2,0))
s = tau.Solver(img)

Other Solvers

Periodic solver

The periodic solver applies periodic boundary conditions instead of mirror boundaries.

import taufactor as tau
import tifffile

# load 2 phase periodic segmented image
img = tifffile.imread('path/filename')

# create a Periodic solver object and set an iteration limit
# and convergence limit of 1%
s = tau.PeriodicSolver(img, iter_limit=1000, conv_limit = 0.01)
# call solve function
s.solve()

Multi-phase solver

The multi-phase solver allows for more than 2 conductive phases per image. The conductivity of each phase is given as an input to the solver along with the phase label

import taufactor as tau
import tifffile

# load n phase segmented image
img = tifffile.imread('path/filename')
# assign conductivity values, where key is segmented label in 'img'
# and value is conductivity
cond = {1:0.32, 2:0.44}

# create a multiphase solver object and set an iteration limit
s = tau.MultiPhaseSolver(img, cond=cond, iter_limit=1000)
# call solve function
s.solve()

Electrode tortuosity factor solver

This solver implements the electrode tortuosity method from Nguyen et al.

import taufactor as tau
import tifffile

# load n phase segmented image
img = tifffile.imread('path/filename')

# create an electrode solver object and set an iteration limit
s = tau.ElectrodeSolver(img)
# call solve function
s.solve()

Metrics

Metrics can be calculated using the metrics module

from taufactor.metrics import *

Volume fraction

Volume fraction is calculated for each phase in a segmented image:

from taufactor.metrics import volume_fraction

# calculate the volume fraction
vf = volume_fraction(img)

# consider a three phase image with pore, particle and binder
# where 0, 1, 2 correspond to pore, particle and binder respectively
# calculate the volume fraction
vf = volume_fraction(img, phases={'pore':0, 'particle':1, 'binder':2})

Surface area

Surface area is calculated for each phase in a segmented image. The surface area returned is the fraction of interfacial faces with respect to the total number of faces n the image

from taufactor.metrics import surface_area
# calculate the surface area of a single phase in an img
sa = surface_area(img, phases=1)

# consider a three phase image with pore, particle and binder
# where 0, 1, 2 correspond to pore, particle and binder respectively
# calculate the surface area between pore and binder with periodic boundaries in y and z axes
sa = surface_area(img, phases=[0,2], periodic=[0,1,1])

Triple phase boundary

Triple phase boundary is calculated on a segmented image with exactky three phases. The value returned is the fraction of triple phase edges with respect to the total number of edges

from taufactor.metrics import triple_phase_boundary
# calculate the triple phase boundareies
tpb = triple_phase_boundary(img)