Tutorial: Combustion Products

Introduction

This tutorial will show how to extract the combustion products from the stack/exhaust of a combustion unit operation. Please ensure you have read the Getting Started Guide before starting this tutorial.

This model assumes the standard JSteam units (°C,bar,tonne/hr,kW,mass basis).

JSteam Combustion Model

JSteam makes the following assumptions about combustion:

  • There is always enough air (O2) to ensure complete combustion.
  • Complete (100%) combustion - all combustible fluids are consumed by the unit operation.
  • Combustion is stoichiometric - there are no temperature/reactor dependent reaction pathways.

While these assumptions may seem overly general, without requiring many more input parameters from the user (which we found were often unknown by the user anyway), this approach is a suitable compromise.

Step 1

To illustrate how to extract the combustion products, we will use a Fired Boiler as an example. This combustion unit operation models the effect of ambient and operation conditions on the production of steam, as well as estimates the Fuel Gas and emissions of the unit.

To begin, open a new Excel Workbook, and Load JSteam. Click on Cell B3, and from the JSteam Ribbon click Insert Function, and insert the BoilerFired function from Combustion Unit Operations -> Boilers -> BoilerFired, ensuring the return argument stack is included in the return argument list:

The unit operation comes with a number of default specifications, which we will use for this example:

Note these default specifications can be changed by the user!

Step 2

Next we will create a Fuel Gas mixture which we will use with the boiler. On the FuelMixtures sheet, enter the following mixture in Fuel_1:

  • Methane: 80%
  • Ethane: 10%
  • Propane: 5%
  • Hydrogen: 1%
  • Nitrogen: 3%
  • Hydrogen Sulfide: 1%

Step 3

Return to the sheet with the fired boiler unit operation, and within the "Fuel" field, reference the "Fuel_1" Cell in the FuelMixtures sheet. If you are unsure about this step, see the Getting Started Guide.

Note the unit operation will now attempt to solve with a valid Fuel, but will fail due to the default steam generation conditions being too low (0 tonne/hr, 0 deg C, 0 bar). Complete the remaining specifications to solve the model:

  • Cell C3: Boiler Feed Water Enthalpy: 300
  • Cell C4: Steam Mass Flow: 10
  • Cell C5: Steam Temperature: 410
  • Cell C6: Steam Pressure: 42

This will complete solving the boiler model, as follows:

Step 4

Now we have a solved combustion unit operation, we can examine the combustion products exiting via the stack. Within the Fired Boiler model, in the "stack" field, you will see some obscure letters and characters. This is an internal code that JSteam uses to represent mixtures within Excel, to avoid creating an entire mixtures sheet for each output. This code can be used to extract the mixture fractions using the advanced user function GetMixtureFrac.

To illustrate, click on Cell E3, and from the JSteam Ribbon click Insert Function, and insert the GetMixtureFrac function from Support Functions-> Get Mixture Fractions, ensuring you added "SulfurDioxide" to the return arguments (a combustion product of H2S):

Your sheet should now resemble the below:

Step 5

Complete the example by referencing the stack code in the mixture field of GetMixtureFrac (Cell F3: =C26):

This method allows you to examine the fractions of each combustion product in the stack/exhaust, assuming you know what products to look for. In reality, due to the stated assumptions above, the above 5 products are the only possible fluids within a stack/exhaust within JSteam.

Note the stack contains exactly 0.01 mole fraction of O2, as per the unit specification.

Extra for Experts

All JSteam functions also recognise the mixture code, in addition to Fuels and Refrigerants. This means you can, for example, calculate the molecular weight of the stack, or its enthalpy (or any other property), by simply referencing the stack mixture code in a mixture function, as below:

While this functionality is enabled, it is not officially supported, so use with caution.