Chemistry


1) Chemical reaction models

dsmcFoam+ implements the Quantum-Kinetics (QK) reaction model and chemical reactions are defined in the system/chemReactDict dictionary.

A chemically-frozen gas is obtained by leaving the reactions() list empty.
For chemically reacting flows, the available reaction models are

  • dissociationQK
  • exchangeQK
  • ionisationQK
  • chargeExchangeQK
  • associativeIonisationQK

These models can also be combined as follows:

  • dissociationExchangeQK
  • dissociationIonisationQK
  • dissociationIonisationExchangeQK
  • dissociationIonisationChargeExchangeQK
  • dissociationIonisationExchangeChargeExchangeQK
  • ionisationExchangeQK
  • ionisationChargeExchangeQK
  • ionisationExchangeChargeExchangeQK
  • ionisationAssociativeIonisationQK

For example, if a species pair can undergo both dissociation and exchange reactions (as it is the case for N2 and O), then the dissociationExchangeQK model should be selected.

The four primitive models can also be used to isolate a specific reaction and compute its forward reaction rate.

The dissociation and ionisation temperatures, given in the moleculesProperties/#speciesName subdictionary of the constant/dsmcProperties dictionary, have already been introduced in A.1 Species thermophysical properties.

NB: An example for 5-species air is given in the chemically-reacting heat bath tutorial, on this page.

 

>> Because the electronic energy is unavailable, only dissociation and exchange reactions are introduced in the DSMC Guide <<



2) Dissociation reaction

In the reactions() list, a dissociation reaction can be defined as

reactions
(
    oxygen_atomicOxygen_reaction
    {
        reactionModel   dissociationQK;

        reactants           (O2 O);
        allowSplitting        yes;
        writeRatesToTerminal   no;
        
        dissociationQKProperties
        {
            dissociationProducts  ((O O) ());
        }
    }
);    

where the products of the reaction can be found in the properties of the reaction model, here dissociationQKProperties. allowSplitting is a switch to allow or not the collision partners to split. To compute the forward reaction rate of a reaction, this switch needs to be turned off and writeRatesToTerminal must be turned on. Otherwise, the setup shown above should be preferred.

In the next example, two dissociation reactions are defined at once for the pair (O2 N2), and there is thus no need to redefine another reaction for (N2 O2)

reactions
(
    oxygen_nitrogen_reaction
    {
        reactionModel   dissociationQK;

        reactants          (O2 N2);
        allowSplitting        yes;
        writeRatesToTerminal   no;
        
        dissociationQKProperties
        {
            dissociationProducts  ((O O) (N N));
        }
    }
);    



3) Exchange reaction

In the reactions() list, a exchange reaction can be defined as

reactions
(
    nitrogen_atomicOxygen_reaction
    {
        reactionModel   exchangeQK;
        
        reactants           (N2 O);
        allowSplitting        yes;
        writeRatesToTerminal   no;

        exchangeQKProperties
        {
            exchangeProducts       (NO N);
            heatOfReactionExchange -37482; // in kelvin (endothermic)
            aCoeff                   0.15; // Scanlon 2015
            bCoeff                   0.15; // Scanlon 2015
        }
    }
);    

There are three additional coefficients defined for this reaction type in exchangeQKProperties: the heat of reaction (in kelvin, negative for endothermic reactions and positive for exothermic reactions), and two parameters aCoeff and bCoeff to ensure that the equilibrium constant follows that given by statistical mechanics. In chemReactDict, the values provided are taken from T. J. Scanlon et al., 06/2015: Open-Source Direct Simulation Monte Carlo Chemistry Modeling for Hypersonic Flows, while slighty different values can be found in Bird’s 2013 book.



4) Combined reactions

Combining two reaction models is simply obtained by modifying the reactionModel and defining both dissociationQKProperties and exchangeQKProperties subdictionaries in #reactionName

reactions
(
    nitrogen_atomicOxygen_reaction
    {
        reactionModel   dissociationExchangeQK;
        
        reactants           (N2 O);
        allowSplitting        yes;
        writeRatesToTerminal   no;

        dissociationQKProperties
        {
            dissociationProducts  ((N N) ());
        }
        
        exchangeQKProperties
        {
            exchangeProducts       (NO N);
            heatOfReactionExchange -37482; // in kelvin (endothermic)
            aCoeff                   0.15; // Scanlon 2015
            bCoeff                   0.15; // Scanlon 2015
        }
    }
);