Complex Stoichiometry in Pyrosim

Reading Time: 17 minutes
Created with software version: 2023.3

To follow along with this tutorial, download the relevant files here.

1. Introduction

PyroSim version 2018.2 will support complex stoichiometry in the user interface. Previously, PyroSim supported the FDS single-fuel, “simple chemistry” combustion model but complex stoichiometry required some manual input by the user. This post demonstrates how the new user interface capability can be used to represent multiple fuels and other complex reactions.

To use multiple-fuel reactions (or other complex reactions) in an FDS simulation, it is necessary to specify the gas species and stoichiometry of the reactions. The FDS User’s Guide, Section 13.2.2 “Complex Stoichiometry”, provides several examples of complex stoichiometry. In this post we replicate examples from the FDS User Guide, the FDS Verification Guide, and the FDS Validation Guide.

The links below jump to each example.

  • Simple chemistry combustion is demonstrated in the Burner Fire example that imports a reaction from the PyroSim library and in the Smoke Layer example that defines the composition and products.
  • Chapter 2 demonstrates non-simple chemistry fuels by including chlorine in the fuel and products.
  • Chapter 3 demonstrates use of multiple chemical reactions.
  • Chapter 4 demonstrates aerosol deposition.
  • Chapter 5 demonstrates a set of reactions where the downstream reactions use the products of the first reaction and shows how to set Lumped Component Only option.

2. Combustion of Polyvinyl Chloride (PVC)

fds scrn compsto pvc
Figure 1. Complex stoichiometry: Example of PVC fuel with formation of hydrogen chloride

This example is based on Section 13.2.1 Complex Fuel Molecules in the FDS User Guide. 

“For example, chlorine is commonly found in building and household materials, and because of its propensity to form the acid gas HCl, you may want to account for it in the basic reaction scheme. Suppose the predominant fuel in the fire is polyvinyl chloride (PVC). Regardless of its detailed polymeric structure, it can be regarded as C2H3Cl for the purpose of modeling. Assuming that all of the Cl in the fuel is converted into HCl, you can derive a single-step reaction mechanism using appropriate soot and CO yields for the specified fuel.” (McGrattan et al. 2021)

The resulting stoichiometric equation is:

PVC Stoichiometric Equation
\[1(C_2 H_3 Cl) + 1(1.53O_2 + 1.53(3.76)N_2) \to 1(HCl + H_2 O + 0.14CO + 0.96CO_2 + 0.90C + 1.53(3.76)N_2)\]

2.1. Define the Species

The first step is to define the species. In this model, \(O_{2}\), \(N_{2}\), \(HCl\), \(H_{2}O\), \(CO\), \(CO_{2}\), and \(Soot\) will be defined as primitive species and will not be tracked. PVC will be defined as primitive species that is tracked. Air and the products of combustion will be lumped species that are tracked.  

To edit the primitive species:

  • On the Model menu, click Edit Species
  • By default, PyroSim includes the species needed for a “simple chemistry” reaction. We will add different soot, air, and products species, so delete the default SOOTAIR, and PRODUCTS species.
  • The remaining species are CARBON DIOXIDE, CARBON MONOXIDE, NITROGEN, OXYGEN, and WATER VAPOR.
  • Add hydrogen chloride as a species. Note that hydrogen chloride is included in FDS as a predefined species, Table 12.1.2 Pre-Defined Gas and Liquid Properties (McGrattan et al. 2021), so we do not need to define the chemical formula. Click New, in the Predefined list select HYDROGEN CHLORIDE, and click OK.
  • Add PVC as a new species. Click New, click Custom, give the name as PVC, select Primitive, and click OK. Click Chemical Formula and type C2H3Cl. Click Apply to create the new species. 
  • Add soot as a new species to replace default soot (Table 12.1.2 Pre-Defined Gas and Liquid Properties (McGrattan et al. 2021)) which is a mixture 0.9C0.1H. Click New, click Custom, give the name as SOOT, select Primitive, and click OK. Click Chemical Formula and type C. Click Apply to create the new species. 
  • Click OK to close the Edit Species dialog.

Define air as a lumped species:

  • On the Model menu, click Edit Species
  • Click New, click Custom, give the name as AIR, select Lumped, and click OK.
  • Click by Volume and type 5.76 for the Volume Fraction of NITROGEN and type 1.53 for the Volume Fraction of OXYGEN.
  • Click Apply to create the new species.

Define the combustion products as a lumped species.

  • In the Edit Species dialog. 
  • Click New, click Custom, give the name as PRODUCTS, select Lumped, and click OK.
  • Click by Volume and type 0.96 for the Volume Fraction of CARBON DIOXIDE, type 0.14 for the Volume Fraction of CARBON MONOXIDE, type 1 for the Volume Fraction of HYDROGEN CHLORIDE, type 5.76 for the Volume Fraction of NITROGEN, type 0.9 for the Volume Fraction of SOOT, type 1 for the Volume Fraction of WATER VAPOR.
  • Click Apply to create the new species.
  • Click OK to close the Edit Species dialog.

To set AIR as the background species:

  • In the Navigation View (tree), right-click AIR and click Set as Background Species

2.2. Define the Reaction

The next step is to define the reaction.

  • On the Model menu, click Edit Reactions
  • Click New, give the name as PVC, select Complex Stoichiometry, for Fuel Species select PVC, and click OK.
  • Click Heat of Combustion and type 16400.
  • For AIR, the Type is Reactant and for the value of NU type 1.
  • For PVC, the Type is Reactant and for the value of NU type 1.
  • For PRODUCTS, the Type is Product and for the value of NU type 1.
  • Click Apply to create the new reaction.
  • Click OK to close the Edit Reactions dialog.

2.3. Create a Burning Surface

To use this reaction, define a surface that releases fuel:

  • On the Model menu, click Edit Surfaces
  • Click New. For Surface Name, type Fire and for Surface Type select Burner. Click OK.
  • Input the desired value for Heat Release Rate Per Area
  • Click OK and close the Edit Surfaces dialog.
  • Apply the Fire surface to the burning obstruction or vent.

3. Combustion of Polyurethane and Wood (PVC)

pyro scrn compsto multiple fuels results
Figure 2. Complex stoichiometry: Multiple fuel example showing HRRPUV of wood reaction.

The example in Section 13.2.2 of the FDS User Guide shows how to model two simultaneously burning fuels, polyurethane and wood. In the example, polyurethane is defined by the chemical formula \(C_{25}H_{42}O_{6}N_{2}\) and the combustion reaction has a soot yield \(y_{s} = 0.131\) and a \(CO\) yield of \(y_{CO} = 0.01\). The polyurethane reaction is given by:

\[1\underbrace{\left(C_{25}H_{42}O_6N_2\right)}_{Fuel\_Poly}+27.234364\underbrace{\left(O_2+3.76N_2\right)}_{Air}\Rightarrow\]
\[1\underbrace{\left(19.791134CO_2+0.166587CO+20.719873H_2O+5.602533C_{0.9}H_{0.1}+103.401209N_2\right)}_{Products\_poly}\]

Similarly, wood is defined by the chemical formula \(C_{1}H_{1.7}O_{0.74}N_{0.002}\)and the reaction has a soot yield \(y_{s} = 0.015\) and a \(CO\) yield of \(y_{CO} = 0.004\). The wood reaction is:

\[1\underbrace{\left(C_1H_{1.7}O_{0.74}N_{0.002}\right)}_{Fuel\_wood}+1.020627\underbrace{\left(O_2+3.76N_2\right)}_{Air}\Rightarrow\]
\[1\underbrace{\left(0.964679CO_2+0.003655CO+0.848241H_2O+0.035184C_{0.9}H_{0.1}+3.838558N_2\right)}_{Products\_wood}\]

3.1. Define the Species

In the FDS calculation, \(O_{2}\), \(N_{2}\), \(H_{2}O\), \(CO\), \(CO_{2}\), and \(Soot\) will be primitive species and will not be tracked. Polyurethane and wood will be defined as primitive species that are tracked. Air and the two products of combustion will be lumped species that are tracked. 

To define the primitive species:

  • On the Model menu, click Edit Species
  • By default, PyroSim includes the species needed for a “simple chemistry” reaction. We will redefine the air and products species, so delete the default AIR and PRODUCTS.
  • The remaining species are CARBON DIOXIDE, CARBON MONOXIDE, NITROGEN, OXYGEN, SOOT, and WATER VAPOR.
  • We now add polyurethane as a new species. Click New, click Custom, give the name as POLYURETHANE, select Primitive, and click OK. Click Chemical Formula and type C25H42O6N2. Click Apply to create the new species. 
  • Similarly, we add wood. Click New, click Custom, give the name as WOOD, select Primitive, and click OK. Click Chemical Formula and type C1H1.7O0.74N0.002. Click Apply to create the new species. 

In this example, air has been simplified to consist of only oxygen and nitrogen. Define air as a lumped species:

  • In the Edit Species dialog. 
  • Click New, click Custom, give the name as AIR, select Lumped, and click OK.
  • Click by Volume and type 3.76 for the Volume Fraction of NITROGEN and type 1 for the Volume Fraction of OXYGEN.
  • Click Apply to create the new species.

Define the polyurethane combustion products as a lumped species.

  • In the Edit Species dialog. 
  • Click New, click Custom, give the name as PRODUCTS_POLY, select Lumped, and click OK.
  • Click by Volume and type 19.791134 for the Volume Fraction of CARBON DIOXIDE, type 0.166587 for the Volume Fraction of CARBON MONOXIDE, type 103.401209 for the Volume Fraction of NITROGEN, type 5.602533 for the Volume Fraction of SOOT, type 20.719873 for the Volume Fraction of WATER VAPOR.
  • Click Apply to create the new species.

Define the wood combustion products as a lumped species:

  • In the Edit Species dialog. 
  • Click New, click Custom, give the name as PRODUCTS_WOOD, select Lumped, and click OK. 
  • Click by Volume and type 0.964679 for the Volume Fraction of CARBON DIOXIDE, type 0.003655 for the Volume Fraction of CARBON MONOXIDE, type 3.838558 for the Volume Fraction of NITROGEN, type 0.035184 for the Volume Fraction of SOOT, type 0.848241 for the Volume Fraction of WATER VAPOR
  • Click Apply to create the new species.
  • Click OK to close the Edit Species dialog.

To set AIR as the background species:

  • In the Navigation View (tree), right-click AIR and click Set as Background Species

3.2. Define the Reactions

The next step is to define the two reactions. First the polyurethane reaction:

  • On the Model menu, click Edit Reactions
  • Click New, give the name as POLYURETHANE, select Complex Stoichiometry, for Fuel Species select POLYURETHANE and click OK.
  • Click Heat of Combustion and type 26200.
  • For AIR, the Type is Reactant and for the value of NU type 27.234364.
  • For POLYURETHANE, the Type is Reactant and for the value of NU type 1.
  • For PRODUCTS_POLY, the Type is Product and for the value of NU type 1.
  • Click Apply to create the new reaction.

Now the wood reaction:

  • In the Edit Reactions dialog. 
  • Click New, give the name as WOOD, select Complex Stoichiometry, for Fuel Species select WOOD, and click OK.
  • Click Heat of Combustion and type 16400.
  • For AIR, the Type is Reactant and for the value of NU type 1.020627.
  • For WOOD, the Type is Reactant and for the value of NU type 1.
  • For PRODUCTS_WOOD, the Type is Product and for the value of NU type 1.
  • Click Apply to create the new reaction.
  • Click OK to close the Edit Reactions dialog.

We want both reactions to be active. By default, the first reaction created will be active. To set both reactions as active:

  • In the Navigation View (tree), under Reactions, verify that POLYURETHANE is active. If not, right-click POLYURETHANE and click Set as Active Reaction
  • In the Navigation View (tree), under Reactions, right-click WOOD and click Set as Active Reaction

3.3. Create a Burning Surface

We have defined the fuels and combustion reactions. The next step is to define the surface from which fuel is released (pyrolysis). Because we have two burning fuels, we must do this by specifying the mass flow rate of fuels from the surface. In this example, the total HRR is 1200 kW with each fuel contributing 50% of the total heat release rate. We do this by specifying the mass flow rate per unit area from the burning surface. In this example, the vent that will release the fuel has an area of 1m2 , so we use the area and the heats of combustion to calculate the fuel flow rates.

\[\dot{m''}_{poly}=\frac{600kW}{1m^2}\frac{1}{26200kJ/kg}=0.022901kg/\left(m^2\cdot s\right)\]
\[\dot{m''}_{wood}=\frac{600kW}{1m^2}\frac{1}{16400kJ/kg}=0.036585kg/\left(m^2\cdot s\right)\]

We also want each fuel to follow a ramp such that fire starts at 0kW at the initial time, reaches 1200kW at 10s, and remains at 1200kW for the remainder of a 30s simulation.

When there is a single fuel, we can use a Burner surface, but for multiple fuels we use a Supply surface. To define the surface:

  • On the Model menu, click Edit Surfaces
  • Click New. For Surface Name, type Fire and for Surface Type select Supply. Click OK.
  • Click the color box and change the color to red.
  • Click Specify Mass Flux of Individual Species. Click the Species Injection tab. 
  • First define the polyurethane mass flow rate. In the Mass Flux column, type 0.022901 for POLYURETHANE. In the Ramp-Up Type column select Custom. In the Ramp Value column click Edit Values and input the following (Time, Fraction) pairs: (0,0), (10,1), (30,1). Click OK.
  • Now define the wood mass flow rate. In the Mass Flux column, type 0.036585 for WOOD. In the Ramp-Up Type column select Custom. In the Ramp Value column click Edit Values and input the following (Time, Fraction) pairs: (0,0), (10,1), (30,1). Click OK.
  • Click OK and close the Edit Surfaces dialog.
pyro ui dialog compsto ramping function values
Figure 3. Define the ramp for the polyurethane mass flow.

3.4. Set Suppression

When using multiple chemical reactions, it is necessary to set SUPPRESSION = .FALSE.. on the MISC line. This is done automatically. If you want to change this default option:

  • On the Analysis menu, click Simulation Parameters
  • Select the Misc tab.
  • Select the desired option for Reaction Suppression.
  • Click OK to close the Solution Parameters dialog.

4. Soot Deposition from a Propane Flame

pyro scrn compsto results soot deposition
Figure 4. Complex stoichiometry: Soot deposition from propane fire.

This example is based on Section 13.5.1 Soot Deposition from a Propane Flame in the FDS User Guide. 

This example “shows how to define a reaction that invokes the aerosol deposition model in FDS. The fuel is propane with a specified soot yield of 0.05. Note that this is a fabricated soot yield that is used only for demonstration and verification purposes.” (McGrattan et al. 2021)

The resulting stoichiometric equation is:

\[1\underbrace{\left(C_3H_8\right)}_{Fuel}+4.81308\underbrace{\left(O_2+3.7619N_2\right)}_{Air}\Rightarrow\]
\[1\underbrace{\left(18.10631N_2+2.81813CO_2+3.98990H_2O\right)}_{Products}+0.20201\underbrace{C_{0.9}H_{0.1}}_{Soot}\]

4.1. Define the Species

The first step is to define the species. In this model, \(O_{2}\), \(N_{2}\), \(H_{2}O\), and \(CO_{2}\) will be defined as primitive species and will not be tracked. Propane and Soot will be defined as primitive species that are tracked. Air and the products of combustion will be lumped species that are tracked. 

Edit the species:

  • On the Model menu, click Edit Species
  • By default, PyroSim includes the species needed for a “simple chemistry” reaction. We will redefine air and the products species and will not use \(CO\), so delete the default AIR, PRODUCTS, and CARBON MONOXIDE species.
  • The remaining species are CARBON DIOXIDE, NITROGEN, OXYGEN, SOOT, and WATER VAPOR.
  • Add propane as a species. Note that propane is included in FDS as a predefined species, Table 12.1.2 Pre-Defined Gas and Liquid Properties (McGrattan et al. 2021), so we do not need to define the chemical formula. Click New, in the Predefined list select PROPANE, and click OK.
  • For soot to deposit it must be explicitly tracked by defining AEROSOL = .TRUE. on the SPEC line. Click SOOT and then the Advanced tab. In the Name column type AEROSOL and in the Value type .TRUE. (include both periods). Click Apply

In this example, air has been simplified to consist of only oxygen and nitrogen. Define air as a lumped species:

  • In the Edit Species dialog. 
  • Click New, click Custom, give the name as AIR, select Lumped, and click OK.
  • Click by Volume and type 3.7619 for the Volume Fraction of NITROGEN and type 1 for the Volume Fraction of OXYGEN.
  • Click Apply to create the new species.

Define the combustion products as a lumped species.

  • In the Edit Species dialog. 
  • Click New, click Custom, give the name as PRODUCTS, select Lumped, and click OK.
  • Click by Volume and type 2.81813 for the Volume Fraction of CARBON DIOXIDE, type 18.10631 for the Volume Fraction of NITROGEN, and type 3.98990 for the Volume Fraction of WATER VAPOR.
  • Click Apply to create the new species.
  • Click OK to close the Edit Species dialog.

To set AIR as the background species:

  • In the Navigation View (tree), right-click AIR and click Set as Background Species

4.2. Define the Reaction

The next step is to define the reaction.

  • On the Model menu, click Edit Reactions
  • Click New, give the name as PROPANE, select Complex Stoichiometry, for Fuel Species select PROPANE and click OK.
  • Click Heat of Combustion and type 44715.
  • For AIR, the Type is Reactant and for the value of NU type 4.81308.
  • For PROPANE, the Type is Reactant and for the value of NU type 1.
  • For PRODUCTS, the Type is Product and for the value of NU type 1.
  • For SOOT, the Type is Product and for the value of NU type 0.20208.
  • Click Apply to create the new reaction.
  • Click OK to close the Edit Reactions dialog.

4.3. How to Plot Soot Deposition on the Walls

To write boundary data that plots deposition on surfaces:

  • On the Output menu, click Boundary Quantities.
  • Select [Species: SOOT] Surface Deposition.
  • Click OK to close the dialog.

5. Series Reactions

This example is described in  Section 9.3 Heat Release Rates from Reaction Mechanisms in the FDS Verification Guide. 

This example "is a set of series reactions with primitive species." In the first reaction, propane and oxygen produce carbon monoxide and hydrogen:

\[1\underbrace{\left(C_3H_8\right)}_{Fuel}+1.5\underbrace{\left(O_2\right)}_{Oxygen}\Rightarrow 1\underbrace{\left(3CO+4H_2\right)}_{Products}\]

In the second reaction, carbon monoxide (from the first reaction) and oxygen produce carbon dioxide:

\[1\underbrace{\left(CO\right)}_{Fuel}+0.5\underbrace{\left(O_2\right)}_{Oxygen}\Rightarrow 1\underbrace{\left(CO_2\right)}_{Products}\]

In the third section, hydrogen (from the first reaction) and oxygen produce water vapor:

\[1\underbrace{\left(H_2\right)}_{Fuel}+0.5\underbrace{\left(O_2\right)}_{Oxygen}\Rightarrow 1\underbrace{\left(H_2O\right)}_{Products}\]

5.1. Define the Species

In the FDS calculation, \(N_{2}\), propane, \(O_{2}\), \(H_{2}\), \(H_{2}O\), \(CO_{2}\), and \(CO\) will be primitive species that will be tracked. When a species is defined, by default PyroSim will automatically select the setting for Lumped Component Only (that is, whether or not the species will only be used when defining a lumped species such as air). Usually the automatic option is satisfactory, but in this case we need to manually set the option for CARBON DIOXIDECARBON MONOXIDE, and WATER VAPOR.

To define the primitive species:

  • On the Model menu, click Edit Species
  • By default, PyroSim includes the species needed for a “simple chemistry” reaction. Delete AIRPRODUCTS, and SOOT.
  • The remaining species are NITROGENOXYGENCARBON DIOXIDE, WATER VAPOR, and CARBON MONOXIDE
  • Select CARBON DIOXIDE and for Lumped Component Only select FALSE. Repeat for CARBON MONOXIDE and WATER VAPOR.  
  • Add propane as a species. Click New, in the Predefined list select PROPANE, and click OK.
  • Add hydrogen as a species. Click New, in the Predefined list select HYDROGEN, and click OK.
  • Click OK to close the Edit Species dialog.

To set NITROGEN as the background species:

  • In the Navigation View (tree), right-click NITROGEN and click Set as Background Species

5.2. Define the Reactions

The next step is to define the three reactions.

  • On the Model menu, click Edit Reactions
  • Click New, give the name as REACTION 1, select Complex Stoichiometry, for Fuel Species select PROPANE, and click OK.
  • For PROPANE, the Type is Reactant and for the value of NU type 1.
  • For OXYGEN, the Type is Reactant and for the value of NU type 1.5.
  • For CARBON MONOXIDE, the Type is Product and for the value of NU type 3.
  • For HYDROGEN, the Type is Product and for the value of NU type 4.
  • Click Apply to create the new reaction.

Now the second reaction:

  • In the Edit Reactions dialog. 
  • Click New, give the name as REACTION 2, select Complex Stoichiometry, for Fuel Species select CARBON MONOXIDE and click OK.
  • For CARBON MONOXIDE, the Type is Reactant and for the value of NU type 1.
  • For OXYGEN, the Type is Reactant and for the value of NU type 0.5.
  • For CARBON DIOXIDE, the Type is Product and for the value of NU type 1.
  • Click Apply to create the new reaction.

The third reaction:

  • In the Edit Reactions dialog. 
  • Click New, give the name as REACTION 3, select Complex Stoichiometry, for Fuel Species select HYDROGEN, and click OK.
  • For HYDROGEN, the Type is Reactant and for the value of NU type 1.
  • For OXYGEN, the Type is Reactant and for the value of NU type 0.5.
  • For WATER VAPOR, the Type is Product and for the value of NU type 1.
  • Click Apply to create the new reaction.
  • Click OK to close the Edit Reactions dialog.

We want all reactions to be active. By default, the first reaction created will be active. To set all reactions as active:

  • In the Navigation View (tree), under Reactions, verify that REACTION 1 is active. If not, right-click REACTION 1 and click Set as Active Reaction
  • In the Navigation View (tree), under Reactions, right-click REACTION 2 and click Set as Active Reaction
  • In the Navigation View (tree), under Reactions, right-click REACTION 3 and click Set as Active Reaction

5.3. Set Suppression

When using multiple chemical reactions, it is necessary to set SUPPRESSION = .FALSE.. on the MISC line. This is done automatically. If you want to change this default option:

  • On the Analysis menu, click Simulation Parameters
  • Select the Misc tab.
  • Select the desired option for Reaction Suppression.
  • Click OK to close the Solution Parameters dialog.

To download the most recent version of PyroSim, please visit the the PyroSim Support page and click the link for the current release. If you have any questions, please contact support@thunderheadeng.com.

6. Bibliography

McGrattan, Kevin, Simo Hostikka, Randall McDermott, Jason Floyd, and Marcos Vanella. 2021. Fire Dynamics Simulator User’s Guide, NIST Special Publication 1019. Sixth Edition. National Institute of Standards and Technology, Gaithersburg, Maryland, USA: NIST.