Adding new Chemical Reactions
UKCA currently uses two different methods of defining the chemical reactions solved in the model. The first is a backward Euler solver, and is used for the RAQ and StdTrop chemistry schemes where the solver itself is created by a code-writer. The second makes use of the ASAD chemical integration software package, and is used for the CheT/TropIsop, CheS/Strat, and CheST/StratTrop chemistry schemes. ASAD can use many different solvers, although currently it uses symbolic Newton-Raphson solver. In this tutorial we will only consider the ASAD framework, as this is easily extended by a user.
ASAD considers four different types of chemical reactions: bimolecular reactions, trimolecular reactions, heterogeneous reactions, and photolysis reactions.
Biomolecular Reactions
For most bimolecular reactions, it is sufficient to provide the , , and coefficients that are used to compute the rate coefficient from the Arrhenius expression
The bimolecular reactions are defined in the ukca_chem_scheme.F90 routines using the ratb_t Fortran type specification, and are held in arrays. At the end of this routine the ratb_defs_scheme array is created from these, and if that scheme is selected in UKCA these reactions are copied across into the master ratb_defs array.
To format of this ratb_t type is
ratb_t('Reactant 1','Reactant 2','Product 1 ','Product 2 ','Product 3 ',& 'Product 4 ', , , , Fraction of Product 1 produced, Fraction of Product 2 produced, Fraction of Product 3 produced, Fraction of Product 4 produced, ), &
The specifications of the induvidual reactions are done as, e.g.
ratb_t('OH ','C5H8 ','ISO2 ',' ',' ',& ! B144 ' ', 2.70E-11, 0.00, -390.00, 0.000, 0.000, 0.000, 0.000), & ! B144 IUPAC2009 ... ratb_t('OH ','HCl ','H2O ','Cl ',' ',& ! B159 ' ', 1.80E-12, 0.00, 250.00, 0.000, 0.000, 0.000, 0.000), & ! B159 JPL2011
The first reaction in these examples takes its kinetic data from IUPAC. Going to this website, this reaction is defined here.
Written by Luke Abraham 2013