Source code for openpnm.algorithms._fickian_diffusion
import logging
from openpnm.algorithms import ReactiveTransport
from openpnm.utils import Docorator
docstr = Docorator()
logger = logging.getLogger(__name__)
__all__ = ['FickianDiffusion']
@docstr.dedent
class FickianDiffusionSettings():
r"""
Parameters
----------
%(ReactiveTransportSettings.parameters)s
"""
quantity = 'pore.concentration'
conductance = 'throat.diffusive_conductance'
[docs]
@docstr.dedent
class FickianDiffusion(ReactiveTransport):
r"""
A class to simulate binary diffusion with reactions
Parameters
----------
%(ReactiveTransport.parameters)s
Notes
-----
Fickian diffusion in porous materials occurs in the void space, but
becuase the diffusion is confined to pores it is impacted by the porosity
and tortuosity of the network. Thus the total diffusive flux through the
network is reduced. This class can be used to simualte diffusion-reaction
in domains with specified boundary conditions, or it can be used
to calculate the effective diffusivity of the network by applying
controlled boundary conditions on opposing faces, calculating the
diffusion rate, and inverting Fick's first law as follows:
.. math::
D_{eff} = N_{A}*L/(A*\Delta C_{A})
"""
def __init__(self, name='fick_?', **kwargs):
super().__init__(name=name, **kwargs)
self.settings._update(FickianDiffusionSettings())
self.name = name