********************************************** Identifying all Reactions for a Set of Species ********************************************** The ``PopulateReactions`` module accepts a list of species as input (in the form of adjacency lists) and outputs a list of all possible reactions between those species, according to the RMG reaction family templates (located at ``%rmg%\databases\RMG_database\kinetics_groups``) and any user-specified reaction library templates. Different usages for this module: 1) Determine if the RMG reaction family templates can form your reaction of interest. If not, this reaction would be an ideal candidate to place in a :ref:`primaryReactionlibrary`. 2) Determine if RMG is properly parsing your :ref:`primarykineticlibrary` and/or :ref:`primaryReactionlibrary` without having to run an entire RMG simulation. 3) Obtain more detailed comments for RMG-generated kinetics. Suppose you ran a RMG simulation with the :ref:`Verbose field ` set to off and are now interested in how RMG estimated a certain reaction's kinetics. Instead of re-running the entire RMG simulation, one could place the species of interest in this module, with the Verbose field turned on, and obtain the detailed kinetics quickly. 4) Obtain the pressure-dependent kinetics for an entire pressure-dependent network. RMG will output the pressure-dependent kinetics for the "core" reactions only; if one wished to have the entire network's kinetics at hand, this module will run the single pressure-dependent network, without having to run the entire RMG job. Furthermore, the user can test how sensitive a pressure-dependent network's kinetics are to the different :ref:`collisional approximations ` and/or to the :ref:`number of grains used ` to solve the network. In essence, the PopulateReactions module runs a single RMG "enlarging" step, without solving any ordinary differential equations, nor distinguishing species and reactions as "core" or "edge". Instructions for Use -------------------- 1. Create a text file in any directory that you like (for the purposes of this example, we'll create a file named :file:`input.txt`). A sample file is shown below:: Database: RMG_database PrimaryThermoLibrary: Name: RMG_Default Location: primaryThermoLibrary END PrimaryTransportLibrary: Name: GRI-Mech-3 Location: GRI-Mech3.0 END TemperatureModel: Constant (K) 1200 PressureModel: Constant (atm) 1 SpeciesStatus: nButanol (molecule/cm3) 0.01 1 C 0 {2,S} 2 C 0 {1,S} {3,S} 3 C 0 {2,S} {4,S} 4 C 0 {3,S} {5,S} 5 O 0 {4,S} CH3 (molecule/cm3) 0.01 1 C 1 END BathGas: N2 (molecule/cm3) 0.99 END SpectroscopicDataEstimator: FrequencyGroups PressureDependence: ReservoirState PDepKineticsModel: Chebyshev //DecreaseGrainSize: yes PrimaryKineticLibrary: //Name: PrIMe-recommended //Location: GRI-Mech3.0 END ReactionLibrary: END //Verbose: off The formatting of the :file:`input.txt` file is very similar to the formatting of the :file:`condition.txt` file for an RMG simulation. For more details on the meaning of each field, and possible values to supply, see the instructions for :ref:`Creating a Condition File Manually `. If the PressureDependence field is set to "off," this module will try to match each species (e.g. A, B, C, etc.) against every unimolecular RMG reaction family template (and every user-specified Reaction Library template) and each combination of species (e.g. A+A, A+B, B+A, etc.) against every bimolecular RMG reaction family template (and user-specified Reaction Library template). All reactions created by RMG will be reported in the output file, with modified Arrhenius kinetics. If the PressureDependence field is not set to "off," this module behaves in the same manner as described above, i.e. finding all possible reactions between all combinations of species, and then sends every potential pressure-dependent reaction (i.e. any reaction that has either only one reactant or one product) to the Fame executable. The pressure-independent reactions (e.g. H-Abstraction and Disproportionation reactions) will still be reported with modified Arrhenius parameters in the output files, but the pressure-dependent reactions will have formatted pressure-dependent kinetics (based on the PDepKineticsModel field). .. note:: The pressure-dependence feature assumes all unimolecular isomers have been supplied to the input file. For example, if one wished to have the "entire" pressure-dependent network for the .OOCH(CH3)2 potential energy surface, the following species would need to be supplied in the input file:: OOCH(CH3)2 (mol/cm3) 1 1 O 1 {2,S} 2 O 0 {1,S} {3,S} 3 C 0 {2,S} {4,S} {5,S} 4 C 0 {3,S} 5 C 0 {3,S} HOOCH(CH2)(CH3) (mol/cm3) 1 1 O 0 {2,S} 2 O 0 {1,S} {3,S} 3 C 0 {2,S} {4,S} {5,S} 4 C 0 {3,S} 5 C 1 {3,S} With the first species, this module will find the following reactions (among others):: O2 + CH3-.CH-CH3 --> OOCH(CH3)2 OOCH(CH3)2 --> HOOCH(CH2)(CH3) The second species yields the following reactions (among others):: HOOCH(CH2)(CH3) --> OOCH(CH3)2 (this is a duplicate, and the module will recognize this) HOOCH(CH2)(CH3) --> HO2 + C3H6 Thus, the "wells" sent to Fame (among others) will be:: O2 + CH3-.CH-CH3 OOCH(CH3)2 HOOCH(CH2)(CH3) HO2 + C3H6 Fame will then return (and this module will report in the output file) 6 sets of kinetics:: A(+m)=B(+m) A(+m)=C(+m) A(+m)=D(+m) B(+m)=C(+m) B(+m)=D(+m) C(+m)=D(+m) (Consider O2 + CH3-.CH-CH3 to be "A", OOCH(CH3)2 to be "B", etc.). Thus, the "entire" network and its kinetics will be present in the output file. However, if only the OOCH(CH3)2 species is supplied, the "wells" sent to Fame will be:: O2 + CH3-.CH-CH3 OOCH(CH3)2 HOOCH(CH2)(CH3) Recall that this module (essentially) does one RMG enlarging step; reacting from HOOCH(CH2)(CH3) to C3H6 + HO2 will involve a second enlarging step. So, if you believe this module is not returning the entire network of reactions, please consider if you have supplied all unimolecular "wells" in the input file. 2. At the command prompt, change to the directory containing the :file:`input.txt` file and then execute the command :: java -classpath "%rmg%"\bin\RMG.jar PopulateReactions input.txt For linux users:: java -classpath $RMG/bin/RMG.jar PopulateReactions input.txt To have the output written to file instead of to the screen, use the syntax :: java -classpath "%rmg%"\bin\RMG.jar PopulateReactions input.txt > output.txt where ``output.txt`` is the name of the file to be written. 3. Every time a species is found in the input file, the module will: * Read in the name and adjacency list of the species * Attempt to react the just-read-in species against each of the reaction families located in the ``%rmg%\databases\RMG_database\kinetics_groups`` directory AND against each of the reactions in all user-specified Reaction Libraries * Store the results The reaction families the module will attempt to react the just-read-in species against are either unimolecular or bimolecular. * If the reaction family is unimolecular, the module attempts to react the current species * If the reaction family is bimolecular (e.g. A+B-->products), the module assigns the just-read-in species as A and iterates over all previously read-in species (including the just-read-in species) when assigning B. The module then assigns the just-read-in species as B and iterates over all previous species for A. All reactions generated are reported in the :file:`PopRxnsOutput_Rxns.txt` file. The top of the file displays the units for the modified Arrhenius parameters reported Each high-pressure limit line after this has the following format (in general): B+C-->D+F A n Ea Rxn_family exact/estimate: Node1 Node2 where: - A, n, and Ea are the modified Arrhenius parameters - Rxn_family is the reaction family template used to generate this reaction. The "Rxn_family" is a folder in the ``%rmg%\databases\RMG_database\kinetics`` directory - Node1/Node2 are the reactive subgroups of the species that RMG identified - exact/estimate states whether the Rxn_family folder's :file:`rateLibrary.txt` file contained data for the Node1-Node2 combination. If so, the kinetics reported are found, exactly as written, in the file. If not, an averaging scheme was performed to arrive at the reported numbers. The identities of B, C, D, and F are located in the :file:`PopRxnsOutput_Spcs.txt` file, in the form of adjacency lists. .. note:: These high-pressure limit reactions appear at the bottom of the :file:`PopRxnsOutput_Rxns.txt` file when the PressureDependence field is not set to "off". Each pressure-dependent network has the following format:: !PDepNetwork ! deltaEdown = 5.514552177052681 kJ/mol ! bathgas MW = 28.01 amu ! bathgas LJ sigma = 3.681E-10 meters ! bathgas LJ epsilon = 1.263615E-21 Joules !Here are the species and their thermochemistry: ! nButanol(1) -66.06 85.94 26.48 33.09 39.02 44.15 52.29 58.39 65.85 null ! CH3(2) 34.81 46.37 9.14 10.18 10.81 11.34 12.57 13.71 15.2 null ! C3H7OJ(3) -12.13 79.93 20.21 24.78 28.86 32.4 38.06 42.31 46.94 null ! C4H9OJ(4) -17.06 89.35 25.71 31.73 37.11 41.75 49.13 54.65 61.19 null ! HJ(5) 52.1 27.42 4.97 4.97 4.97 4.97 4.97 4.97 4.97 "library value for H radical" ! C2H5J(6) 28.6 59.87 11.73 14.47 17.05 19.34 23.02 25.91 31.53 null ! C2H5OJ(7) -7.2 70.51 14.71 17.83 20.61 23.05 26.99 29.97 32.69 null ! C4H9OJ(8) -19.71 91.07 24.94 30.32 35.53 40.25 47.94 53.75 61.21 null ! C3H7J(9) 23.67 69.29 17.11 21.27 25.14 28.53 33.95 38.14 44.75 null ! CH3OJ(10) -3.59 58.19 10.74 12.52 13.96 15.19 17.1 18.53 20.8 null ! C4H9OJ(11) -19.71 90.38 24.98 30.76 35.92 40.76 48.54 53.94 60.65 null ! C4H9J(12) 18.74 78.71 22.61 28.22 33.39 37.88 45.02 50.48 59.0 null ! HOJ(13) 9.4 43.91 7.14 7.07 7.05 7.06 7.15 7.34 7.87 "taken from GRI-Mech 3.0 species s00010102" ! C4H9OJ(14) -22.77 86.86 27.13 33.08 38.27 42.72 49.77 55.08 61.38 null ! C4H9OJ(15) -14.1 84.48 25.5 31.79 37.41 42.26 49.91 55.59 62.26 null ! C2H6O(16) -56.2 67.1 15.48 19.19 22.52 25.45 30.15 33.71 37.35 null ! C2H4(17) 12.52 52.47 10.2 12.72 15.02 17.0 20.14 22.54 26.38 null ! C4H8(18) -0.11 73.61 20.57 26.09 31.04 35.28 41.96 46.97 54.75 null ! H2O(19) -57.8 45.13 8.03 8.19 8.42 8.68 9.26 9.86 11.26 null !Here are the path reactions and their high-P limit kinetics: ! CH3(2)+C3H7OJ(3)=nButanol(1) 3.370e+13 0.00 0.00 ! C4H9OJ(4)+HJ(5)=nButanol(1) 1.000e+14 0.00 0.00 ! C2H5J(6)+C2H5OJ(7)=nButanol(1) 1.150e+13 0.00 0.00 ! C4H9OJ(8)+HJ(5)=nButanol(1) 2.000e+13 0.00 0.00 ! C3H7J(9)+CH3OJ(10)=nButanol(1) 1.000e+13 0.00 0.00 ! C4H9OJ(11)+HJ(5)=nButanol(1) 2.000e+13 0.00 0.00 ! C4H9J(12)+HOJ(13)=nButanol(1) 7.700e+13 0.00 0.00 ! C4H9OJ(14)+HJ(5)=nButanol(1) 5.000e+13 0.00 0.00 ! C4H9OJ(15)+HJ(5)=nButanol(1) 1.000e+13 0.00 0.00 ! C2H6O(16)+C2H4(17)=nButanol(1) 1.630e+02 2.92 44628.57 ! C4H8(18)+H2O(19)=nButanol(1) 2.270e+02 2.74 56900.00 The first four lines after "PDepNetwork" describe properties of the Bath Gas that was utilized in Fame. In general, the Lennard-Jones (LJ) sigma and epsilon parameters are estimated by RMG. However, a user may use their preferred value for any species by supplying a :ref:`primarytransportlibrary` to the input file. The next set of information is the name and thermochemistry of every species present in the pressure-dependent network; the thermochemistry is reported as:: Hf(298 K) S(298 K) Cp(300, 400, 500, 600, 800, 1000, 1500 K) Source_of_parameters The units of Hf are kcal/mol and the units for S and Cp are cal/mol-K. The last section contains the reactions sent to the Fame executable, and their high-pressure limit kinetics. Following this information section is every pressure-dependent reaction in the network, along with their respective pressure-dependent kinetics. The formatting of this set of output is identical to that found in the RMG-generated :file:`chem.inp` file.