DiffusionFlux

DiffusionFlux is a package for the calculation of diffusion flux. The packge implements different models for the calculation of diffusion fluxes.

Documentation for DiffusionFlux.

Installation

To install the package, use the following commands in the julia REPL

julia> using Pkg
julia> Pkg.add("DiffusionFlux")

Models

Fickian diffusion

\[j_k = -D_{km} M_k \frac{dc_k}{dx}\]

In the above eqaution $j_k$ is the mass flux (kg/m$^2$s), $D_{km}$ is the diffusion coefficient of species $k$ in the rest of the mixture (m$^2$/s), $M_k$ is the molecular weight (kg/mol), $c_k$ is the concentration of species $k$ (mol/m$^3$), and $x$ is the spatial coordinate. The flux calculated using the above formulation does not ensure that $\sum j_k = 0$. Therefore the fluxes are corrected according to

\[j_k^{\prime} = j_k - Y_k j_{corr}\]

where

\[j_{corr} = \sum j_k\]

Two different formulations are available for the calculation of species flux through porous media

Modified Fickian (porous media flow)

\[j_k = M_k \left(-D^e_{k} \frac{dc_k}{dx} - \frac{B_g c_k}{\mu}\frac{p}{dx}\right)\]

\[\frac{1}{D^e_{k}} = \frac{1}{D^e_{k,Kn}} + \frac{1}{D^e_{km}}\]

\[D^e_{k,kn} = \frac{\epsilon}{\tau}D_{k,Kn}\]

\[D^e_{km} = \frac{\epsilon}{\tau}D_{km}\]

In the above equations, $\epsilon$ is the porosity, $\tau$ is the tortuosity, $B_g$ is the permeability (m$^2$), $p$ is the pressure (Pa), and $D_{k,Kn}$ is the Knudsen diffusion coefficient of species $k$ (m$^2$/s).

Dusty Gas Model (porous media flow)

\[j_k = -M_k\left[ \sum_{l=1}^{N_g} D_{kl}^\mathrm{DGM} \frac{dc_l}{dx} + \left( \sum_{l=1}^{N_g}\frac{D_{kl}^\mathrm{DGM}c_l}{D_{l,Kn}} \right)\frac{B_g}{\mu} \frac{dp}{dx} \right]\]

\[D_{kl}^\mathrm{DGM} = H^{-1}\]

\[h_{kl} = \left[ \frac{1}{D^e_{k,Kn}} + \sum_{j \ne k} \frac{X_j}{D^e_{kj}} \right] \delta_{kl} + (\delta_{kl}-1)\frac{X_k}{D^e_{kl}}\]

In the above equation $X_k$ is the mole fraction of species $k$, $D^e_{kj}$ is the effective binary diffusion coeffcients, and $\delta_{kl}$ is the kronecker delta.

General interfaces

DiffusionFlux.PropertiesType

A structure to define the porous medis properties

  • ϵ : porosity
  • τ : tortuosity
  • pore_dia : pore diameter
  • part_dia : particle diameter
DiffusionFlux.WorkSpaceType

Non allocating array for calculation of fluxes

  • Dkne : Array for Knudsen diffusion coeffcients
  • Dije : Array for binary diffusion coeffcients
  • DklDGM : Array space for use in DGM
  • Dkm : Array for storing diffusion coeffcients of k in the rest of the mixture
DiffusionFlux.D_KnMethod

Function to calcuate the Knudsen diffusion coeffcients

Usage

D_Kn(thermo_obj, pm::Properties, T)
  • thermo_obj : SpeciesThermProperties (Refer IdealGas)
  • pm : Struct of the type Properties
  • T : Temperature (K)
DiffusionFlux.KozeneyCarmanMethod

Function to calculate the permeability using Kozeney Carman relationship

Usage

KozeneyCarman(pm::Properties)
  • pm: Struct of the type Properties
DiffusionFlux.effective_coefficients!Method

Function to calculate binary diffusion coeffcients and Knudsen diffusion coeffcients, which are required for the evaluation of DGM fluxes

Usage

effectivecoefficients!(dgmobj::WorkSpace, pm::Properties, sp_trd, p::Float64, T::Float64 ,molwts::Array{Float64})

  • dgm_obj : A struct of the type WorkSpace which stores the diffusion coeffcients matrix
  • pm : Porous media properties (struct of the type Properties)
  • sptrd : Array of Species transport data, which is obtained by calling createtransport_data of TransportProperties
  • p : pressure in (Pa)
  • T : Temperature (K)
  • molwts : molecular weights vector
DiffusionFlux.flux_dgm!Method

Function to calculate the mass fluxes (kg/m^2-s) at the interface between two cells using DGM The fluxes at the boundary cells are not evaluated in this function. If There are n cells, there will be n-1 internal cell faces

Usage

fluxdgm!(jks::Array{Array{T,1},1}, C::Array{Array{T,1},1}, pm::Properties, dgmobj::WorkSpace , molwts::Array{T}, Temp::T, δ::T)

  • jks : vector{vector} for storing the fluxes jks[n] stands for the flux at the interface between n and (n+1)th cell
  • C : vector{vector} concentrations in all cells
  • pm : Porous media properties (struct of the type Properties)
  • dgm_obj : A struct of the type WorkSpace which stores the diffusion coeffcients matrix
  • sptrdata : Array of Species transport data, which is obtained by calling createtransportdata of TransportProperties
  • molwts : vector of molecular weights
  • Temp : Temperature (K)
  • δ : distance between cell centers
DiffusionFlux.flux_ficks!Method

Function to calculate the diffusion fluxes in Kg/m^2-s using Ficks law. The fluxes are corrected to ensure that the sum is zero

Usage

flux_ficks!(jks::Array{T}, Dkm::Array{T} ,C1::Array{T}, C2::Array{T}, δ::T)

  • jks : vector of fluxes
  • C1 : concentration vector
  • C2 : concentration vector
  • δ : distance between the cell centers
DiffusionFlux.flux_interface!Method

Function to calcuate the mass flux (kg/m^2-s) at the inteface between flow channel and porous media. The pressure driven flux is assumed to be negligible at the inteface

Usage

interfaceflux!(jks::Array{T,1},Cch, Cpm, dgmobj::WorkSpace, molwts::Array{T}, Temp::T, δ::T)

  • jks : Storage for species flux (1D Array)
  • C_ch : concentration in the flow channel
  • C_pm : concentration in the porous media
  • dgm_obj : Diffusion matrix for DGM flux calculations
  • molwts : vector of molecular weights
  • Temp : Temperature (K)
  • δ : distance between the cell centers
DiffusionFlux.flux_porous_media_fick!Method

Function to calculate the mass fluxes (kg/m^2-s) at the interface between two cells using modified Fickian model The fluxes at the boundary cells are not evaluated in this function. If There are n cells, there will be n-1 internal cell faces

Usage

fluxporousmediafick!(jks::Array{Array{T,1},1}, C::Array{Array{T,1},1}, pm::Properties, sptr_data, ws::WorkSpace , molwts::Array{T}, Temp::T, δ::T)

  • jks : vector{vector} for storing the fluxes jks[n] stands for the flux at the interface between n and (n+1)th cell
  • C : vector{vector} concentrations in all cells
  • pm : Porous media properties (struct of the type Properties)
  • sptrdata : Array of Species transport data, which is obtained by calling createtransportdata of TransportProperties
  • ws : A struct of the type WorkSpace which stores the diffusion coeffcients matrix
  • molwts : vector of molecular weights
  • Temp : Temperature (K)
  • δ : distance between cell centers