Gas diffusivity calculations

The diffusivities are calculated in appSrc files diffusivityAir.H and diffusivityFuel.H. The following discussion refers only to air, but applies equally to fuel. Of interest is the diffusivity, D(a), of specie a in the mixture. A diffusivity field is thus calculated for each specie, except for the background “inert” specie. A specie a can be given a fixed diffusivity value using the fixedDiffusivity model, or its diffusivity in the mixture, D(a), can be modelled from the pairwise binary diffusivities D(a,b) of specie a diffusing in specie b.

The sofcFoam model combines pairwise binary diffusivities following Wilke (1950):

$$D\left( a \right)=~\frac{1-~{{x}_{a}}}{{{S}_{a}}}$$

where

$${{S}_{a}}~=\underset{b\ne a}{\mathop \sum }\,\frac{{{x}_{b}}}{D\left( a,b \right)}$$

with mole fractions x and specie indices a,b.

The calculation proceeds by first fixing specie a, stepping through the species b and accumulating the results to obtain the sum Sa, which is then used to get D(a). The computed diffusivity is stored in volScalarField diffSpAir[a].

The diffusivity calculations have the following algorithmic structure:

forAll(airSpecies, a)
{
  if(airSpecies[a].name() != airInertSpecie)
  {
    forAll(airDiffModels, m)
    {
      if(airDiffModels[m]->isFixed())
      {
        //obtain fixed diffusivity
      }
      else if(!airDiffModels[m]->isBinary())
      {
         Error: must have fixed or binary: exit
      }
      else
      {
        initialize sumA = 0
        forAll(airSpecies,b)
        {
          if (b != a)
          {
            set specie b in airDiffModel[m]
            calculate binary diffusivity
            accumulate sumA
          }
        }
          obtain diffusivity in mixture using sumA
        } //isBinary
      } //m
    } //!inert
  } //a