CHEMCHECK – A CANTERA DEBUGGING TOOL TO DETECT CHEMICAL AND SYNTAX ERRORS IN KINETIC MODELS

A Thesis Presented by

Chao Xu

to

The Department of Chemical Engineering

in partial fulfillment of the requirements for the degree of

Master of Science

in the field of

Chemical Engineering

Northeastern University Boston, Massachusetts

August 2020 ACKNOWLEDGMENTS

I would thank to my advisor, Dr. Richard West; this thesis work would never have been accomplished without his patient guidance and instructions. His support during my thesis helps me keep making progress and developing my research skills. The way he has tutored me is very flexible and efficient, and it encourages me to explore more knowledge fields. I would like to express my gratitude to the other members on my thesis committee, Dr. Bryan Weber and Dr. Benjamin Woolston, thanks for their time on reviewing my thesis. Especially Dr. Bryan Weber, who gave me excellent instructions and help at the beginning of this project in Google Summer of Code (GSOC) 2019. I would like to thank the Cantera steering committee for giving me a lot of insightful suggestions and answering my questions about Cantera. Thanks to the members in our lab, Nate, Krishna, Emily, David, Chris, Shenghui, and Zil for all the supportive conversation and intelligent advice. Thanks to my parents for supporting me on every decision in my life. Their support gives me the confidence to overcome any challenge in my life.

ii TABLE OF CONTENTS

ACKNOWLEDGMENTS ii

ABSTRACT vi

1 Introduction 1 1.1 Thesis Overview ...... 1 1.1.1 Thesis Introduction ...... 1 1.1.2 Thesis Objectives ...... 2 1.2 Detailed Kinetic Models (DKM) Application ...... 3 1.3 Overview of CHEMKIN Format ...... 5 1.3.1 NASA Polynomials ...... 7 1.3.2 Reaction Types ...... 7 1.4 Django For Web Development ...... 11 1.5 Cantera Application in Combustion Modeling ...... 13 1.6 Collision Violation For Bimolecular Reactions ...... 14

2 Methodology Design 18 2.1 Building Create, Retrieve, Update, Delete (CRUD) Operations ...... 18 2.2 Applying Syntax Check and Automatic Conversion ...... 20 2.3 Thermodynamic Discontinuity Check ...... 23 2.4 Collision Limit Violation Check ...... 25 2.5 Invalid Duplicate and Pressure Dependent Reactions Check ...... 27 2.6 CVODE Error Message Improvement ...... 32

3 Results And Discussion 35

4 Conclusions And Future Work 39

REFERENCES 41

iii LIST OF FIGURES

1.1 Experimental ignition delay times from Somers et al. [39] for 0.75 percent 2,5- dimethylfuran in argon at 1 atm pressure with 20 percent uncertainty bars...... 4 1.2 Catalytic reforming system ...... 5 1.3 Example CHEMKIN file ...... 6 1.4 Model View Controller (MVC) pattern ...... 12 1.5 Django web code structure ...... 13

2.1 User data structure ...... 19 2.2 File data structure in ChemCheck ...... 19 2.3 Design diagram of ChemCheck ...... 20 2.4 Web interface from where a reaction with mismatched reaction rate parameters was detected by ChemCheck ...... 22 2.5 Plots of thermodynamic properties of CO2 ...... 24 2.6 Web interface of thermal discontinuity check for Konnov’s detailed mechanism ver- sion 0.6 ...... 25 2.7 Web interface of collision violation check ...... 27 2.8 Logarithmic plot of reaction rate coefficients in a natural gas mechanism [26] . . . 28 2.9 Filtered logarithmic plot of reaction rate coefficients in a natural gas mechanism [26] 29 2.10 ChemCheck PLOG reaction validation page [23] ...... 31

3.1 Result of PLOG reaction check from work of Hashemi et al. [16] ...... 37

iv LIST OF TABLES

3.1 Syntax error found in published models...... 36 3.2 List of reactions and corresponding temperature ranges in which CLC violations were identified for AramcoMech 1.3 [31]. Reactions were only screened at temper- atures between 300 and 2000 K [45] ...... 38 3.3 List of reactions and corresponding temperature ranges in which ChemCheck vio- lations were identified for AramcoMech 1.3 [31]. Reactions were only screened at temperatures between 300 and 2000 K ...... 38

v ABSTRACT

ChemCheck – A Cantera Debugging Tool to Detect Chemical and Syntax Errors in Kinetic Models

by Chao Xu Master of Science in Chemical Engineering Northeastern University, August 2020 Dr. Richard H. West, Adviser

This thesis presents a new, open-source, software tool — ChemCheck — to help visual- ize, diagnose, and correct the errors often found in the CHEMKIN and Cantera input files used to describe detailed kinetic models when modeling combustion chemistry. Detailed kinetic models are widely used in combustion modeling. Since a detailed kinetic model could consist of hundreds of species and thousands of reactions, the models are described in a machine-readable format that can be loaded by simulation software. Most of the software for reaction modeling either uses a CHEMKIN file (invented for the CHEMKIN software package) or gathers the information from a CHEMKIN-compatible file and generates their own input file. However, CHEMKIN files can come from various sources, so multiple errors can exist in these files leading to a failure of input file conversion or an unsuccessful or incorrect computation. Debugging the errors in a CHEMKIN file is tricky and time-consuming in certain situations, so a debugging tool to help detect problems can save unnecessary efforts on resolving the bugs, and allow researchers to focus on the computation and the science. Many distributed CHEMKIN files have syntax errors and bugs that prevent them from be- ing interpreted by other software. More contain typos and mistakes that can alter the chemical mean- ing. More still contain parameters describing chemistry that is infeasible or non-physical. Chem- Check is a web application powered by the Django framework and Cantera, an open-source software to model kinetic, transport, and thermodynamic processes. It allows users to upload CHEMKIN files and generate a new Cantera input file in YAML format. Syntax errors that prevent conversion are diagnosed by ChemCheck with diagnostic messages to help fix common mistakes, such as missing digits from the end of a line, missing exponential signs, and missing comment signs. After conver- sion, ChemCheck looks for several physical and chemical errors. ChemCheck detects species with discontinuous NASA polynomial data and plots figures to help users visualize the discontinuity. Bimolecular reactions exceeding the collision limit (usually in the reverse direction) are detected and rendered in a list. Another error which can be detected is reaction rate expressions which lead to an overall negative reaction rate coefficient. Determining the chemical reasons behind failures of the ODE solver (eg. CVODES) is always an obstacle for debugging kinetic models in Cantera, so another goal of ChemCheck is to interpret the ODE solver error messages and provide suggestions to change the chemistry, usually reducing stiffness. ChemCheck has successfully detected syntax and chemical errors in many models during the development process, with more test files being collected and applied to evaluate and develop the software.

vii Chapter 1

Introduction

1.1 Thesis Overview

1.1.1 Thesis Introduction

Detailed kinetic modeling is a way to model the reaction mechanisms taking place during a chemical process by describing all the essential elementary reactions, with thermodynamic data for all the intermediate species. It is a widespread technique used in different engineering fields which include complex chemical processes with a large number of intermediates, for example, combustion simulation [44], battery simulation [10], and design of molecular catalysts [18]. The simulation results for the chemical kinetics, transport, and thermodynamic processes highly depend on the quality of detailed kinetic models. The data of a detailed kinetic model is typically arranged in CHEMKIN format [22] which is composed of data to describe the reaction mechanism in detail, so obtaining an accurate CHEMKIN file is a prerequisite of a successful simulation. CHEMKIN files can be acquired from computational software, manually building from scratch, and published papers, etc., so the quality of the data varies. It is not rare that some CHEMKIN files have syntax error or bugs that prevent them from being interpreted by other simulation software. To help detect, visualize, and correct the bugs, a debugging tool named ChemCheck was developed for Cantera, and the code is hosted on Github https://github.com/comocheng/ ChemCheck. Since Cantera converts CHEMKIN files to the YAML format as the input file, the CHEMKIN file should have strict compliance with the required format to ensure a successful con- version. The syntax errors can lead to a failure of conversion or an input file with misinterpreted data which causes a system crash in the later computation. However, CHEMKIN files without syntax

1 CHAPTER 1. INTRODUCTION errors could cause problems during computation as well. An additional problem that could cause problems during a simulation is parameters that contradict the fundamental principles of physics. One advantage of ChemCheck is that it can help users to find some of these syntax errors and data without chemical or physical sense to save the efforts and time on debugging work. Another ben- efit of ChemCheck is that it provides users a graphical user interface (GUI) to make a better user experience, especially for users without coding experience.

1.1.2 Thesis Objectives

Since this thesis work is designed for Cantera to provide a GUI to help users detect, visualize, and correct bugs and errors in CHEMKIN files to avoid input file conversion failure and computation crashes, the following objectives are met:

Build a web framework based on Django with Create, Read, Update, Delete (CRUD) features • to achieve human-machine interaction

Apply a CHEMKIN syntax check, based on the current syntax check feature of Cantera. The • new syntax check feature includes:

– Redundant or unrecognized sign

– Missing magnitude sign “E” for Arrhenius pre-exponential parameters

– Missing index at the end of lines of a thermal entry of a species

– Index alignment of a thermal entry of a species

– The reaction expression does not match to rate parameters so Cantera cannot distinguish the reaction type, such as a falloff reaction with a set of PLOG reaction rate parameters

– Species with extended elemental numbers

Automatically generate interactive plots about the thermal properties of species with thermal • discontinuities

Check for all invalid Arrhenius parameters for pressure dependent reactions and duplicate • reactions

Automatically generate interactive plots of kinetic rate constants for all reactions • Detect the reactions violating collision limits •

2 CHAPTER 1. INTRODUCTION

Generate more helpful error messages for the ODE solver in Cantera • The scientific value of this work is to propose possible reasons causing stiffness of ODE system during numerical simulation and to help improve the detailed kinetic model to avoid the integration failure, by diagnosing the errors in CHEMKIN files.

1.2 Detailed Kinetic Models (DKM) Application

As we introduced in Chapter 1.1.1, this thesis is aimed to provide a convenient interface for CHEMKIN file debugging. To illustrate the importance of this work, an introduction to the application of detailed kinetic models is necessary. Detailed kinetic models (DKMs) are used in simulations in different engineering fields, and it is critical to these industries to generate accu- rate computational results, especially in processes involved in complex chemistry such as catalytic reforming, pyrolysis, and combustion. The paper authored by Keran P. Somers et al. [39] is chosen to discuss because they show detailed procedures about how to build and validate a DKM for 2,5-dimethylfuran (25DMF) py- rolysis and oxidation in their paper. The mechanism is interpreted by CHEMKIN-Pro [35]. The unimolecular decomposition, fuel radical reactions, unimolecular and bimolecular consumption re- actions of 5-methyl-2-furanylmethyl radical, and sub mechanisms of furan derivatives are discussed in the paper and included in their model. The thermodynamic data and transport data in the model is directly taken from other published studies about 25DMF. They introduced several characteristics such as pyrolysis behavior (thermal decomposition), ignition delay times (IDT), oxidation behavior, and laminar burning velocities of 25DMF measured by experiments to validate their model. The computational results based on their detailed kinetic model show good compliance with the experi- mental data in their paper. Figure 1.1 shows the comparison of IDT calculated by the model made by Somers et al. [39] and the experimental data measured by Sirjean et al. [38], and it is clearly illustrated that the experimental data is reproduced well under all conditions. It also accurately sim- ulates that the IDT decreases with increased temperature and oxygen concentration. As well as the low pressure ignition delay times comparison, they plotted the shock tube decomposition profile, jet-stirred reactor profile, and laminar burning velocity profile, against the experimental data to val- idate the model from different aspects. Because of the good agreement with the measured data in other literature, the model can be used in prediction of other characteristics of 25DMF. The research conducted by Somers et al. [39] is a classic research process in combustion modeling, and it shows

3 CHAPTER 1. INTRODUCTION that the simulation results of a kinetic model play a critical role in combustion model validation and improvement.

Figure 1.1: Experimental ignition delay times from Somers et al. [39] for 0.75 percent 2,5- dimethylfuran in argon at 1 atm pressure with 20 percent uncertainty bars. Lines are modelling calculations from Somers et al. [39] (—) and Sirjean et al. (– –) [38]

Wei et al. in 2008 [43] published a DKM for catalytic reforming. In their research, they simulate the naphatha (C12) catalytic reforming process and compare with the literature data to validate their DKM, generated by computational software which automatically builds large DKM. The data for calibration is gained from reforming plants, and they use their model to simulate the unit reforming operations which are the same as those used within reforming plants. The reforming process happens in several adiabatic serial plug flow reactors (PFR) as shown in Figure 1.2. In the modeling, reaction families, energy balances on the whole reforming system, catalytic deactivation, and coke deposition are considered to construct and trim the model. The final DKM consists of 546 reactions and 116 species, and shows great compliance with the literature data in light ends yield, total aromatic yield, C5 yield, and paraffin yield. Therefore, the model is reliable to simulate the experimental data under the tested conditions, and it is able to be applied in industrial process to predict the product quality and system operation cost. Besides, other properties in catalytic reforming process such as mixture properties, optimal operation conditions leading to desirable

4 CHAPTER 1. INTRODUCTION

Figure 1.2: Catalytic reforming system [43] production etc., can be calculated based on this model. Other optimizations and their simulated results can be accessed instantly, which is very convenient for process development. This example also demonstrates the value of detailed kinetic modeling.

1.3 Overview of CHEMKIN Format

R.J. Kee et al. proposed a CHEMKIN data format in 1989 [22] to describe gas-phase detailed kinetic models. The CHEMKIN [22] format is based on the NASA file format published in 1971 [29], which includes element data, species data, species’ thermodynamic data, reaction data, and a set of transport data. The element data contains all the involved elements including isotopes in the model. Similarly, species data block consists of all the related species in the DKM. Thermodynamic data can be a data block in the mechanism file or a standalone file which consists of the parameters to apply in NASA polynomial parameterization for species’ thermal property calculations. Transport data of a kinetic model includes Lennard-Jones potential well depth [33], collision diameter, dipole moment, polarizability, and rotational relaxation collision number, which can be used to derive viscosity, thermal conductivity, and diffusion coefficients; it is only required for computations involving transport process such as flame simulations or gas-solid interactions. An example CHEMKIN file is shown in Figure 1.3. This file is only for illustration purpose, and it does

5 CHAPTER 1. INTRODUCTION

Figure 1.3: Example CHEMKIN file

6 CHAPTER 1. INTRODUCTION not necessarily make any physical sense. In this model, the elements involved in the model are C and H, and there are four species in the model which are written in ”SPECIES” block. Then the thermal data block describes the suitable temperature range for the model at the beginning following with thermodynamic data for each species mentioned in ”SPECIES” block. In the ”REACTIONS” block, reactions incorporate species in previous data block are described with Arrhenius parameters of every species.

1.3.1 NASA Polynomials

McBride et al. in 1993 [30] reported thermodynamic data for a total of 1130 species in the gas phase, liquid phase, and solid phase, and transport data for 155 gaseous species. In that paper, thermodynamic coefficients for each species are provided in the CHEMKIN or NASA polynomial form. These coefficients are used to calculate the thermodynamic properties of a species including heat capacity (Cp) for one mole of species at constant pressure, enthalpy (H), and entropy (S), versus temperature (T ). This data format is well accepted by other computational software such as the CHEMKIN package, Cantera [15] etc. NASA polynomial equations are shown below:

Cp = a + a T + a T 2 + a T 3 + a T 4 (1.1) R 1 2 3 4 5 H a a a a a = a + 2 T + 3 T 2 + 4 T 3 + 5 T 4 + 6 (1.2) RT 1 2 3 4 5 T S a a a = a log T + a T + 3 T 2 + 4 T 3 + 5 T 4 + a (1.3) R 1 2 2 3 4 7

As shown in Figure 1.3, the “THERMO” block has 14 coefficients for species CH3 because the NASA polynomial equations are usually fit in two intervals of temperature, with a typical break- point at 1000K. The first seven coefficients are for the high temperature interval, and the last seven coefficients in the “THERMO” block are for the low temperature range.

1.3.2 Reaction Types

There are various types of reactions that could be written into a CHEMKIN file, and the reaction rate coefficient calculations should be treated differently. The fundamental theory of reaction ration coefficient modeling is the modified Arrhenius equation:

b Ea k = AT e RT (1.4)

7 CHAPTER 1. INTRODUCTION where k is the forward reaction rate coefficient, T is the absolute temperature, A is the temperature- independent pre-exponential factor, Ea is the activation energy, R is the gas constant, and b is a temperature exponent. Activation energy (Ea), temperature exponent (b), and pre-exponential factor (A) are specified in CHEMKIN files, so computational software takes temperature as input to calculate forward rate constant for reactions. However, reactions should be treated differently based on different reaction types when reaction rate constants are calculated. Because the Arrhenius parameters are only given for the forward rate constant calculation, the reverse rate constant is calculated from

kreverse = kforward/Kequil (1.5)

where kforward is the forward rate coefficient, kreverse is the reverse rate coefficient, and Kequil is the equilibrium constant which is calculated from

G log K = (1.6) equil RT where, G is the gibbs free energy change, R is the gas constant, and T is the temperature. Equation 1.6 can be rewritten as S H ln K = (1.7) equil R RT where S is the entropy change in the reaction and H is the enthalpy change in the reaction. S H If the thermodynamic discontinuity exists at the mid temperature, R and RT cannot be obtained S H Sproducts Sreactants accurately, because the R and RT of a reaction are calculated from R - R and Hproducts Hreactants RT - RT , which can be calculated from thermodynamic data of species in the reaction. The most common reaction type in a detailed kinetic model is an elementary reaction [22]. An elementary reaction has one or more species reacting to form products in a homogeneous phase with a single step, and it only has one transition state. The reaction rate coefficient of an elementary reaction can be obtained from Arrhenius equation directly. An example of elementary reaction is:

CO(g) + NO3(g) )* NO2(g) + CO2(g) (1.8)

A three-body reaction, suggested by Kee et al. [22], is a gas-phase dissociation or recombination reaction involving an arbitrary third body (M) reactant to take away the excess energy from the

8 CHAPTER 1. INTRODUCTION intermediate to form a stable product. In a three-body reaction, the expression is

H+O2 +M)* HO2 +M (1.9) and the reaction rate formula is

r = k[H][O2][M] (1.10)

Since all other species in the system are involved as the third body and they could have different collision efficiencies. The concentration of M is calculated as:

n [M] = ↵iCi (1.11) Xi=1 where n is the species number, Ci is the concentration of the ith species, and ↵i is the collision efficiency with a default value of 1.0. Another reaction type is the fall-off reaction, which is a three-body reaction with a low pressure limit. The reaction becomes an elementary reaction as the pressure increases. The expres- sion of a falloff reaction is:

CH3 +CH3 (+M))* C2H6 (+M) (1.12)

There are several ways to calculate falloff reaction rate constants, Lindemann suggested the follow- ing formula: P k = k ( r )F (1.13) 1 1+Pr to calculate the reaction rate coefficient between the low pressure limit and the high pressure limit, where k is the forward reaction rate constant, k is the forward reaction rate coefficient at the 1 high pressure limit whose Arrhenius parameters are given in the CHEMKIN file. Pr is the non- dimensional reduced pressure: k [M] P = 0 (1.14) r k 1 where k0 is the forward reaction rate coefficient at low pressure. Similarly, the Arrhenius parameters to calculate k0 are also given in the CHEMKIN file. The function F represents the weak collision broadening factor which is unity in the Lindamann form, but Gilbert et al [13] proposed details

9 CHAPTER 1. INTRODUCTION about the function F for unimolecular reactions in form:

log Pr + c 2 log F = 1+ log Fcent (1.15) " n d(log Pr + c) # h i where

c = 0.4 0.67 log F cent n =0.75 1.27 log F cent d =0.14

The Fcent is expressed by the formula:

F =(1 a)exp( T/T ⇤⇤⇤)+a exp( T/T ⇤)+exp( T ⇤⇤/T ), (1.16) cent where T ⇤⇤ is optional because the last term could be omitted, and a, T ⇤⇤⇤, and T ⇤ are mandatory to be specified in the CHEMKIN file as the format shown below:

H+O2(+M)=HO2(+M) 1.480E+12 0.6 0.0 LOW /3.50E+16 -0.41 -1116.0/ TROE /0.5 100000 10/ AR/0.0/ H2O/10.6/ H2/1.5/ CO2/2.4/ where T ⇤⇤ is omitted, and the parameters following ”TROE” represents a, T ⇤⇤⇤, and T ⇤. Besides, the first set of Arrhenius parameters is for rate coefficient calculation in the high pressure limit, and the second set of Arrhenius parameters following the word ”LOW” is for the three-body rate coefficient calculation in the low pressure limit. The last line specifies the collision efficiency to calculate the third-body concentration in low pressure. Stewart et al. [40] proposed another method to calculate the weak collision broadening factor (F ) as

X F =[a00 exp( b00/T )+exp( T/c00)] (1.17) where 1 X = 2 (1.18) 1+log Pr However, Kee et al. [22] add two additional parameters in this expression to represent the weak collision efficiency factor c in case users want to correct strong collision efficiency with c. In this

10 CHAPTER 1. INTRODUCTION

case, users can specify 2 optional factor, d and e, in a CHEMKIN file as well as a00, b00, c00, and the expression of F turns to:

X e F =[a00 exp( b00/T )+exp( T/c00)] dT . (1.19)

Another type of reaction is pressure dependent Arrhenius reactions. A set of Arrhenius parameters are specified at different reference pressure points, and the forward reaction rate co- efficients at a reference pressure point can be calculated directly from the given parameters. To calculate the reaction rate coefficient between the two reference pressure points, the logarithm of the reaction rate coefficient at these two reference pressure points are used in this formula:

log P log P log k = log k + (log k log k ) low (1.20) low high low log P log P high low In addition to these common reactions that often appear in CHEMKIN files, other reac- tions such as surface reactions for heterogeneous phase, Chebyshev reactions, and Landau-Teller reactions etc., are also used in CHEMKIN to satisfy different modeling requirements.

1.4 Django For Web Development

Django [11] is a Python tool for rapid web development. It provides an efficient and secure web developing environment which allows users to build a web-based application within a short cycle. Django applies Python as the back end language to handle HTTP requests from user clients (e.g., web browsers) and data in the database; meanwhile, it has different built-in functions to achieve almost every feature that a website needs such as an authentication system, error handling system etc. Django allows not only data rendering in multiple formats (JSON, XML, HTML etc.), but also interaction with databases and other functionalities. The security of the website is taken care of by Django by default, which prevents some potential security issues such as clickjacking attacks [19], cross site request forgery (CSRF) attacks [3] etc. Besides, code written with Django framework is maintainable due to its ”Model View Controller” (MVC) design pattern. The MVC pattern is a common design pattern used in graphical user interface (GUI) development. Model organizes the data in a certain structure, View is responsible of showing data on the client side, and Controller communicates between the Model and View to update data and their demonstration. The relationship of MVC is illustrated in Figure 1.4. To achieve the human-machine interaction, users

11 CHAPTER 1. INTRODUCTION

Figure 1.4: Model View Controller (MVC) pattern [9]

12 CHAPTER 1. INTRODUCTION send an HTTP request to the web server, and the server processes the request based on the requested URL and returns the HTTP response back to the client side. The above process is distributed into several steps handled by different files with language compatibility in Django. A HTTP request is passed to urls.py first to call the proper function in views.py that handles the logic. As a Django convention, the code written in views.py is functioning as Controller which handles the logic to communicate the interface demonstration code (View) in template.html and the data structure definition in models.py (Model). Another proof of flexibility of Django is that the Controller logic is able to be written in Javascript in template.html as well. Figure 1.5 is the code structure of a Django website.

Figure 1.5: Django web code structure [9]

1.5 Cantera Application in Combustion Modeling

Cantera [15] allows users to conduct computations for kinetic, transport and thermody- namic processes in multiple interfaces including Python, Matlab, C++, and 90, and it is used

13 CHAPTER 1. INTRODUCTION in alternative engineering fields such as combustion, detonations, electrochemical energy conversion and storage, plasmas etc. This thesis work is mainly related to Cantera applications in combustion. One of the most common Cantera [15] applications in combustion is ignition delay time (IDT) and IDT prediction under conditions where negative temperature coefficient (NTC) behavior is exhibited. IDT is defined as the time interval between the start of gas being injected into a combustion chamber and the start of combustion [25]. IDT normally decreases as the temperature of the fuel increases, but the opposite is observed in certain temperature intervals, and is referred as negative temperature coefficient (NTC) behavior. IDT and NTC are important characteristics to describe a type of fuel or fuel mixture, and can be measured in relatively simple experiments. Hence, IDT and NTC behavior are regarded as benchmarks to validate a combustion model. Since IDT can be measured by different combustion chambers such as rapid compression engines, shock tubes etc., Cantera [15] allows the user to set different types of reactors for the required calculation. The detailed kinetic models are written into the YAML input format and defined in Cantera [15] first. The reactor type and the reactor condition is then defined, and the ignition delay time under the set-up condition can be calculated by Cantera [15]. Users are able to use this with a plotting tool to plot the IDT and NTC behavior to compare with the experimental data.

1.6 Collision Violation For Bimolecular Reactions

In combustion modeling, collision theory can be used to explain Arrhenius equations and determine the bi-molecular reaction collision limit in the gas phase. According to collision theory, only the effective collision among reactant molecules or atoms results in a reaction. An effective collision has three pre-requisites: first, the reactants must collide with each other; the collided species must possess energy no less than the activation energy to allow electron rearrangement and new bond formation; the reactants colliding with each other must be in an appropriate orientation which tends to make one atom from each reactant contact and form the bonds required by the products. The reaction rate of a bi-molecular reaction can be expressed based on collision theory:

Ea r = knAnB = Z⇢e RT (1.21)

where k is the second order reaction rate constant, nA,nB is the number density of species A and 3 3 1 species B in units of m , respectively, Z is the collision frequency in units of m s , ⇢ is the

14 CHAPTER 1. INTRODUCTION

steric factor, Ea is the activation energy, R is the gas constant, and T is the temperature. The collision frequency Z is derived from kinetic theory. The average speed of molecules in kinetic theory is 1 8k T 2 v¯ = B . (1.22) ⇡m ✓ ◆ where kB is the Boltzmann’s constant, and m is the molecular or atomic mass of the species in the system. The average distance traveled by a particle to make a collision with one of the static target particles is called the mean free path l, and it is calculated from formula

1 l = (1.23) n where n is the number of target particles per unit volume, is the collision cross section. In bimolecular reactions, if a particle of species A is given and all particles of species B are fixed, the time it travels to collide with a particle of species B can be expressed as

1 t = (1.24) nBABv¯A where t has the unit s, nB is the number of particles of species B per unit volume, AB is the 2 collision cross section of species A and species B which equals to ⇡(rA + rB) where rA is the collision radius of species A and rB is the collision radius of species B, v¯A is the velocity of the particle A. Since the particles of species B are also moving, the relative velocity of A to B v¯AB is introduced to replace v¯A in 1.24 to generate equation

1 t = . (1.25) nBABv¯AB

The relative velocity of A to B can be calculated by plugging the reduced mass µAB into 1.22. The expression of reduced mass µAB is

mAmB µAB = (1.26) mA + mB where mA, mB is the molecular mass of A species and B species, respectively. Consequently, the total collision frequency Z of all particles of species A with all particles of species B can be calculated as n v¯ n Z = A AB = A . (1.27) l t

15 CHAPTER 1. INTRODUCTION

3 1 Plugging 1.26, 1.22, 1.25 into 1.27 yields the expression of collision frequency Z in unit m s :

1 1 8k T 2 8k T 2 Z = n n B = 106N 2 [A][B] B (1.28) A B AB ⇡µ A AB ⇡µ ✓ AB ◆ ✓ AB ◆

3 Where nA, nB are number of particles of species A per m and number of particles of species B 3 per m , so [A] and [B] are the concentration of species A and B in unit mol/L, respectively, NA is 1 the constant with unit mol . Plugging 1.28 into 1.21 yields:

Ea r = z⇢[A][B]e RT (1.29) where 6 2 8kBT 1 z = 10 NAAB( ) 2 , (1.30) ⇡µAB so the reaction rate constant formula can be derived from 1.29, 1.30, 1.21 as:

Ea 8⇡kBT k = NAAB⇢ e RT (1.31) s µAB

By comparing it with the Arrhenius equation, it is obvious that the pre-exponential factor A is equal to z⇢. Because the rate coefficient calculated from estimated collision frequency always fails to comply with the experimental data, especially for large complex molecules, a steric factor ⇢ is introduced to correct the calculated collision frequency Z to achieve a good compliance with the experimental data. In this case, the steric factor can be calculated as

⇢ = A/Z, (1.32)

Ea where ⇢ is less than 1 in most cases. In 1.31, the term e RT is the fraction of collisions with enough energy to overcome the energy barrier, so the reaction rate constant should not surpass the collision rate constant. To calculate collision rate constant, Dongping Chen et al. [7] introduced this formula

8⇡k T B 2 (1,1)⇤ kcoll = AB⌦ NA (1.33) s µAB

(1,1) where kB is the Boltzmann constant, T is the temperature, is the collision diameter, and ⌦ ⇤ is the collision integral. The superscript are the exponents used in collision integral [6]. The collision

16 CHAPTER 1. INTRODUCTION integral is simplified by Neufeld et al. [33] as reduced integral:

0.14874 0.7732T 2.437887T ⌦⇤ =1.16145T ⇤ +0.52487e ⇤ +2.16178e ⇤ (1.34)

where T ⇤ is the reduced temperature calculated from

kBT T ⇤ = (1.35) ✏ where ✏ is the Lennard Jones potential well depth. In this chapter, the fundamental knowledge to build this thesis is introduced. The method- ology used to develop the debugging tool will be described in detail in next chapter.

17 Chapter 2

Methodology Design

2.1 Building Create, Retrieve, Update, Delete (CRUD) Operations

As we introduced in 1.1, the ultimate goal of this thesis work is to bring a user friendly, open-source, web-based debugging tool for Cantera [15] users to visualize, diagnose, and fix er- rors in their CHEMKIN files. The code for this tool is hosted on https://github.com/ comocheng/ChemCheck. The first step to achieve this is to build a web framework to allow users to operate their files on ChemCheck website. To achieve this, we need to establish a file management system which allows users to create, retrieve, update, and delete (CRUD) files on ChemCheck. CRUD are four basic operations on Django [11] web to allow users to interact with the database. The create operation creates data in certain data structure in the database, existing data entries can be viewed and queried by the retrieve operation, the update operation edits the existing data entry, and data entries can be removed by the delete operation. As we introduced in Section 1.4, there are two applications in ChemCheck to accom- plish different functionalities. Therefore, two models are created to arrange the different data in Django [11] built-in user database where the data structure is predefined, and SQLite database where the data structure can be defined according to the developer’s need. One is the “User” model where users’ account information such as user number, password, and email address is saved. This data structure is shown in Figure 2.1. The other model named “upload” manages file data. Each model has 9 fields for saving different data types, and a data entry is written in SQLite database according to the structure of the “upload” model once a model is created by uploading CHEMKIN files on ChemCheck. One of the fields in the data entry is the user field which stores the user name of the user who creates this data entry. There are five file fields for saving the CHEMKIN mech-

18 CHAPTER 2. METHODOLOGY DESIGN

Figure 2.1: User data structure anism file, thermodynamic file, transport file, surface file, and converted YAML file. A text field is designated to save the error message from a failed file conversion. The last two fields hold the reaction temperature and pressure. The model composition is shown as Figure 2.2.

Figure 2.2: File data structure in ChemCheck

The code structure starts with the authentication system. Users’ information can be cre- ated or modified, and a login operation is required. The Django built-in authentication system is applied for file classification and security: only a user who has logged in on the website is able to upload and convert files which created by that user. After a user has logged in, files (mechanism, thermodynamic, transport, and surface files) can be uploaded, and the files are saved on the back end according to the username. Since each data entry has a “user” field, users are verified and only allowed to access the files uploaded by themselves; otherwise, a “Page Not Found (404)” error is raised. Users can access their file data by the list view where the data entries are filtered and retrieved according to the request username and model ID. Each data entry has a detail view to display how many files are uploaded to the data entry, The update operation of each file are allowed from there. File update functionality is achieved by the Django generic view function, and it allows users to modify or delete files in the current model. An online editor, ACE editor, is incorporated into ChemCheck so users can edit their files on the website and download to their local directory. File conversion can be done from the model detail view based on Cantera file conver- sion script ck2yaml.py, and the error message is written in the error message field in the same data entry and shown on the web interface so that users can adjust their file to correct syntax er-

19 CHAPTER 2. METHODOLOGY DESIGN rors accordingly. If the conversion completes without any error, a new YAML file is created in the converted file field in the same model as the CHEMKIN files, which is a key factor for later calculation. After a successful conversion, the NASA polynomial discontinuity check, invalid reaction rate coefficients check for PLOG reactions and duplicate reactions, and collision violation check for bimolecular reactions, can be completed. The design diagram is shown in Figure 2.3.

Figure 2.3: Design diagram of ChemCheck

2.2 Applying Syntax Check and Automatic Conversion

The file conversion is based on the ck2yaml.py script that Cantera applies to convert CHEMKIN files to YAML input files. Since some error messages raised by the Cantera conversion script do not contain the solution to syntax errors, some Cantera users struggle with how to fix the error during file conversion. One of our goals is to provide a more detailed error message with possible fix suggestions, so ChemCheck makes suggestions based on the Cantera error message. As well as the logging and trace-back information raised by Cantera itself, the error displaying interface shows eight more lines around the problematic line where the error happen, and, crucially, suggestions for fixes.

20 CHAPTER 2. METHODOLOGY DESIGN

After collecting and testing about 50 kinetic models (results will be discussed in Chapter 3), the most frequent error thrown by Cantera is the whole thermodynamic block of the problematic species, with an error message suggesting that there is an error while reading thermodynamic entry. However, this error can be thrown due to various reasons which are not specified in the error mes- sage. It is common that an unexpected indentation or characters could cause an error when parsing the data in the first line of a thermodynamic data block, and a missing index at the end of thermody- namic data or an index out of the position 80 (or 79 if the count is from index 0) could lead to format problems as well. To detect the specific problem in a thermo entry reported by Cantera, ChemCheck uses Python regular expressions to parse the error message first. If the error message matches the problematic thermo entry error pattern, ChemCheck will locate the entry and check for the index at the end of each line in the thermodynamic entry, and suggest the missing index or out-of-position index. Otherwise, ChemCheck mentions that there could be unexpected indents or characters and suggests user to check the format of the thermodynamic data entry and compare with the standard CHEMKIN thermodynamic data block. The diagnosis for a line in a thermodynamic file that starts with redundant or special characters is to mention that there could be one or more special characters in the error line that should be deleted or replaced. Sometimes some species specified in the mechanism file do not have associated transport data in the transport file, so ChemCheck recommends manually adding the species data into the transport data file, or deleting the species which lack transport data from the mechanism file, or deleting the transport file and converting the files again. The kinetic model provided by Zhao [24] is detected to have a reaction with two types of parameters that prevent the software from successfully determining the reaction type, and the screenshot of the web interface after the detection of this model is shown in Figure 2.4. The illustrated reaction equation is a three-body reaction with a series of PLOG reaction parameters, so the reaction type cannot be determined from their format, and the parameters cannot be written into the input file. The advice to fix this problem is checking the original data source to ensure that there is no copy error and contact the original author to correct the data. One tricky problem is the ValueError thrown by Python because the string is not parsed to float correctly when reading the parameters or elemental compositions. It is hard to provide an accurate diagnosis message about the specific reason, since the error could happen in complicated situations. Unexpected indents, missing magnitude sign “E”, or unexpected characters could all lead to a failure of string-float conversion, so the current version of ChemCheck declares

21 CHAPTER 2. METHODOLOGY DESIGN

Figure 2.4: Web interface from where a reaction with mismatched reaction rate parameters was detected by ChemCheck

22 CHAPTER 2. METHODOLOGY DESIGN these possible reasons, and suggests users to compare with the standard CHEMKIN format and check their original data source. It is also common that the thermodynamic data of a species with extensive elemental composition (usually more than three digits) such as C1250H249

BIN7BJ C 1250H 249 G 300.00 3500.00 1390.00 1 2.12942777e+03 2.10904362e+00-5.90181843e-04 4.95662128e-08 1.60771953e-12 2 -6.31142548e+05-1.14103717e+04-1.08227805e+03 1.13513625e+01-1.05639073e-02 3 4.83312758e-06-8.58745044e-10 2.61711671e+05 5.14187909e+03 4 cannot be properly parsed due to the large number of elements. This prevents the software from splitting and parsing the string correctly. A special data arrangement shown below should be applied in that circumstance to ensure the data can be parsed accurately.

BIN7BJ C 0H 0 G 300.00 3500.00 1390.00 1& C 1250 H 249 2.12942777e+03 2.10904362e+00-5.90181843e-04 4.95662128e-08 1.60771953e-12 2 -6.31142548e+05-1.14103717e+04-1.08227805e+03 1.13513625e+01-1.05639073e-02 3 4.83312758e-06-8.58745044e-10 2.61711671e+05 5.14187909e+03 4

This error diagnosis code is revised in the ck2yaml.py script to detect the inappropriate format for thermo data of species with extensive elemental composition and provide a tip to check the Cantera Website about debugging instructions. The sample data arrangement for thermodynamic data of big molecules is added in the instruction on the website as a reference to users. One of the reasons that Cantera generates input file from CHEMKIN files is to avoid incorrect syntax because various syntax errors can be generated in CHEMKIN files for multiple reasons. Developing a perfect software to get rid of these errors requires a long-term contribution and maintenance to the software as more problems are being discovered with increasing kinetic model generation. Therefore, more work will be done on ChemCheck to improve the accuracy of syntax error detection and diagnosis in the future.

2.3 Thermodynamic Discontinuity Check

As we discussed in Section 1.3.1, NASA polynomial parameterization is applied to cal- culate the thermodynamic properties of a species. As it is defined in the CHEMKIN software documentation, the value and the derivative of heat capacity, enthalpy, and entropy of a species calculated from low temperature range parameters and high temperature range parameters should be equal at the mid temperature. Three plots about thermodynamic properties of CO2 are shown as example in Figure 2.5, the thermodynamic data of CO2 is

23 CHAPTER 2. METHODOLOGY DESIGN

CO2 L 7/88C 1O 20 00 0G 200.000 6000.00 1000.0 1 0.46365111E+01 0.27414569E-02-0.99589759E-06 0.16038666E-09-0.91619857E-14 2 -0.49024904E+05-0.19348955E+01 0.23568130E+01 0.89841299E-02-0.71220632E-05 3 0.24573008E-08-0.14288548E-12-0.48371971E+05 0.99009035E+01-0.47328105E+05 4

As shown in the data block, the mid temperature is 1000. Each property’s curve is continuous at the mid temperature.

Figure 2.5: Plots of thermodynamic properties of CO2

However, it is often seen in combustion models that some species in the model have a large difference at the mid temperature. Thermodynamic properties are important factors in a combustion simulation, and the discontinuity in heat capacity, enthalpy, or entropy at the mid temperature could cause a numerical integration failure when simulating the evolution of the reacting system’s chem- ical compositions with respect to time. Thermodynamic discontinuity can result in a non-physical reverse rate coefficient estimation as well. As discussed in Section 1.3.2, the thermodynamic data S S of species in a reaction (reactants and products) are used to derive R and RT of a reaction to calculate equilibrium constant of the reaction at a temperature point. Therefore, inaccurate result at the mid temperature of a species could generate an equilibrium constant with a large deviation. The inaccurate equilibrium may lead to a non-physical reverse rate coefficient that cannot be reached in a real reaction. Even if the NASA polynomial discontinuity at mid temperature does not necessar- ily result in a failed simulation, resolving the discontinuity helps prevent ODE integration failures during combustion modeling. ChemCheck inspects all the species in thermodynamic data of a kinetic model and calcu- Cp H S Cp lates the R , RT , and R of each species at the specified mid temperature of each species. The R , H S RT , and R with respect to the temperature of a species is plotted if any discontinuity is detected in any of the thermodynamic properties. The plot tool incorporated in ChemCheck is Bokeh [5] which allows the interactive graph to be plotted on the website, and to provide operations such as zoom

24 CHAPTER 2. METHODOLOGY DESIGN in, zoom out, download graph, etc. An example of web interface of thermal discontinuity check for Konnov’s detailed mechanism version 0.6 [23] is displayed in Figure 2.6.

Figure 2.6: Web interface of thermal discontinuity check for Konnov’s detailed mechanism version 0.6 [23]

2.4 Collision Limit Violation Check

As introduced by Lu et al. [27], there are extensive reactions and species in kinetic mech- anisms published in recent years, which can even reach around hundreds of thousands of reactions and tens of thousands species. Chen et al. [7] noticed that the scale of kinetic mechanisms has been

25 CHAPTER 2. METHODOLOGY DESIGN significantly increased in the past few years; however, the reaction rate estimation has not improved as rapidly as the scale of these kinetic mechanisms, so unrealistic reaction rate coefficients can exist in kinetic models leading to non-physical predictions. Chen et al. [7] took 20 kinetic models from 5 consecutive issues of Combustion and Flame and tested the collision violation factor (k/kcollision) over different temperature points. They found that nearly three quarters of these models have non- physical rate coefficients that violate the collision limit, which suggests that computational tools like Cantera should add functions to automatically detect these reactions. Based on equation 1.33, the collision violation check is developed in ChemCheck to con- duct the rate coefficient screening for bi-molecular reactions. As introduced in Chapter 1.6, reaction temperature T , Lennard Jones potential well depth ✏ and Lennard Jones potential collision diameter are required to calculate collision rate coefficient. Since ✏ and are usually provided in transport data file, temperature and pressure is taken as an input and saved in temperature and pressure field in the data entry. Pressure input is required for calculating reaction rate coefficients of PLOG and fall-off reactions that may exist in the kinetic model. The default value for temperature field in a data entry is 298K, and the default value for pressure field is 1 atm. ChemCheck employs Cantera for loading the YAML input file and calculates the forward and reverse rate coefficients. The rate coefficients of bi-molecular reactions are compared with their collision limit. The reactions that exceed the collision limit are reported on the web interface. A detailed mechanism for natural gas oxidation combined with the “NOMecha2.0” sub-mechanism for N-species formation [26] was dis- covered to have 37 reaction rate coefficients exceed the collision limit at 300 K, 1 atm. For the sake of simplicity, here we only show the web interface with part of these 37 reactions in Figure 2.7. The collision limit requires transport data of a kinetic model, but the transport data is not always provided in a published paper. In this case, it is hard to calculate the exact collision limit for each bi-molecular reaction, so ChemCheck provides another option to help users visualize possible collision violations. An interactive plot demonstrating the logarithm of the forward rate coefficients with log base 10 and the reverse rate coefficients with respect to the reaction index is generated by Bokeh [5], which allows users to adjust the cutoff to filter out suspicious reaction rate coefficients exceeding the user specified value. Figure 2.8 is the a plot with logarithm of all rate coefficients versus reaction index in a natural gas oxidation mechanism combined with the “NOMecha2.0” sub- mechanism [26] at 300 K, 1 atm. Forward reaction rate coefficients are shown as blue points, while reverse rate coefficients are shown in red. The tool bar at the bottom is introduced for users to choose the cutoff value. Figure 2.9 is a plot with the magnitude of collision limit specified as 22.41 on the tool bar, so six reactions with reaction rate coefficients greater than 22.41 are regarded

26 CHAPTER 2. METHODOLOGY DESIGN

Figure 2.7: Web interface of collision violation check as suspicious reactions and shown at the bottom. The figure can also be adjusted according to the cutoff on tool bar. The advantage of this method is that all the reactions in the model can be checked for collision violations, instead of only bimolecular reactions being screened.

2.5 Invalid Duplicate and Pressure Dependent Reactions Check

According to Arrhenius equation, a rate coefficient is negative if the pre-exponential factor A is negative, but a negative A is not allowed in a PLOG reaction if only one set of Arrhenius parameters is given at a reference pressure point due to the logarithmic interpolation for PLOG reaction rate constant calculation. For “PLOG” rate expressions (see equation 1.20), Arrhenius parameters at two reference pressure points are required to calculate the reaction rate coefficient at the pressure point between the two reference pressure points. However, two sets of Arrhenius parameters may be given at the same reference pressure point, and the negative pre-exponential factor A is only allowed if the sum of rate coefficients at this pressure point is positive. Hence, the negative pre-exponential factor A is only recognized as a mistake when there is only one set of Arrhenius parameters at a pressure point. For a reference pressure point with two sets of Arrhenius parameters, the reaction rate coefficient at this pressure may be used in equation 1.20 as a reference

27 CHAPTER 2. METHODOLOGY DESIGN

Figure 2.8: Logarithmic plot of reaction rate coefficients in a natural gas mechanism [26]

28 CHAPTER 2. METHODOLOGY DESIGN

Figure 2.9: Filtered logarithmic plot of reaction rate coefficients in a natural gas mechanism [26]

29 CHAPTER 2. METHODOLOGY DESIGN

rate coefficient (klow, or khigh) to calculate the rate coefficient at other pressure point. The sum of these two reaction rate coefficients at the reference pressure and temperature point must be positive; otherwise, the logarithm of the rate coefficient is invalid. Because PLOG reactions do not specify the valid temperature range, Cantera validates the rate coefficients for PLOG reactions in a kinetic model at temperature points 200, 500, 1000, 2000, 5000, and 10000 K, and raises an error about the PLOG reaction with an invalid rate coefficient and its reaction condition if a negative reaction rate is detected at any of those temperatures. For illustration purpose, we analyzed two PLOG reactions from the model made by Goldsmith et al. [14]. Reaction 567 is a reaction with problematic PLOG rate coefficient parameters from the original data source, and we modified one of the pre-exponential factors A in reaction 566 to be negative at P =0.316 atm and P =1.0 atm to test the performance of PLOG reactions check. CH2CHOO=CO+CH3O 1.16E-01 3.16 18420.0 PLOG/3.160E-01 -1.80E+33 -7.27 33760.0/ PLOG/3.160E-01 8.69E-50 16.63 -3900.0/ PLOG/1.000E+00 -3.83E+33 -7.20 35100.0/ PLOG/1.000E+00 1.19E-39 13.61 -1317.0/ CH2CHOO=CO2+CH3 6.03E-03 3.46 17420.0 PLOG/1.000E+02 -2.51E+03 1.41 14420.0/ PLOG/1.000E+02 4.05E-09 5.14 10480.0/

When Cantera validates the demonstrated reactions the following error is thrown:

*********************************************************************** CanteraError thrown by Plog::validate: Invalid rate coefficient for reaction ’CH2CHOO <=> CH3O + CO’ at P = 32018.699999999983, T = 500.0 ***********************************************************************, where only the invalid condition P =0.316 atm, T = 500 K for reaction 566 is indicated. However, there could be many PLOG reactions with invalid rate coefficients at various reference pressure and temperature points. It would be more helpful to detect all the invalid PLOG reactions and their invalid reaction conditions at once, so ChemCheck validates all the PLOG reactions and their reference reaction conditions and reports all the reactions which do not pass the validation as an error at the end. In the example, reaction 566 is negative at P =0.316 atm, T = 500 K, T = 1000 K; P =1.0 atm, T = 500 K, T = 1000 K, and reaction 567 is invalid at P = 100 atm, T = 500 K, so ChemCheck reaction rate validation for the example above indicates all these suspicious conditions, which is shown in Figure 2.10. A revision of the Cantera source code is also made to detect all the erroneous PLOG reactions. Pull request 903 on Cantera’s Github page is created for this revision aiming to help

30 CHAPTER 2. METHODOLOGY DESIGN

Figure 2.10: ChemCheck PLOG reaction validation page

31 CHAPTER 2. METHODOLOGY DESIGN

Cantera users who feels uncomfortable with using web application. The error message for the demonstrated reactions thrown by Cantera is modified to

*********************************************************************** CanteraError thrown by Plog::validate: Invalid rate coefficient for reaction ’CH2CHOO <=> CH3O + CO’ at P = 32018.699999999983 , T = 500.0 Invalid rate coefficient for reaction ’CH2CHOO <=> CH3O + CO’ at P = 32018.699999999983 , T = 1000.0 Invalid rate coefficient for reaction ’CH2CHOO <=> CH3O + CO’ at P = 101324.99999999999 , T = 500.0 Invalid rate coefficient for reaction ’CH2CHOO <=> CH3O + CO’ at P = 101324.99999999999 , T = 1000.0 Invalid rate coefficient for reaction ’CH2CHOO <=> CH3 + CO2’ at P = 10132499.999999985 , T = 500.0 ***********************************************************************

Because this change may lead to a significant revision of Cantera error handling, keeping this im- proved PLOG validation as a standalone function could be a better option. The same debugging strategy is applied for duplicate reactions. The duplicate reactions are classified in duplicate elementary reactions and duplicate PLOG reactions. Since duplicate PLOG reactions take the sum of Arrhenius rate coefficients as the reaction rate coefficient for a reaction at certain temperature and pressure condition, the sum should be positive to ensure the logarithmic interpolation can be applied, but an individual rate expression may be. Similarly, for duplicate elementary reactions, the sum of reaction rate constants from the same reaction is taken as the rate constant for the reaction, and the rate constant should not be negative for mathematical reason even if the expression of one of the duplicate elementary reactions can be negative. The duplicate reaction rate coefficient screening is conducted for both categories using different algo- rithms. The invalid reactions are raised in two different formats. The error message about invalid duplicate PLOG reactions is the same as the one we mentioned earlier in this chapter, and the error message about invalid duplicate elementary reactions consists of the offending reaction equation and the Arrhenius parameters which lead to a negative rate coefficient.

2.6 CVODE Error Message Improvement

Combustion simulations involve complicated stiff ordinary differential equation (ODE) systems such as mass and energy conservation, and the kinetic models used for these simulations may contain tens of thousands of species and hundreds of thousands of reactions. Numerical in- tegration is widespread in combustion modeling to minimize the computational cost. Cantera [15]

32 CHAPTER 2. METHODOLOGY DESIGN integrates using CVODES [17] to help users solve for stiff ODE system numerically. CVODES is a solver developed as part of the SUNDIALS (SUite of Nonlinear and DIfferential/ALgebraic Equation Solvers) software package [17] applying various strategies to solve for stiff and non-stiff ODE systems. Cantera [15] provides various reactors to form a reactor network to satisfy different simulation requirements, and the ODE system of the reactor network is automatically solved by CVODES [17] which is configured by Cantera in the source code. In ignition delay time (IDT) simulations, Cantera loads the input YAML file to define the gas mixture and sets the reactor conditions such as temperature, pressure, stoichiometry, etc. for each reactor. Next, all the defined reactors are put into a reactor network accordingly, and Cantera’s built-in function ReactorNetwork helps users to set the timestep in CVODES for numerical integration. However, if the integration fails for some reason, such as inaccurate thermodynamic information for species or problematic kinetic data, the error message provided by CVODES is not clear about which species or reactions causes the stiffness as only the component indices are shown in the error message from CVODES. A sample case named “CanteraError thrown by CVodesIn- tegrator::step: CVodes error encountered. Error code: -3” is taken from the Cantera Google User Group for illustration purpose, where the user receives an error message as demonstrated below in an ignition delay time calculation.

*********************************************************************** CanteraError thrown by CVodesIntegrator::step: CVodes error encountered. Error code: -3 At t = 0.000295852 and h = 9.29322e-16, the error test failed repeatedly or with |h| = hmin. Components with largest weighted error estimates: 660: 141.876 657: -122.15 7: 8.71207 2: -0.00422197 664: 0.000340841 661: -0.000103909 14: 2.29653e-05 665: 1.91783e-05 663: 1.54839e-05 76: 1.78792e-06 ***********************************************************************

To help users visualize the suspicious species and reactions, the modification is applied in Cantera C++ source code. The code change is hosted on https://github.com/12Chao/cantera/ tree/cvode error improvement, which provides the reactor type and species names ac- cording to the component indices in CVODES error message. Component indices in the error message are captured and translated into the actual chemical information by the Cantera function componentName. The modified error message for the same case is then shown as:

33 CHAPTER 2. METHODOLOGY DESIGN

*********************************************************************** CanteraError thrown by ReactorNet:Complementary CVODE error information: *********************************************************************** CanteraError thrown by CVodesIntegrator::step: CVodes error encountered. Error code: -3 At t = 0.000223256 and h = 1.67865e-14, the error test failed repeatedly or with |h| = hmin. Components with largest weighted error estimates: 660: 469.1331845281508 657: -406.8485600265133 7: 14.724462168490367 664: 0.012463966082660307 2: -0.006975787101004809 661: -0.0012161505126923986 14: 0.0008966877668858371 665: 0.0005651965912846613 663: 0.0005304535754452601 76: 5.3872026829489106e-05 *********************************************************************** 660: IdealGasReactor_1: S(30684) 657: IdealGasReactor_1: S(29494) 7: IdealGasReactor_1: H(3) 664: IdealGasReactor_1: S(31941) 2: IdealGasReactor_1: temperature 661: IdealGasReactor_1: S(30810) 14: IdealGasReactor_1: HO2(10) 665: IdealGasReactor_1: S(31942) 663: IdealGasReactor_1: S(31940) 76: IdealGasReactor_1: C7H15(72) ***********************************************************************

It is expected to also provide the suspicious reactions which includes the species mentioned in the error message, but this has not been applied yet. However, users can compare the CVODES [17] error message with the result from the collision violation check to locate the reactions containing the problematic species. The features that developed so far are able to provide help for users on CHEMKIN file debugging; more test results and discussion will be made in next chapter.

34 Chapter 3

Results And Discussion

To test the performance of syntax check on ChemCheck, a series of published CHEMKIN models were converted to Cantera [15] input files. In table 3.1, we show 15 published kinetic models with various syntax errors detected by ChemCheck. The 15 kinetic models are selected from the test DKMs for ChemCheck, and the test DKMs were randomly selected from the kinetic models database built by the CoMoChEng lab which collects recently publised DKMs. The errors we encountered most frequently were missing line index and line index out of position at the end of thermodynamic entry of a species. Most of the published models with syntax errors can be detected and provided helpful suggestions, but some errors are very rare and hard to diagnose accurately. For example, the element sign ”HE” and ”NE” in thermodynamic data is expressed as ”HE+” and ”NE+”, but ”HE+”,”NE+” are not mentioned in mechanism file in the model made by Hanfeng Jin et al. [20], and these two elements are not recorded in the mechanism file. The possible fix could be either commenting out or deleting these two thermodynamic entries or delete the “+” signs. Because it is not a general case, it is hard to provide accurate suggestion about it. Another example is the formatting error which could happen for various reasons. The indentation error could exist at any position in a thermodynamic entry, and the hydrogen atom H and third body M could be written in lower case resulting in a fail of token recognition. However, suggestions to errors like missing index and index out of position, missing transport data, redundant characters, missing magnitude sign “E”, and mismatch of rate parameters and reaction type, provide helpful information for debugging. There is only one file with a problematic PLOG reaction tested in this thesis, and we tweaked the parameters to test various conditions as being shown in Section 2.5. The work of Hashemi et al. [16] is detected to have one PLOG reaction which is negative at 500 K, 100 atm.

35 CHAPTER 3. RESULTS AND DISCUSSION

Table 3.1: Syntax error found in published models. Kinetic Models Syntax Errors Myles D. Bohon et al. [4] Missing line index in some thermodynamic entries Zhanjun Cheng et al. [8] 1. Indent error in thermodynamic data of “c6h5ch2oo”; 2. Redundant letter “e” at the last line Mariam J. Al Rashidi et al. [1] 1. Indent error in thermodynamic data of some species; 2. Index out of position for thermodynamic data of some species Nicole Labbe et al. [24] PLOG reaction parameters are assigned to a three-body reaction Matteo Pelucchi et al. [34] Only 4 parameters for the SRI reaction is given Luc-Sy Tran et al. [41] Index out of position in thermodynamic data of some species Nour Atef et al. [2] Missing transport data for some species Hanfeng Jin et al. [20] Incorrect element sign Paul Marshall et al. [28] Suitable temperature range is not specified thermody- namic data Amruta Nawdiyal et al. [32] Some reactions have species having mixed capital and lower case letters Weijing Wang et al. [42] Index out of position for thermodynamic data of some species Xiaoyuan Zhang et al. [46] Missing magnitude sign E in some pre-exponential factors (A) S. Mani Sarathy et al. [36] Missing line index in some thermodynamic entries Marina Schenk et al. [37] 1. A set of Falloff parameters is assigned to a three-body reaction; 2. Suitable temperature range is not specified at the start of thermo data Darshan M.A. Karwat et al. [21] 1. Missing magnitude sign E in some pre-exponential fac- tors (A); 2. Missing line index in some thermodynamic entries; 3. Index out of position for thermodynamic data of some species

The result is demonstrated in Figure 3.1. There is another web application for checking for collision limit violations in a de- tailed kinetic model, published by Kiran K. Yalamanchi et al. [45] based on the work of Chen et al. [7], and made available online via CloudFlame at https://cloudflame.kaust.edu .sa/violation check. CloudFlame’s violation check also uses Cantera to calculate the reac- tion rate constants, so a comparison with ChemCheck was conducted to validate the results from ChemCheck. In their work [45], they identified a series of reactions with collision violations in AramcoMech 1.3 [31] in temperature range 300 to 2000 K, so the same screening was tested with

36 CHAPTER 3. RESULTS AND DISCUSSION

Figure 3.1: Result of PLOG reaction check from work of Hashemi et al. [16]

ChemCheck. The reactions violating the collision limits that were detected by CLC tool [45] are demonstrated in table 3.2, and the collision violation check results from ChemCheck in 300K and 2000K are shown in table 3.3, respectively. It can be observed that the results from ChemCheck in- cludes all the reactions in the result from work of Yalamanchi et al. [45] except the falloff reaction, which is because ChemCheck does not incorporate the collision violation check for falloff reactions. It is also illustrated that ChemCheck detects four more reactions with collision violation at 300K and 1 more reaction violating collision limit at 2000K. The violation factors (k/kcollision) in these reactions are very small, except reaction C H + IC H O C H + IC H O H which has colli- 2 4 4 9 2 2 3 4 9 2 sion violaton of magnitude 109. The extra reactions found by ChemCheck could be explained by the collision limit calculation deviation because of the different code structure or different tolerances set by the program. To investigate this, another comparison is conducted using an unpublished heptane model generated by RMG [12], and the results from ChemCheck and the CLC tool at CloudFlame show the exact same problematic reactions as each other with slightly different collision limits at 500 K, 1 atm. The input file and reports from these 2 tools will be provided in the supplementary materials. Because the CLC tool [45] is recently not available online for some reason, further ex- plorations need to be conducted in the future to compare the collision violation check functionality of ChemCheck and the CLC tool [45]. The thermodynamic discontinuity check result for Konnov’s model [23] shown in Fig- ure 2.6 demonstrates that ChemCheck is able to check for species with thermodynamic disconti- nuity in a DKM. The PLOG reaction check from the work done by Hashime et al. [16] illustrates

37 CHAPTER 3. RESULTS AND DISCUSSION

Table 3.2: List of reactions and corresponding temperature ranges in which CLC violations were identified for AramcoMech 1.3 [31]. Reactions were only screened at temperatures between 300 and 2000 K [45] Reaction No. Reaction Temperature Range (K) forward 1 H O + OH H O + OH 300-2000 2 · ! 2 2 OH + OH 2 OH 300-2000 · ! 3 CO + OH CO + OH 300-400 2 · ! 2 4 CO + OH CO + OH 300-400 · ! 5 CH + CH O CH CO + H 300 2 ! 2 6 C H+H(+M) C H (+M) 300-2000 2 ! 2 2 reverse 7 2C H C H +C H 300 2 4 2 3 2 5 8 O C H OH O + PC H OH 300-400 2 2 4 2 2 4 9 HO CH OCHO OCH OCHO + OH 300-2000 2 2 2 10 NC H O H NC H O + OH 300-2000 3 7 2 3 7 11 CH OH (+M) CH OH + H (+M) 300-500 3 2

Table 3.3: List of reactions and corresponding temperature ranges in which ChemCheck violations were identified for AramcoMech 1.3 [31]. Reactions were only screened at temperatures between 300 and 2000 K Reaction No. Reaction Temperature Range (K) forward 1 H O + OH H O + OH 300-2000 2 · ! 2 2 OH + OH 2 OH 300-2000 · ! 3 CO + OH CO + OH 300-400 2 · ! 2 4 CO + OH CO + OH 300-400 · ! 5 CH + CH O CH CO + H 300 2 ! 2 reverse 6 2C H C H +C H 300 2 4 2 3 2 5 7 O C H OH O + PC H OH 300-400 2 2 4 2 2 4 8 HO CH OCHO OCH OCHO + OH 300-2000 2 2 2 9 NC H O H NC H O + OH 300-2000 3 7 2 3 7 10 C H –2 C H –2+H 300-500 4 6 4 5 11 C H + IC H O C H + IC H O H 300-900 2 4 4 9 2 2 3 4 9 2 12 IC H O H IC H O + OH 300-2000 4 9 2 4 9 13 TC H O H OH + TC H O 300-500 4 9 2 4 9 that the tool developed in this thesis is able to help find out the invalid PLOG reaction in certain pressure and temperature. The results discussed above leads to the conclusion and future work in next chapter.

38 Chapter 4

Conclusions And Future Work

As discussed above, ChemCheck is able to achieve a syntax check, a thermodynamic properties check, a collision violation check, and an invalid PLOG and duplicate reaction rate coefficient check. The current syntax check is already able to help users detect and diagnose a wide range of common errors in a model, but it is a functionality that needs to keep improving as more cases of syntax error are discovered. Furthermore, ChemCheck has started providing help on the kinetic models web application project, which is another web tool developing in our lab to benefit users in kinetic model search and comparison (https://github.com/comocheng/ kineticmodelssite/wiki). In this project, published models should be imported to the database first, but many models have syntax errors that prevent them from being imported. The syntax error check in ChemCheck helps detect and diagnose these errors to increase successful imports. PLOG and duplicate reactions validation could be improved with two strategies. One is to write Python wrapper on back end code of ChemCheck to detect and show PLOG or duplicate reactions at invalid temperature and pressure points on the web page, while another one is to revise the source code in Cantera. It would be useful to add invalid PLOG and duplicate reaction rate coefficient checks into the source code of Cantera, but it might not be a good option as it could change the error handling method. In this case, keeping this functionality in a standalone project may be a better choice. The thermodynamic discontinuity check is also provided in Cantera when loading the in- put file, and a tool to automatically plot the discontinuity would help the user in estimating and visualizing the discontinuity. ChemCheck performs very well in plotting thermodynamic discon- tinuity which is generated by NASA 7 polynomial parameterization. Even if the thermodynamic

39 CHAPTER 4. CONCLUSIONS AND FUTURE WORK properties can be calculated from NASA 9 polynomial parameterization, not many models apply NASA 9 polynomial parameterization to describe the thermal chemistry. Consequently, thermody- namic discontinuity check based on NASA 9 polynomial parameterization has not been incorporated in ChemCheck yet. The collision violation check is shown to be effective by comparing the result with other collision violation screening tools, and interactive reaction rate coefficient plots are also given to users to detect the suspicious reactions for models without transport data. However, the reason that ChemCheck detects more reactions with collision violation than the CLC tool [45] sometimes should be explored by a further comparison. The improved CVODES [17] error message is able to provide the relative chemical infor- mation from the CVODES [17], and it is also aimed to provide the suspected reactions leading to the numerical integration failure. There is some work to be done in the future. More changes can be added into the con- version script in Cantera [15] directly instead of a standalone tool to better locate errors. The errors found from test DKMs should be inspected again to make sure the error is not copied from other DKMs, and this effort can help filter out the original source of the problematic data. Because the tool developed by CloudFlame for collision violation check is not currently available online, the source code will be downloaded to conduct a series collision violation check comparisons with ChemCheck. It is also helpful to calculate highest collision limit, for example, the collision rate for two H atoms, and to report any reaction rates higher than that limit. As the plan, the possible re- actions causing the stiffness of the ODE system will be added into CVODES error message, which requires a further understanding of CVODES [17] and the C++ language. As well as detecting the problematic reactions during CVODES integration, there are also other methods to detect them such as computational singular perturbation (CSP). An automatic workflow to use CSP detect in ChemCheck would also be helpful. Overall, ChemCheck and the modifications made to Cantera, provide combustion re- searchers with a convenient suite of tools to rapidly detect and correct many common errors in detailed kinetic models of combustion. This reduces the barrier to researchers using these detailed modeling tools, and reduces the the probability that their modeling simulations are incorrect when they do. The scientific value proposed in Section 1.1.1 is achieved by the tool developed in this thesis.

40 REFERENCES

[1] Mariam J. Al Rashidi, Sebastien´ Thion, Casimir Togbe,´ Guillaume Dayma, Marco Mehl, Philippe Dagaut, William J. Pitz, Judit Zador,´ and S. Mani Sarathy. Elucidating reactiv- ity regimes in cyclopentane oxidation: Jet stirred reactor experiments, computational chem- istry, and kinetic modeling. Proceedings of the Combustion Institute, 36(1):469 – 477, 2017. doi:10.1016/j.proci.2016.05.036.

[2] Nour Atef, Goutham Kukkadapu, Samah Y. Mohamed, Mariam Al Rashidi, Colin Banyon, Marco Mehl, Karl Alexander Heufer, Ehson F. Nasir, A. Alfazazi, Apurba K. Das, Charles K. Westbrook, William J. Pitz, Tianfeng Lu, Aamir Farooq, Chih-Jen Sung, Henry J. Cur- ran, and S. Mani Sarathy. A comprehensive iso-octane combustion model with improved thermochemistry and chemical kinetics. Combustion and Flame, 178:111 – 134, 2017. doi:10.1016/j.combustflame.2016.12.029.

[3] Adam Barth, Collin Jackson, and John C. Mitchell. Robust defenses for cross-site request forgery. In Proceedings of the 15th ACM Conference on Computer and Communications Secu- rity, CCS ’08, page 75–88, New York, NY, USA, 2008. Association for Computing Machinery. doi:10.1145/1455770.1455782.

[4] Myles D. Bohon, Thibault F. Guiberti, S. Mani Sarathy, and William L. Roberts. Variations in non-thermal NO formation pathways in alcohol flames. Proceedings of the Combustion Institute, 36(3):3995 – 4002, 2017. doi:10.1016/j.proci.2016.05.024.

[5] Bokeh Development Team. Bokeh: Python library for interactive , 2018. URL: https://bokeh.pydata.org/en/latest/.

[6] Nancy J. Brown, Lucas A.J. Bastien, and Phillip N. Price. Transport properties for combustion modeling. Progress in Energy and Combustion Science, 37(5):565 –

41 REFERENCES

582, 2011. URL: http://www.sciencedirect.com/science/article/pii/ S0360128510000742, doi:10.1016/j.pecs.2010.12.001.

[7] Dongping Chen, Kun Wang, and Hai Wang. Violation of collision limit in recently pub- lished reaction models. Combustion and Flame, 186:208 – 210, 2017. doi:10.1016/j. combustflame.2017.08.005.

[8] Zhanjun Cheng, Qi Niu, Zhandong Wang, Hanfeng Jin, Guanyi Chen, Mingfa Yao, and Lixia Wei. Experimental and kinetic modeling studies of low-pressure premixed laminar 2-methylfuran flames. Proceedings of the Combustion Institute, 36(1):1295 – 1302, 2017. doi:10.1016/j.proci.2016.07.032.

[9] MDN contributors. Mdn web docs. https://developer.mozilla.org/en-US/ docs/Glossary/MVC, March 2019. doi:10.5281/zenodo.1174508.

[10] Marc Doyle, Jeremy P. Meyers, and John Newman. Computer simulations of the impedance response of lithium rechargeable batteries. Journal of The Electrochemical Society, 147(1):99, 2000. doi:10.1149/1.1393162.

[11] Django Software Foundation. Django. https://djangoproject.com., 2013. Version 1.5.

[12] Connie W. Gao, Joshua W. Allen, William H. Green, and Richard H. West. Reaction mecha- nism generator: Automatic construction of chemical kinetic mechanisms. Computer Physics Communications, 203:212 – 225, 2016. doi:10.1016/j.cpc.2016.02.013.

[13] R. G. Gilbert, K. Luther, and J. Troe. Theory of thermal unimolecular reactions in the fall- off range. ii. weak collision rate constants. Berichte der Bunsengesellschaft fur¨ physikalische Chemie, 87(2):169–177, 1983. doi:10.1002/bbpc.19830870218.

[14] C. Franklin Goldsmith, Lawrence B. Harding, Yuri Georgievskii, James A. Miller, and Stephen J. Klippenstein. Temperature and pressure-dependent rate coefficients for the reaction of vinyl radical with molecular oxygen. The Journal of Physical Chemistry A, 119(28):7766– 7779, 2015. PMID: 25978112. doi:10.1021/acs.jpca.5b01088.

[15] David G. Goodwin, Raymond L. Speth, Harry K. Moffat, and Bryan W. Weber. Cantera: An object-oriented software toolkit for chemical kinetics, thermodynamics, and transport pro-

42 REFERENCES

cesses. https://www.cantera.org, 2018. Version 2.4.0. doi:10.5281/zenodo. 1174508.

[16] Hamid Hashemi, Jakob M. Christensen, Sander Gersen, Howard Levinsky, Stephen J. Klip- penstein, and Peter Glarborg. High-pressure oxidation of methane. Combustion and Flame, 172:349 – 364, 2016. URL: http://www.sciencedirect.com/science/ article/pii/S0010218016301766, doi:10.1016/j.combustflame.2016. 07.016.

[17] Alan C. Hindmarsh, Peter N. Brown, Keith E. Grant, Steven L. Lee, Radu Serban, Dan E. Shumaker, and Carol S. Woodward. SUNDIALS: Suite of nonlinear and differential/alge- braic equation solvers. ACM Transactions on Mathematical Software (TOMS), 31(3):363–396, 2005.

[18] Ming-Hsun Ho, Roger Rousseau, John A. S. Roberts, Eric S. Wiedner, Michel Dupuis, Daniel L. DuBois, R. Morris Bullock, and Simone Raugei. Ab initio-based kinetic model- ing for the design of molecular catalysts: The case of H2 production electrocatalysts. ACS Catalysis, 5(9):5436–5452, 2015. doi:10.1021/acscatal.5b01152.

[19] Lin-Shung Huang, Alex Moshchuk, Helen J. Wang, Stuart Schechter, and Collin Jackson. Clickjacking: Attacks and defenses. In Proceedings of the 21st USENIX Conference on Secu- rity Symposium, Security’12, page 22, USA, 2012. USENIX Association.

[20] Hanfeng Jin, Guoqing Wang, Yizun Wang, Xiaoyuan Zhang, Yuyang Li, Zhongyue Zhou, Ji- uzhong Yang, and Fei Qi. Experimental and kinetic modeling study of laminar coflow diffusion methane flames doped with iso-butanol. Proceedings of the Combustion Institute, 36(1):1259 – 1267, 2017. doi:10.1016/j.proci.2016.06.111.

[21] Darshan M.A. Karwat, Scott W. Wagnon, Margaret S. Wooldridge, and Charles K. West- brook. Low-temperature speciation and chemical kinetic studies of n-heptane. Combustion and Flame, 160(12):2693 – 2706, 2013. doi:10.1016/j.combustflame.2013.06.029.

[22] R. J. Kee, F. M. Rupley, and J. A. Miller. Chemkin-II: A Fortran chemical kinetics package for the analysis of gas phase chemical kinetics. Technical Report SAND89-8009, Sandia National Laboratories, 1989.

43 REFERENCES

[23] A. A. Konnov. Implementation of the NCN pathway of prompt-NO formation in the detailed reaction mechanism. Combustion and Flame, 156(11):2093 – 2105, 2009. doi:10.1016/ j.combustflame.2009.03.016.

[24] Nicole J. Labbe, Raghu Sivaramakrishnan, C. Franklin Goldsmith, Yuri Georgievskii, James A. Miller, and Stephen J. Klippenstein. Ramifications of including non-equilibrium effects for HCO in flame chemistry. Proceedings of the Combustion Institute, 36(1):525 – 532, 2017. doi:10.1016/j.proci.2016.06.038.

[25] P. A. Lakshminarayanan and Yogesh V. Aghav. Ignition Delay in a Diesel Engine, pages 59– 78. Springer Netherlands, Dordrecht, 2010. doi:10.1007/978-90-481-3885-2_5.

[26] Nathalie Lamoureux, Hilal El Merhubi, Laure Pillier, Stephanie´ de Persis, and Pascale Des- groux. Modeling of NO formation in low pressure premixed flames. Combustion and Flame, 163:557 – 575, 2016. doi:10.1016/j.combustflame.2015.11.007.

[27] Tianfeng Lu and Chung K. Law. Toward accommodating realistic fuel chemistry in large- scale computations. Progress in Energy and Combustion Science, 35(2):192 – 215, 2009. doi:10.1016/j.pecs.2008.10.002.

[28] Paul Marshall and Peter Glarborg. Ab initio and kinetic modeling studies of formic acid oxidation. Proceedings of the Combustion Institute, 35(1):153 – 160, 2015. doi:10.1016/ j.proci.2014.05.091.

[29] Bonnie J. McBride and Sanford Gordon. Computer program for calculation of complex chem- ical equilibrium compositions and applications ii. users manual and program description. 2; users manual and program description. Technical report, NASA Lewis Research Center, 1971.

[30] Bonnie J. McBride, Sanford Gordon, and Martin A. Reno. Coefficients for calculating ther- modynamic and transport properties of individual species. Technical report, NASA Lewis Research Center, 1993.

[31] Wayne K. Metcalfe, Sinead´ M. Burke, Syed S. Ahmed, and Henry J. Curran. A hierarchi- cal and comparative kinetic modeling study of C1 – C2 hydrocarbon and oxygenated fuels. International Journal of Chemical Kinetics, 45(10):638–675, 2013. doi:10.1002/kin. 20802.

44 REFERENCES

[32] A. Nawdiyal, N. Hansen, T. Zeuch, L. Seidel, and F. Mauß. Experimental and modelling study of speciation and benzene formation pathways in premixed 1-hexene flames. Proceedings of the Combustion Institute, 35(1):325 – 332, 2015. doi:10.1016/j.proci.2014.06. 047.

[33] Philip D. Neufeld, A. R. Janzen, and R. A. Aziz. Empirical Equations to Calculate 16 of the (l,s) Transport Collision Integrals ⌦ ⇤ for the Lennard-Jones (12-6) Potential. The Journal of Chemical Physics, 57(3):1100–1102, August 1972. doi:10.1063/1.1678363.

[34] Matteo Pelucchi, Eliseo Ranzi, Alessio Frassoldati, and Tiziano Faravelli. Alkyl radicals rule the low temperature oxidation of long chain aldehydes. Proceedings of the Combustion Insti- tute, 36(1):393 – 401, 2017. doi:10.1016/j.proci.2016.05.051.

[35] Reaction Design Inc. Chemkin-pro, 2011.

[36] S. Mani Sarathy, Stijn Vranckx, Kenji Yasunaga, Marco Mehl, Patrick Oßwald, Wayne K. Metcalfe, Charles K. Westbrook, William J. Pitz, Katharina Kohse-Hoinghaus,¨ Ravi X. Fer- nandes, and Henry J. Curran. A comprehensive chemical kinetic combustion model for the four butanol isomers. Combustion and Flame, 159(6):2028 – 2055, 2012. doi: 10.1016/j.combustflame.2011.12.017.

[37] Marina Schenk, Larisa Leon, Kai Moshammer, Patrick Oßwald, Thomas Zeuch, Lars Seidel, Fabian Mauss, and Katharina Kohse-Hoinghaus.¨ Detailed mass spectrometric and modeling study of isomeric butene flames. Combustion and Flame, 160(3):487 – 503, 2013. doi: 10.1016/j.combustflame.2012.10.023.

[38] Baptiste Sirjean, Rene´ Fournet, Pierre-Alexandre Glaude, Fred´ erique´ Battin-Leclerc, Weijing Wang, and Matthew A. Oehlschlaeger. Shock tube and chemical kinetic modeling study of the oxidation of 2,5-dimethylfuran. The Journal of Physical Chemistry A, 117(7):1371–1392, 2013. doi:10.1021/jp308901q.

[39] Kieran P. Somers, John M. Simmie, Fiona Gillespie, Christine Conroy, Grainne´ Black, Wayne K. Metcalfe, Fred´ erique´ Battin-Leclerc, Patricia Dirrenberger, Olivier Herbinet, Pierre- Alexandre Glaude, Philippe Dagaut, Casimir Togbe,´ Kenji Yasunaga, Ravi X. Fernandes, Changyoul Lee, Rupali Tripathi, and Henry J. Curran. A comprehensive experimental and detailed chemical kinetic modelling study of 2,5-dimethylfuran pyrolysis and oxidation. Com-

45 REFERENCES

bustion and Flame, 160(11):2291 – 2318, 2013. doi:10.1016/j.combustflame. 2013.06.007.

[40] P.H. Stewart, C.W. Larson, and D.M. Golden. Pressure and temperature dependence of reac- tions proceeding via a bound complex. 2. application to 2 CH C H + H. Combustion 3 ! 2 5 and Flame, 75(1):25 – 31, 1989. doi:10.1016/0010-2180(89)90084-9.

[41] Luc-Sy Tran, Julia Pieper, Hans-Heinrich Carstensen, Hao Zhao, Isabelle Graf, Yiguang Ju, Fei Qi, and Katharina Kohse-Hoinghaus.¨ Experimental and kinetic modeling study of diethyl ether flames. Proceedings of the Combustion Institute, 36(1):1165 – 1173, 2017. doi:10. 1016/j.proci.2016.06.087.

[42] Weijing Wang, Zhenhua Li, Matthew A. Oehlschlaeger, Darren Healy, Henry J. Curran, S. Mani Sarathy, Marco Mehl, William J. Pitz, and Charles K. Westbrook. An experimental and modeling study of the autoignition of 3-methylheptane. Proceedings of the Combustion Institute, 34(1):335 – 343, 2013. doi:10.1016/j.proci.2012.06.001.

[43] Wei Wei, Craig A. Bennett, Ryuzo Tanaka, Gang Hou, and Michael T. Klein. Detailed kinetic models for catalytic reforming. Fuel Processing Technology, 89(4):344 – 349, 2008. Special Issue in Honor of Professor Masakatsu Nomura. doi:10.1016/j.fuproc.2007.11. 014.

[44] Chaoqi Xu and Alexander A. Konnov. Validation and analysis of detailed kinetic mod- els for ethylene combustion. Energy, 43(1):19 – 29, 2012. 2nd International Meeting on Cleaner Combustion (CM0901-Detailed Chemical Models for Cleaner Combustion). doi: 10.1016/j.energy.2011.11.006.

[45] Kiran K. Yalamanchi, Efstathios-Al Tingas, Hong G. Im, and S. Mani Sarathy. Screening gas-phase chemical kinetic models: Collision limit compliance and ultrafast timescales. Inter- national Journal of Chemical Kinetics, 52(9):599–610, 2020. doi:10.1002/kin.21373.

[46] Xiaoyuan Zhang, Bin Yang, Wenhao Yuan, Zhanjun Cheng, Lidong Zhang, Yuyang Li, and Fei Qi. Pyrolysis of 2-methyl-1-butanol at low and atmospheric pressures: Mass spectrometry and modeling studies. Proceedings of the Combustion Institute, 35(1):409 – 417, 2015. doi: 10.1016/j.proci.2014.06.080.

46