4.4.12.4. Reaction Blocks
Table of Contents
Both CHEMEQ and General Chemistry use a common syntax for specifying reactions. Each reaction block defines the reaction stoichiometry, the different rate-controlling functions, and optional parameters like the heat of reaction and temperature or pressure phases (not valid for CHEMEQ).
Begin Reaction [REACTION NAME]
Reaction is A + 1.2B -> 3C
Multiplier Function = [Optional]
Rate Function = [Required]
Pressure Function = [Optional]
Concentration Function = [Optional]
Heat of Reaction = [Value]
Temperature Phase = [GAS_PHASE, SOLID_PHASE, NO_MATERIAL_PHASE (default)]
Pressure Phase = [GAS_PHASE, SOLID_PHASE, NO_MATERIAL_PHASE (default)]
Origin Phase Heat Fraction = [Value]
End
The syntax rules for specifying reactions using these blocks is shown in the following sections.
4.4.12.4.1. Stoichiometry
The reaction stoichiometry is defined by the Reaction is line. The left hand side and right hand side must be separated by either “->” or “=>” and any numeric constants before a species name is interpreted as a stoichiometric coefficient. When using mass-based units (density or mass fraction) it is required that the stoichiometric coefficient of reactants and products be equal to conserve mass. For molar units (mole fractions or molar concentration) there is no such requirement.
Reaction is A + 2B -> C # not valid for mass-based concentrations
Reaction is A + 2B -> 3C # valid for mass-based concentrations
4.4.12.4.2. Reaction Rates
The overall rate of each reaction is given by
where is the multiplier function,
is the rate function,
is the pressure function, and
is the concentration function. The available options for each of these functions are outlined in the following section. They can be selected in the input file by adding as many reaction blocks in the parent chemistry description block.
Multiplier Functions
Unity
The default multiplier function is unity,
and can be used by either omitting the Multiplier Function line or using
Multiplier Function = Unity
Tanh Time
The tanh_time multiplier function uses a hyperbolic tangent function of time to increase the reaction rate at a specified time.
The two inputs for this are and
. If you do not specify an input for the span, it uses
, unless
was set as 0, in which case an error is thrown. The default start and end points (
and
) of the tanh blending function are 0 and 1, respectively. These can be overridden by user-specified
start and end values if desired. Example inputs are shown below.
Multiplier Function = Tanh_Time x_ref = 54
Multiplier Function = Tanh_Time x_ref = 2.5 span = 0.1
Multiplier Function = Tanh_Time x_ref = 2.5 span = 0.1 start = 1 end = 100
Tanh Temperature
The tanh_temperature multiplier function uses a hyperbolic tangent function of
temperature to increase the reaction rate at a specified temperature.
The arguments for this function as the same format as for the tanh_time function.
Multiplier Function = Tanh_Temperature x_ref = 450
Multiplier Function = Tanh_Temperature x_ref = 600 span = 10
Multiplier Function = Tanh_Temperature x_ref = 600 span = 10 start = 100 end = 5
Thermodynamic Equilibrium
Note
Thermodynamic_Equilibrium is not supported with CHEMEQ
The thermodynamic_equilibrium multiplier function can be used to calculate the
inverse equilibrium constant using thermodynamic properties. When
multiplied by the forward rate function, this will provide a reverse rate function.
The equation for
satisfies the Van’t Hoff equation and uses Gibbs free energy.
In this equation, is the atmospheric pressure,
is the universal gas constant,
is the number of species,
is the stoichiometric coefficient of the
species, and
and
are the standard state molar entropy and molar enthalpy of the
species respectively.
The two optional inputs for this are atmospheric pressure, , and the universal gas constant,
. The default values for these are 101325 Pa and 8.314 J/mol-K respectively. Heat capacity evaluators must be provided with the species properties in order to use this function (the enthalpy and entropy evaluators will be derived from the provided heat capacity evaluators). Example inputs are shown below.
Multiplier Function = Thermodynamic_Equilibrium
Multiplier Function = Thermodynamic_Equilibrium Patm = 101325 R = 8.314
Simplified Equilibrium
Note
Simplified_Equilibrium is not supported with CHEMEQ
The simplified_equilibrium multiplier function can be used to calculate the inverse equilibrium constant using a known value of the equilibrium constant (in terms of partial pressures) at a specific temperature and the heat of reaction. When multiplied by the forward rate function, this will provide a reverse rate function. The equation for
is the integrated Van’t Hoff equation.
In this equation, is the atmospheric pressure,
is the universal gas constant,
is the number of species,
is the stoichiometric coefficient of the
species,
is the known equilibrium constant (in terms of partial pressures) at temperature
, and
is the heat of reaction.
The required input for this is . The optional inputs include
,
, and
defaulted to 1.0, 101325 Pa, and 8.314 J/mol-K respectively. Either the heat of reaction or the enthalpies of formation must be provided with the reactions in the input file to use this equation accurately. Example inputs are shown below.
Multiplier Function = Simplified_Equilibrium Teq=800
Multiplier Function = Simplified_Equilibrium Teq=800 Keq=0.6
Multiplier Function = Simplified_Equilibrium Teq=800 Keq=0.6 Patm=101325 R=8.314
General
The general multiplier function uses a function string supplied in the input file to evaluate the rate generally. Allowable variables in this string include time (time), T (temperature), P (pressure), area, and any valid species name from the current model. The value used for a species is in whatever unit system the general chemistry model is using. These functions can use all the functions available in string function expressions, but cannot access arbitrary expression values.
An example input for this option is
Multiplier Function = General Function = 0.5*(1+tanh((T-350)^2))*max(T,300)
Rate Functions
Unity
The rate function is the only required function, so it has no default like the others. However, you can still select Unity for it if desired, using
Rate Function = Unity
Arrhenius
The Arrhenius rate function is the most common, and uses
The pre-exponential constant, , is the only required input. Optional inputs include
,
, and
. If omitted, the defaults for these are 0 for
and
and 8.314 for
. Some example lines to select this rate function is
Rate Function = Arrhenius A = 100 Ea = 20000
Rate Function = Arrhenius A = 100 Ea = 350 R = 1
Rate Function = Arrhenius A = 100 beta = 2 Ea = 350 R = 1
Distributed Arrhenius
The Distributed Arrhenius rate function uses a cumulative normal distribution to vary the activation energy with respect to a selected progress species.
where is the clipped inverse cumulative normal distribution function,
is the concentration of the selected progress species,
is the specified reference concentration, and
is the activation energy variation. In addition to these inputs, the same input rules as for the Arrhenius reaction apply (only
is required of those again). The name specified for the progress species must be a valid species name.
Some example inputs for this rate type are (note that these are shown on multiple lines to fit in the manual, but must be on the same line in your input file):
Rate Function = Distributed_Arrhenius \$
A = 100 Ea = 20000 \$
sigma = 1000 Y0 = 1.2 ProgressSpecies = N2
Rate Function = Distributed_Arrhenius \$
A = 100 beta = 2 Ea = 350 R = 1 \$
sigma = 100 Y0 = 1.2 ProgressSpecies = N2
General
The general multiplier function uses a function string supplied in the input file to evaluate the rate generally. Allowable variables in this string include time (time), T (temperature), P (pressure), area, and any valid species name from the current model. The value used for a species is in whatever unit system the general chemistry model is using. These functions can use all the functions available in string function expressions, but cannot access arbitrary expression values.
An example input for this option is:
Rate Function = General Function = 2.1*exp(-350/T)*N2^3.2*(1-CO2)*max(CO2,0.1)
Rate Function = General Function = (T>300 ? 5.0 : 0.01)*CO2*exp(-350/T)
Pressure Functions
Unity
The default pressure function is unity,
and can be used by either omitting the Pressure Function line or using
Pressure Function = Unity
Exponential
The exponential pressure function is evaluated as
where must be positive. An example input for this option is
Pressure Function = Exponential P_ref = 1 n = 1.5
Concentration Functions
Unity
The default concentration function is unity,
and can be used by either omitting the Concentration Function line or using
Concentration Function = Unity
Standard
The standard concentration function is evaluated as
The values of can be specified manually using a list of entries for
. This is done by entering a list of name-value pairs for each entry with a non-zero
value. Alternately, you can provide a list of
values for all species.
If your reaction rate only depends on the concentration of the reactants, and the value of is the same as the stoichiometric coefficient, then you can have the values set automatically from the reaction stoichiometry by using the keyword
Automatic.
For example, if your reaction is 2A + B -> C the automatic option would do the same thing as specifying mu = A 2 B 1. If you have repeated species as both reactants and products, only
the reaction portion of the coefficient is considered. For example, A + B -> 2A + C would result in automatic exponents of mu = A 1 B 1.
Concentration Function = Standard mu = A 2 B 1
Concentration Function = Standard mu = 2 1 0
Concentration Function = Standard mu = Automatic
Prout Tompkins
The Prout Tompkins concentration function can only be used with a reaction that has a single reactant and a single product, and is evaluated as
where is the concentration of the reactant. An example input for this model is
Concentration Function = Prout_Tompkins n = 1.2 m = 2.5 p = 9
Evaporation
Note
Evaporation is not supported with CHEMEQ
The evaporation concentration function is evaluated as
where and
are the condensation and evaporation coefficients,
is the molar enthalpy of vaporization,
is the boiling temperature at
,
is the gas phase pressure,
is the surface area,
is the mole fraction of the liquid that is evaporating, and
is the gas phase mole fraction of the evaporating species. If
is provided in mass units,
must be converted appropriately so their units match. If you provide only
or only
, then the coefficients are assumed to be the same.
For reactions that do not include evaporation, species that are defined in the material but not involved in any reactions may be omitted from the chemistry definition block. When using evaporation reactions, this is not allowed since it will alter the value of the mole fractions in the equations above. You must also use a species variable name of species when using evaporation since this requires molar concentrations to get mole fractions.
The only rate, pressure, and multiplier functions allowed with an Evaporation concentration function are the Unity functions.
Concentration Function = Evaporation R=8.314 M=18e-3 Cc=0.01 Tb=373 L=4e4
General Evaporation
Note
General Evaporation is not supported with CHEMEQ
This is a more general case of the evaporation function specified above. With general evaporation, different forms of the saturation pressure may be specified through a fugacity functor. The general evaporation function is evaluated as
where and
are the fugacity of the liquid and vapor respectively. Choices for the liquid fugacity include:
HENRY_CONSTANT: returnsfor a specified Henry’s law constant
.
ANTOINE: returnsfor specified Antoine coefficients
,
, and
.
VANT_HOFF_BOILING: returnsfor required parameters of molar enthalpy of vaporization
and boiling temperature
at
; and optional parameters of atmospheric pressure
and universal gas constant
with default values of 101325 Pa and 8.314 J/mol-K respectively.
Choices for the vapor fugacity include:
IDEAL_GAS: returns(no parameters to specify).
In the equation for , inputs
,
,
, and
work the same as they would for the Evaporation case above. The rules defined above for using Evaporation also apply to
General_Evaporation.
For an example reaction Liq -> Gas, general evaporation may be specified as
Concentration Function = General_Evaporation R=8.314 M=18e-3 Cc=0.01
Begin Fugacity For Liq
Type = VANT_HOFF_BOILING
Parameter Patm = 101325
Parameter R = 8.314
Parameter Tb = 373
Parameter L = 4e4
End
Begin Fugacity For Gas
Type = IDEAL_GAS
End
which would give the same result as the Evaporation example given above. Other options for the liquid fugacity might look like
Begin Fugacity For Liq
Type = ANTOINE
Parameter A = 8
Parameter B = 1000
Parameter C = 200
End
Begin Fugacity For Liq
Type = HENRY_CONSTANT
Parameter H = 1
End
Condensation
Note
Condensation is not supported with CHEMEQ
The condensation concentration function is evaluated as
where and
are the fugacity of the liquid and vapor respectively. Choices for the fugacity are given in the General Evaporation description above.
In the equation for ,
is the diffusion coefficient,
is the molar mass of the condensing species,
is the droplet radius,
is the universal gas constant, and
is temperature. The required parameter for condensation is
, while the optional parameter of
has the default value 8.314 J/mol-K.
Similar rules apply for using Condensation as using General_Evaporation defined above. However, you must use a mass basis for when using condensation and provide the molecular weights of all species present in order to calculate the mole fractions in the fugacity functions.
For an example reaction Gas -> Liq, condensation may be specified as
Concentration Function = Condensation R=8.314 D=1e-4
Begin Fugacity For Gas
Type = IDEAL_GAS
End
Begin Fugacity For Liq
Type = VANT_HOFF_BOILING
Parameter Patm = 101325
Parameter R = 8.314
Parameter Tb = 373
Parameter L = 4e4
End
4.4.12.4.3. Heat Release
Reaction heat release can be specified by setting per-species formation enthalpies or by supplying a heat of reaction in each reaction block, using the Heat of Reaction = X command. The units of the provided value should be energy per mass (e.g. J/kg) when using mass-based units and energy per mol when using molar units.
Note
The sign convention for heat of reaction in the chemistry blocks is that endothermic reactions have a positive heat of reaction and exothermic reactions have a negative heat of reaction.
When supplying heat of reaction values, formation enthalpies will be calculated automatically. If you supply a set of heats of reaction for which formation enthalpies cannot be calculated you will get an error. For example, in the following scenario there are no formation enthalpies that could be constructed that satisfy the given heats of reaction.
Begin Reaction R1
Reaction is A -> B
Heat of Reaction = 100
End
Begin Reaction R2
Reaction is B -> A
Heat of Reaction = 100
End
Similarly, using the same reaction stoichiometry twice with different heat release values will generate a similar error.
Begin Reaction R1
Reaction is A -> B
Heat of Reaction = 100
End
Begin Reaction R2
Reaction is A -> B
Heat of Reaction = 200
End
Sometimes one may want to use two identical reaction stoichiometries to represent two reaction pathways that occur at different temperatures. The best way to accomplish that is to create different product species.
Begin Reaction R1
Reaction is A -> Blt
Heat of Reaction = 100
End
Begin Reaction R2
Reaction is A -> Bht
Heat of Reaction = 200
End
Alternately, instead of specifying heats of reaction per reaction you can specify enthalpies of formation per species. You should not provide both heats of reaction and heats of formation however. Enthalpies of formation are supplied per species outside the reaction blocks, using a single line for CHEMEQ
species names are A B C D
Enthalpies of Formation = 0 3.5564e8 -7.1126e8 -99.5786e8
and multiple lines for General Chemistry
species names = A B C D
Enthalpy of Formation for A = 0
Enthalpy of Formation for B = 3.5564e8
Enthalpy of Formation for C = -7.1126e8
Enthalpy of Formation for D = -99.5786e8
4.4.12.4.4. Reaction Phases
Note
Reaction phase arguments are not supported with CHEMEQ
If the pressure phase argument is omitted but temperature phase is provided, the pressure phase defaults to the same phase as the temperature. By default, all of the reaction heating is applied in the temperature phase (e.g. solid phase). However, if you specify a value for the “Origin Phase Heat Fraction” between 0 and 1 you can divide that heat between phases. The fraction specified controls how much energy goes into the origin phase (a.k.a. temperature phase). The remaining energy is split evenly between the other phases that participate in the chemistry model.
4.4.12.4.5. Reversible Reactions
Note
Reversible reactions are not supported with CHEMEQ
If a reversible reaction is desired, the forward and reverse reaction must be specified
in two separate reaction blocks. However, there is an option to say Reaction is Reverse of
[REACTION NAME] giving the name of the forward reaction block. This will copy over the
reaction string with the opposite signs for the stoichiometric coefficients, the rate
function, the temperature and pressure phases, and the equal and opposite heat of reaction.
If the forward reaction block contains a concentration function that is not Unity, this
statement will also create a Standard concentration function for the reverse reaction
with automatic coefficients. These default rate and concentration functions can be
overwritten by specifying a new function inside the reverse reaction block. An example
of how this option might be used for an equilibrium model is shown below.
Begin Reaction [FORWARD REACTION NAME]
Reaction is A -> B
Rate Function = [Required]
Concentration Function = [Optional]
Heat of Reaction = [Value]
End
Begin Reaction [REVERSE REACTION NAME]
Reaction is Reverse of [FORWARD REACTION NAME]
Multiplier Function = [Thermodynamic_Equilibrium, Simplified_Equilibrium] [args]
End