cloudy  trunk
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
mole_co_reactions.cpp
Go to the documentation of this file.
1 #include "cddefines.h"
2 #include "mole.h"
3 #include "mole_co_priv.h"
4 #include "hmi.h"
5 #include "conv.h"
6 #include "grainvar.h"
7 
8 #ifdef _MSC_VER
9 # pragma warning( disable : 4100 )/* unreferenced formal parameter */
10 #endif
11 
12 /*
13  * HOWTO:- add a reaction to the new CO network, as at 2006 December 07.
14  *
15  * add a line of the form
16  * newreact("O,C2=>CO,C",hmrate,SCALE,B,C); / * Data source * /
17  * to this file for the new reaction. The first argument is the chemical
18  * reaction, the second is the function which is used to evaluate the
19  * rate coefficients.
20  *
21  * SCALE is an overall constant by which the reaction rate is scaled,
22  * the remaining arguments constants used by this function.
23  *
24  *
25  * If all the species have previously been defined, and the parser in
26  * mole_co_etc.c can understand the reaction string, then that's it.
27  * The sources and sinks to other networks will need to be defined,
28  * though.
29  *
30  */
31 
32 /* Nick Abel, 06 Nov 27 states: "In all the crnu reactions, the factor of two is the albedo factor 1/(1-albedo)."
33  Can this be obtained from the grain physics? */
34 
35 /* Structures containing reaction data */
37 
38 STATIC void newreact(const char label[],
39  double (*fun)(struct COmole_rate_s *rate), double a, double b, double c);
40 STATIC double hmrate(struct COmole_rate_s *rate);
41 STATIC double constrate(struct COmole_rate_s *rate);
42 STATIC double th85rate(struct COmole_rate_s *rate);
43 STATIC double crnurate(struct COmole_rate_s *rate);
44 STATIC double co_lnu_c_o_lnu(struct COmole_rate_s *rate);
45 STATIC double ele_ion_ladder(struct COmole_rate_s *rate);
46 STATIC double vib_evap(struct COmole_rate_s *rate);
47 STATIC double th85rate_co(struct COmole_rate_s *rate);
48 STATIC double grn_abs(struct COmole_rate_s *rate);
49 STATIC double oh_c2h2_co_ch3(struct COmole_rate_s *rate);
50 STATIC double h_hnc_hcn_h(struct COmole_rate_s *rate);
51 
52 static bool lgReactInitialized = false;
53 
54 void CO_create_react( void )
55 {
56  /* Should adaptively select reactions rather than list them explicitly here */
57 
58  /* prevent memory leaks */
59  /* \todo this is a temporary fix for PR14. We should improve the overall design
60  * of this code to prevent valid pointers being overwritten in a second call to CO_create_react */
61  if( lgReactInitialized )
62  return;
63 
64  lgReactInitialized = true;
65 
66  long int i;
67  /* Initialize number of reactions added to list in coreactions of reactions
68  treated by new methodology, incremented by newreact() */
69 
70  DEBUG_ENTRY("CO_create_react()");
71 
72  coreactions.n = 0;
73 
74  newreact("N+,(e-)=>N",ele_ion_ladder,1.,0.,0.);/* */
75  newreact("S+,(e-)=>S",ele_ion_ladder,1.,0.,0.);/* */
76  newreact("Cl+,(e-)=>Cl",ele_ion_ladder,1.,0.,0.);/* */
77  newreact("C+,(e-)=>C",ele_ion_ladder,1.,0.,0.);/* */
78  newreact("O+,(e-)=>O",ele_ion_ladder,1.,0.,0.);/* */
79  newreact("Si+,(e-)=>Si",ele_ion_ladder,1.,0.,0.);/* */
80  newreact("C,PHOTON=>C+,e-",ele_ion_ladder,1.,0.,0.);/* */
81  newreact("O,PHOTON=>O+,e-",ele_ion_ladder,1.,0.,0.);/* */
82  newreact("Si,PHOTON=>Si+,e-",ele_ion_ladder,1.,0.,0.);/* */
83  newreact("Cl,PHOTON=>Cl+,e-",ele_ion_ladder,1.,0.,0.);/* */
84  newreact("N,PHOTON=>N+,e-",ele_ion_ladder,1.,0.,0.);/* */
85  newreact("S,PHOTON=>S+,e-",ele_ion_ladder,1.,0.,0.);/* */
86  /* >>chng 06 Feb 28 -- NPA. Charge transfer between S+, Si+, and C+ and Mg/Fe is
87  * sometimes important in molecular abundance determinations. We therefore include them here. Someday, we may need to
88  * include Mg and Fe in the molecular network, but for now include the reaction in the existing heavy element
89  * network */
90  newreact("S+,Mg=>S,Mg+",hmrate,2.8e-10,0.,0.); /* TH85 */
91  newreact("S+,Fe=>S,Fe+",hmrate,1.8e-10,0.,0.); /* TH85 */
92  newreact("Si+,Mg=>Si,Mg+",hmrate,2.9e-10,0.,0.); /* TH85 */
93  newreact("Si+,Fe=>Si,Fe+",hmrate,1.9e-10,0.,0.); /* TH85 */
94  newreact("C+,Mg=>C,Mg+",hmrate,1.1e-9,0.,0.); /* TH85 */
95  newreact("C+,Fe=>C,Fe+",hmrate,2.6e-9,0.,0.); /* TH85 */
96  if(co.lgUMISTrates)
97  newreact("CO,lnu=>C,O,lnu",co_lnu_c_o_lnu,1.,0.,0.);/* Inner shell photoionization??? */
98  newreact("PHOTON,CO=>C,O",th85rate_co,2.0e-10,3.2,0.);/* UMIST */
99  if(!co.lgUMISTrates)
100  newreact("C,CRPHOT=>C+,e-",crnurate,2*510,0.,0.); /* */
102  {
103  /* fprintf(stderr,"REA: %d %d\n",gv.lgDustOn, mole.lgGrain_mole_deplete); */
104  newreact("COgrn=>CO,grn",vib_evap,1.,1210.,0.);/* */
105  newreact("COgrn,CRPHOT=>CO,grn",crnurate,196./2.17,0.,0.); /* */
106  newreact("CO,grn=>COgrn",grn_abs,1.,0.,0.);/* */ /* >>chng 06 mar 05, include missing factor 8/PI in average speed of molecules, PvH */
107  newreact("H2Ogrn=>H2O,grn",vib_evap,1.,1860.,0.);/* */
108  newreact("H2Ogrn,CRPHOT=>H2O,grn",crnurate,0.028/2.17,0.,0.); /* */
109  newreact("H2O,grn=>H2Ogrn",grn_abs,1.,0.,0.);/* */
110  newreact("OHgrn=>OH,grn",vib_evap,1.,1260.,0.);/* */
111  newreact("OHgrn,CRPHOT=>OH,grn",crnurate,126./2.17,0.,0.); /* */
112  newreact("OH,grn=>OHgrn",grn_abs,1.,0.,0.);/* */
113  }
114  newreact("H,CO+=>CO,H+",hmrate,7.5e-10,0,0); /* UMIST */
115  newreact("H-,HCO+=>CO,H2",hmrate,0.00000023,-0.5,0); /* UMIST */
116  newreact("H2+,CO=>HCO+,H",hmrate,2.16e-9,0,0); /* UMIST */
117  newreact("H2+,CO=>CO+,H2",hmrate,6.4e-10,0,0); /* UMIST */
118  newreact("H3+,CO=>HCO+,H2",hmrate,1.7e-9,0,0); /* UMIST */
119  newreact("He+,CO=>O+,C,He",hmrate,0.00000000000000014,-0.5,0); /* UMIST */
120  newreact("He+,CO=>O,C+,He",hmrate,1.6e-9,0,0); /* UMIST */
121  newreact("CRPHOT,CO=>C,O",crnurate,2. * 10,0.,0.); /* UMIST */
122  newreact("CRP,CO=>CO+,e-",hmrate,0.000000000000000039,0.,0.); /* UMIST */
123  newreact("C,CO=>C2,O",hmrate,2.94e-11,0.5,58025); /* UMIST */
124  newreact("O,C2=>CO,C",hmrate,5.e-11,0.5,0); /* UMIST */
125  newreact("C2,O2=>CO,CO",hmrate,1.83e-12,0,0); /* UMIST */
126  newreact("C2,O2+=>CO+,CO",hmrate,4.1e-10,0,0); /* UMIST */
127  newreact("C2,CO+=>CO,C2+",hmrate,8.4e-10,0,0); /* UMIST */
128  newreact("C2+,O2=>CO+,CO",hmrate,8.e-10,0,0); /* UMIST */
129  newreact("C,CO+=>CO,C+",hmrate,1.1e-10,0,0); /* UMIST */
130  newreact("C,HCO+=>CO,CH+",hmrate,1.1e-9,0,0); /* UMIST */
131  newreact("C,O=>CO,PHOTON",hmrate,2.1E-19,0,0); /* UMIST */
132  newreact("C,O2=>CO,O",hmrate,3.3e-11,0,0); /* UMIST */
133  newreact("C,OH=>CO,H",hmrate,1.1e-10,0.5,0); /* UMIST */
134  newreact("C,SiO+=>Si+,CO",hmrate,1.0e-9,0,0); /* UMIST */
135  /* >>chng 05 aug 17, NA, need to use UMIST rate for PDR comparison, even though the rate is
136  * an order of magnitude too small at 50 K */
137  if(co.lgProtElim)
138  {
139  if(!co.lgUMISTrates)
140  newreact("C+,OH=>CO,H+",hmrate,7.7e-10,0.,0.); /* UMIST; Dubernet et al. 1992, ApJ, 239, 855 */
141  else
142  newreact("C+,OH=>CO,H+",hmrate,2.7e-9,-0.3508,0); /* UMIST; Dubernet et al. 1992, ApJ, 239, 855 */
143  }
144  if(!co.lgUMISTrates)
145  newreact("C+,OH=>CO+,H",hmrate,7.7e-10,0.,0.);/* UMIST; Dubernet et al. 1992, ApJ, 239, 855 */
146  else
147  newreact("C+,OH=>CO+,H",hmrate,2.7e-9,-0.3508,0); /* UMIST; Dubernet et al. 1992, ApJ, 239, 855 */
148  newreact("C+,SiO=>Si+,CO",hmrate,5.4e-10,0,0); /* UMIST */
149  newreact("C+,O2=>CO,O+",hmrate,6.2e-10,0,0); /* UMIST */
150  newreact("O,CH2=>CO,H,H",hmrate,1.33e-10,0,0); /* UMIST */
151  newreact("O,CH2=>CO,H2",hmrate,8.e-11,0,0); /* UMIST */
152  newreact("O,CO+=>CO,O+",hmrate,1.4e-10,0,0); /* UMIST */
153  newreact("O+,CO=>CO+,O",hmrate,4.9e-12,0.5,4580); /* UMIST */
154  newreact("CH,CO+=>CO,CH+",hmrate,3.2e-10,0,0); /* UMIST */
155  newreact("CH,HCO+=>CO,CH2+",hmrate,6.3e-10,0,0); /* UMIST */
156  newreact("CH,O2=>CO,OH",hmrate,2.6e-11,0,0); /* UMIST */
157  newreact("CH2,CO+=>CO,CH2+",hmrate,4.3e-10,0,0); /* UMIST */
158  newreact("CH2,HCO+=>CO,CH3+",hmrate,8.6e-10,0,0); /* UMIST */
159  newreact("CH2,O2=>CO,H2O",hmrate,2.48e-10,-3.3,1443); /* UMIST */
160  newreact("CO+,O2=>O2+,CO",hmrate,1.2e-10,0,0); /* UMIST */
161  newreact("H2O,CO+=>CO,H2O+",hmrate,1.72e-9,0,0); /* UMIST */
162  newreact("H2O,HCO+=>CO,H3O+",hmrate,2.5e-9,0,0); /* UMIST */
163  newreact("H2O+,CO=>HCO+,OH",hmrate,5.0e-10,0,0); /* UMIST */
164  newreact("HCO+,SiH=>SiH2+,CO",hmrate,8.7e-10,0,0); /* UMIST */
165  newreact("HCO+,SiO=>SiOH+,CO",hmrate,7.9e-10,0,0); /* UMIST */
166  newreact("OH,CO+=>CO,OH+",hmrate,3.1e-10,0,0); /* UMIST */
167  newreact("OH,HCO+=>CO,H2O+",hmrate,6.2e-10,0,0); /* UMIST */
168  newreact("OH+,CO=>HCO+,O",hmrate,1.05e-9,0,0); /* UMIST */
169  newreact("CO+,CH4=>CO,CH4+",hmrate,7.93e-10,0,0); /* UMIST */
170  newreact("CO,CH4+=>HCO+,CH3",hmrate,1.4e-9,0,0); /* UMIST */
171  newreact("CO,CH5+=>HCO+,CH4",hmrate,1.0e-9,0,0); /* UMIST */
172  newreact("C,NO=>CO,N",hmrate,4.65e-11,0,0); /* UMIST */
173  newreact("C,OCN=>CO,CN",hmrate,4.0e-11,0.5,0); /* UMIST */
174  newreact("C,SO=>S,CO",hmrate,7.2e-11,0,0); /* UMIST */
175  newreact("O,CN=>CO,N",hmrate,4.36e-11,0.46,364); /* UMIST */
176  newreact("O,HCN=>CO,NH",hmrate,0.00000000000073,1.14,3742); /* UMIST */
177  newreact("O,OCN=>NO,CO",hmrate,9.43e-11,-0.09,100); /* UMIST */
178  newreact("O,CS=>S,CO",hmrate,2.48e-10,-0.65,783); /* UMIST */
179  newreact("O,OCS=>SO,CO",hmrate,1.6e-11,0,2150); /* UMIST */
180  newreact("OH,HCN=>CO,NH2",hmrate,1.07e-13,0,5892); /* UMIST */
181  newreact("CN,NO=>N2,CO",hmrate,1.79e-10,0,4040); /* UMIST */
182  newreact("CN,O2=>NO,CO",hmrate,0.00000000000053,0,0); /* UMIST */
183  newreact("CO,HS=>OCS,H",hmrate,0.0000000000000595,1.12,8330); /* UMIST */
184  newreact("H+,OCS=>HS+,CO",hmrate,2.1e-9,0,0); /* UMIST */
185  newreact("He+,OCS=>S+,CO,He",hmrate,7.6e-10,0,0); /* UMIST */
186  newreact("C+,SO=>S+,CO",hmrate,2.6e-10,0,0); /* UMIST */
187  newreact("C+,OCS=>CS+,CO",hmrate,1.6e-9,0,0); /* UMIST */
188  newreact("CH+,OCS=>HCS+,CO",hmrate,1.05e-9,0,0); /* UMIST */
189  newreact("N+,CO=>NO+,C",hmrate,1.45e-10,0,0); /* UMIST */
190  newreact("N+,OCS=>S+,CO,N",hmrate,3.08e-10,0,0); /* UMIST */
191  newreact("NH+,CO=>HCO+,N",hmrate,4.41e-10,0,0); /* UMIST */
192  newreact("NH+,CO=>OCN+,H",hmrate,5.39e-10,0,0); /* UMIST */
193  newreact("NH,HCO+=>CO,NH2+",hmrate,6.4e-10,0,0); /* UMIST */
194  newreact("NH2,HCO+=>CO,NH3+",hmrate,8.9e-10,0,0); /* UMIST */
195  newreact("NH3,HCO+=>CO,NH4+",hmrate,2.2e-9,0,0); /* UMIST */
196  newreact("CN+,O2=>NO+,CO",hmrate,8.6e-11,0,0); /* UMIST */
197  newreact("HCN+,CO=>HCO+,CN",hmrate,1.4e-10,0,0); /* UMIST */
198  newreact("CO,HNO+=>NO,HCO+",hmrate,1.0e-10,0,0); /* UMIST */
199  newreact("N2+,OCS=>S+,N2,CO",hmrate,1.04e-9,0,0); /* UMIST */
200  newreact("HCO+,S=>HS+,CO",hmrate,3.3e-10,0,0); /* UMIST */
201  newreact("HCO+,CS=>HCS+,CO",hmrate,1.2e-9,0,0); /* UMIST */
202  newreact("NH,CO+=>CO,NH+",hmrate,3.2e-10,0,0); /* UMIST */
203  newreact("NH2,CO+=>CO,NH2+",hmrate,4.5e-10,0,0); /* UMIST */
204  newreact("NH3,CO+=>CO,NH3+",hmrate,2.02e-9,0,0); /* UMIST */
205  newreact("CN+,CO=>CO+,CN",hmrate,6.3e-10,0,0); /* UMIST */
206  newreact("HCN,CO+=>CO,HCN+",hmrate,3.4e-9,0,0); /* UMIST */
207  newreact("CO,N2+=>N2,CO+",hmrate,7.4e-11,0,0); /* UMIST */
208  newreact("CO+,NO=>NO+,CO",hmrate,3.3e-10,0,0); /* UMIST */
209  newreact("OCN+,e-=>CO,N",hmrate,0.0000003,-0.5,0); /* UMIST */
210  newreact("OCS+,e-=>S,CO",hmrate,0.00000015,-0.5,0); /* UMIST */
211  newreact("CO,S=>OCS,PHOTON",hmrate,1.6e-17,-1.5,0); /* UMIST */
212  newreact("OCS,PHOTON=>S,CO",th85rate,3.7e-9,0.,0.); /* UMIST */
213  newreact("OCS,CRP=>S,CO",crnurate,5360 * 2,0.,0.); /* UMIST */
214  newreact("N+,CO=>CO+,N",hmrate,8.25e-10,0,0); /* UMIST */
215  newreact("CO+,S=>S+,CO",hmrate,1.1e-9,0,0); /* UMIST */
216  newreact("O,CCl=>Cl,CO",hmrate,0.0000000000996,0,0); /* UMIST */
217  newreact("CO,H2Cl+=>HCl,HCO+",hmrate,0.00000000078,0,0); /* UMIST */
218  newreact("HNC,HCO+=>HCNH+,CO",hmrate,0.0000000031,0,0); /* */
219  newreact("HCN,HCO+=>HCNH+,CO",hmrate,0.0000000031,0,0); /* */
220  newreact("O,C2H=>CO,CH",hmrate,0.000000000017,0,0); /* */
221  newreact("C2H,CO+=>CO,C2H+",hmrate,0.00000000039,0,0); /* */
222  newreact("C2,HCO+=>CO,C2H+",hmrate,0.00000000083,0,0); /* */
223  newreact("O2,C3=>CO,C2,O",hmrate,0.000000000001,0,0); /* */
224  newreact("O,C3=>CO,C2",hmrate,0.00000000005,0.5,0); /* */
225  newreact("C2H,HCO+=>CO,C2H2+",hmrate,0.00000000078,0,0); /* */
226  newreact("O,C3H=>CO,C2H",hmrate,0.0000000001,0,250); /* */
227  newreact("O,C2H2=>CO,CH2",hmrate,0.00000000000839,1.03,1197); /* */
228  newreact("OH,C2H2=>CO,CH3",oh_c2h2_co_ch3,6.51E-18,4.,-1006);/* */
229  newreact("HCO+,C3=>C3H+,CO",hmrate,0.000000002,0,0); /* */
230  newreact("H2O,C3H+=>CO,C2H3+",hmrate,0.00000000018,0,0); /* */
231  newreact("C2H2,HCO+=>CO,C2H3+",hmrate,0.0000000014,0,0); /* */
232  newreact("e-,CH+=>C,H",hmrate,0.00000015,-0.42,0); /* UMIST */
233  newreact("e-,CH2+=>C,H,H",hmrate,0.000000403,-0.6,0); /* UMIST */
234  newreact("e-,CH3+=>CH,H,H",hmrate,0.000000056,-0.5,0); /* UMIST */
235  newreact("e-,CH3+=>CH3,PHOTON",hmrate,1.1e-10,-0.5,0); /* UMIST */
236 
237  newreact("e-,H2O+=>OH,H",hmrate,0.0000000792,-0.5,0); /* UMIST */
238  newreact("e-,H2O+=>O,H,H",hmrate,0.000000245,-0.5,0); /* UMIST */
239  newreact("e-,H2O+=>O,H2",hmrate,0.000000036,-0.5,0); /* UMIST */
240  newreact("e-,H3O+=>H2O,H",hmrate,0.000000108,-0.5,0); /* UMIST */
241  newreact("e-,H3O+=>OH,H,H",hmrate,0.000000258,-0.5,0); /* UMIST */
242  newreact("e-,H3O+=>OH,H2",hmrate,0.0000000645,-0.5,0); /* UMIST */
243  newreact("e-,H3O+=>O,H2,H",hmrate,5.59e-9,-0.5,0); /* UMIST */
244  newreact("e-,O2+=>O,O",hmrate,0.000000195,-0.7,0); /* UMIST */
245  newreact("e-,OH+=>O,H",hmrate,0.0000000375,-0.5,0); /* UMIST */
246  newreact("e-,SiH2+=>SiH,H",hmrate,0.00000015,-0.5,0); /* UMIST */
247  newreact("e-,SiH2+=>Si,H,H",hmrate,0.0000002,-0.5,0); /* UMIST */
248  newreact("e-,SiH2+=>Si,H2",hmrate,0.00000015,-0.5,0); /* UMIST */
249  newreact("e-,SiO+=>Si,O",hmrate,0.0000002,-0.5,0); /* UMIST */
250  newreact("e-,SiOH+=>SiO,H",hmrate,0.00000015,-0.5,0); /* UMIST */
251  newreact("e-,SiOH+=>Si,OH",hmrate,0.00000015,-0.5,0); /* UMIST */
252  newreact("e-,CH5+=>CH3,H2",hmrate,0.00000055,-0.3,0); /* UMIST */
253  newreact("e-,CH5+=>CH4,H",hmrate,0.00000055,-0.3,0); /* UMIST */
254  newreact("e-,CH4+=>CH3,H",hmrate,0.000000175,-0.5,0); /* UMIST */
255  newreact("e-,CH4+=>CH2,H,H",hmrate,0.000000175,-0.5,0); /* UMIST */
256  newreact("C2+,e-=>C,C",hmrate,0.0000003,-0.5,0); /* UMIST */
257  newreact("NH+,e-=>N,H",hmrate,0.000000043,-0.5,0); /* UMIST */
258  newreact("NH2+,e-=>N,H,H",hmrate,0.000000198,-0.5,0); /* UMIST */
259  newreact("NH2+,e-=>NH,H",hmrate,0.000000102,-0.5,0); /* UMIST */
260  newreact("NH3+,e-=>NH,H,H",hmrate,0.000000155,-0.5,0); /* UMIST */
261  newreact("NH3+,e-=>NH2,H",hmrate,0.000000155,-0.5,0); /* UMIST */
262  newreact("NH4+,e-=>NH2,H,H",hmrate,0.000000286,-0.5,0); /* UMIST */
263  newreact("NH4+,e-=>NH2,H2",hmrate,0.000000137,-0.5,0); /* UMIST */
264  newreact("NH4+,e-=>NH3,H",hmrate,0.000000938,-0.5,0); /* UMIST */
265  newreact("CN+,e-=>N,C",hmrate,0.00000018,-0.5,0); /* UMIST */
266  newreact("HCN+,e-=>CN,H",hmrate,0.0000002,-0.5,0); /* UMIST */
267  newreact("N2+,e-=>N,N",hmrate,0.000000036,-0.42,0); /* UMIST */
268  newreact("NO+,e-=>O,N",hmrate,0.00000043,-0.37,0); /* UMIST */
269  newreact("HNO+,e-=>NO,H",hmrate,0.0000003,-0.5,0); /* UMIST */
270  newreact("HS+,e-=>S,H",hmrate,0.0000002,-0.5,0); /* UMIST */
271  newreact("SiN+,e-=>Si,N",hmrate,0.0000002,-0.5,0); /* UMIST */
272  newreact("CS+,e-=>S,C",hmrate,0.0000002,-0.5,0); /* UMIST */
273  newreact("HCS+,e-=>CS,H",hmrate,0.00000005,-0.75,0); /* UMIST */
274  newreact("NO2+,e-=>NO,O",hmrate,0.0000003,-0.5,0); /* UMIST */
275  newreact("NS+,e-=>S,N",hmrate,0.0000002,-0.5,0); /* UMIST */
276  newreact("SO+,e-=>S,O",hmrate,0.0000002,-0.5,0); /* UMIST */
277  newreact("OCS+,e-=>CS,O",hmrate,0.00000015,-0.5,0); /* UMIST */
278  newreact("S2+,e-=>S,S",hmrate,0.0000002,-0.5,0); /* UMIST */
279  newreact("HCl+,e-=>Cl,H",hmrate,0.0000003,-0.5,0); /* UMIST */
280  newreact("H2Cl+,e-=>Cl,H,H",hmrate,0.00000027,-0.5,0); /* UMIST */
281  newreact("H2Cl+,e-=>HCl,H",hmrate,0.00000003,-0.5,0); /* UMIST */
282  newreact("CCl+,e-=>Cl,C",hmrate,0.0000003,-0.5,0); /* UMIST */
283  newreact("H2CCl+,e-=>CCl,H,H",hmrate,0.0000003,-0.5,0); /* UMIST */
284  newreact("ClO+,e-=>Cl,O",hmrate,0.0000002,-0.5,0); /* UMIST */
285  newreact("HCNH+,e-=>HCN,H",hmrate,0.00000009,-0.5,0); /* */
286  newreact("HCNH+,e-=>CN,H,H",hmrate,0.00000018,-0.5,0); /* */
287  newreact("HCNH+,e-=>HNC,H",hmrate,0.00000009,-0.5,0); /* */
288  newreact("C2H+,e-=>CH,C",hmrate,0.000000135,-0.5,0); /* */
289  newreact("C2H+,e-=>C2,H",hmrate,0.000000116,-0.76,0); /* Herbst */
290  newreact("C3+,e-=>C2,C",hmrate,0.0000003,-0.5,0); /* */
291  newreact("C2H2+,e-=>C2,H,H",hmrate,0.00000009,-0.5,0); /* */
292  newreact("C2H2+,e-=>CH,CH",hmrate,0.00000009,-0.5,0); /* */
293  newreact("C2H2+,e-=>C2H,H",hmrate,0.00000029,-0.5,0); /* Herbst */
294  newreact("C3H+,e-=>C2H,C",hmrate,0.00000015,-0.5,0); /* */
295  newreact("C3H+,e-=>C3,H",hmrate,0.00000015,-0.5,0); /* */
296  newreact("C2H3+,e-=>C2H2,H",hmrate,0.00000045,-0.5,0); /* */
297  /* >>chng 06 Apr 13, add N2H+ to chemistry. which
298  * should improve modeling of nitrogen chemistry, in
299  * particular NH and N2 */
300  newreact("N2H+,e-=>N2,H",hmrate,0.36e-7,-0.51,0); /* */
301  newreact("N2H+,e-=>NH,N",hmrate,0.64e-7,-0.51,0); /* */
302  newreact("NH,PHOTON=>NH+,e-",th85rate,1.0e-11,0.,0.); /* UMIST */
303  newreact("NH,PHOTON=>N,H",th85rate,5.0e-10,0.,0.); /* UMIST */
304  newreact("NH2,PHOTON=>NH,H",th85rate,3.9e-10,0.,0.); /* UMIST */
305  newreact("NH2,PHOTON=>NH2+,e-",th85rate,1.73e-10,0.,0.); /* UMIST */
306  newreact("NH3,PHOTON=>NH3+,e-",th85rate,1.8e-10,0.,0.); /* UMIST */
307  newreact("NH3,PHOTON=>NH,H2",th85rate,3.3e-10,0.,0.); /* UMIST */
308  newreact("NH3,PHOTON=>NH2,H",th85rate,1.1e-9,0.,0.); /* UMIST */
309  newreact("CN,PHOTON=>N,C",th85rate,1.1e-9,0.,0.);/* UMIST */ /* >>chng 06 jun 01, comment out "??" - in more than one time*/
310  newreact("HCN,PHOTON=>CN,H",th85rate,1.3e-9,0.,0.); /* UMIST */
311  newreact("N2,PHOTON=>N,N",th85rate,2.3e-10,0.,0.); /* UMIST */
312  newreact("NO,PHOTON=>O,N",th85rate,4.3e-10,0.,0.); /* UMIST */
313  newreact("NO,PHOTON=>NO+,e-",th85rate,2.6e-10,0.,0.); /* UMIST */
314  newreact("HNO,PHOTON=>NO,H",th85rate,1.7e-10,0.,0.); /* UMIST */
315  newreact("HS,PHOTON=>S,H",th85rate,9.7e-10,0.,0.); /* UMIST */
316  newreact("HS+,PHOTON=>S+,H",th85rate,3.e-10,0.,0.); /* UMIST */
317  newreact("OCN,PHOTON=>CN,O",th85rate,1.0e-11,0.,0.); /* UMIST */
318  newreact("CS,PHOTON=>S,C",th85rate,9.7e-10,0.,0.); /* UMIST */
319  newreact("CS+,PHOTON=>S+,C",th85rate,2.0e-10,0.,0.); /* UMIST */
320  newreact("CS,PHOTON=>CS+,e-",th85rate,2.0e-10,0.,0.); /* UMIST */
321  newreact("NO2,PHOTON=>NO,O",th85rate,1.2e-9,0.,0.); /* UMIST */
322  newreact("NS,PHOTON=>S,N",th85rate,1.0e-11,0.,0.); /* UMIST */
323  newreact("SO,PHOTON=>S,O",th85rate,3.7e-9,0.,0.); /* UMIST */
324  newreact("SO,PHOTON=>SO+,e-",th85rate,6.e-10,0.,0.); /* UMIST */
325  newreact("OCS,PHOTON=>OCS+,e-",th85rate,4.2e-10,0.,0.); /* UMIST */
326  newreact("NH,CRP=>NH+,e-",crnurate,500 * 2,0.,0.); /* UMIST */
327  newreact("NH,CRP=>N,H",crnurate,500 * 2,0.,0.); /* UMIST */
328  newreact("NH2,CRP=>NH,H",crnurate,81 * 2,0.,0.); /* UMIST */
329  newreact("NH2,CRP=>NH2+,e-",crnurate,610 * 2,0.,0.); /* UMIST */
330  newreact("NH3,CRP=>NH3+,e-",crnurate,543 * 2,0.,0.); /* UMIST */
331  newreact("NH3,CRP=>NH,H2",crnurate,541 * 2,0.,0.); /* UMIST */
332  newreact("NH3,CRP=>NH2,H",crnurate,1325 * 2,0.,0.); /* UMIST */
333  newreact("CN,CRP=>N,C",crnurate,10580 * 2,0.,0.); /* UMIST */
334  newreact("HCN,CRP=>CN,H",crnurate,3114 * 2,0.,0.); /* UMIST */
335  newreact("N2,CRP=>N,N",crnurate,50 * 2,0.,0.); /* UMIST */
336  newreact("NO,CRP=>O,N",crnurate,427 * 2,0.,0.); /* UMIST */
337  newreact("NO,CRP=>NO+,e-",crnurate,430 * 2,0.,0.); /* UMIST */
338  newreact("HNO,CRP=>NO,H",crnurate,1000 * 2,0.,0.); /* UMIST */
339  newreact("HS,CRP=>S,H",crnurate,500 * 2,0.,0.); /* UMIST */
340  newreact("OCN,CRP=>CN,O",crnurate,1500 * 2,0.,0.); /* UMIST */
341  newreact("CS,CRP=>S,C",crnurate,500 * 2,0.,0.); /* UMIST */
342  newreact("CS,CRP=>CS+,e-",crnurate,500 * 2,0.,0.); /* UMIST */
343  newreact("NO2,CRP=>NO,O",crnurate,1500 * 2,0.,0.); /* UMIST */
344  newreact("NS,CRP=>S,N",crnurate,500 * 2,0.,0.); /* UMIST */
345  newreact("SO,CRP=>S,O",crnurate,500 * 2,0.,0.); /* UMIST */
346  newreact("SO,CRP=>SO+,e-",crnurate,500 * 2,0.,0.); /* UMIST */
347  newreact("OCS,CRP=>OCS+,e-",crnurate,1444 * 2,0.,0.); /* UMIST */
348  newreact("PHOTON,CH=>CH+,e-",th85rate,7.6e-10,2.8,0.); /* UMIST */ /* >>chng 06 jun 01, comment out "??4.2e-10*TH85_field;" - in more than one time*/
349  newreact("PHOTON,CH=>C,H",th85rate,8.6e-10,1.2,0.); /* UMIST */ /* >>chng 06 jun 01, comment out "??1.3e-9*TH85_field;" - in more than one time*/
350  newreact("PHOTON,CH+=>C+,H",th85rate,2.5e-10,2.5,0.); /* UMIST */
351  newreact("PHOTON,CH2=>CH2+,e-",th85rate,1.0e-9,2.3,0.); /* UMIST */
352  newreact("PHOTON,CH2=>CH,H",th85rate,7.2e-10,1.7,0.); /* UMIST */
353  newreact("PHOTON,CH2+=>CH+,H",th85rate,1.7e-9,1.7,0.); /* UMIST */
354  newreact("PHOTON,CH3+=>CH2+,H",th85rate,1.0e-9,1.7,0.); /* UMIST */
355  newreact("PHOTON,CH3+=>CH+,H2",th85rate,1.0e-9,1.7,0.); /* UMIST */
356  newreact("PHOTON,H2O=>H2O+,e-",th85rate,3.3e-11,3.9,0.); /* UMIST */
357  newreact("PHOTON,H2O=>OH,H",th85rate,5.9e-10,1.7,0.); /* UMIST */
358  newreact("PHOTON,O2=>O2+,e-",th85rate,5.6e-11,3.7,0.); /* UMIST */
359  newreact("PHOTON,O2=>O,O",th85rate,6.9e-10,1.8,0.); /* UMIST */
360  newreact("PHOTON,OH=>OH+,e-",th85rate,1.6e-12,3.1,0.); /* UMIST */
361  newreact("PHOTON,OH=>O,H",th85rate,3.5e-10,1.7,0.); /* UMIST */
362  newreact("PHOTON,OH+=>O,H+",th85rate,1.e-12,1.8,0.); /* UMIST */
363  newreact("PHOTON,SiH=>Si,H",th85rate,2.8e-9,1.1,0.); /* UMIST */
364  newreact("PHOTON,SiO=>Si,O",th85rate,1.0e-10,2.3,0.); /* UMIST */
365  newreact("HNC,PHOTON=>CN,H",th85rate,1.5e-9,0.,0.); /* */
366  newreact("HNC,CRPHOT=>CN,H",crnurate,2*2986,0.,0.); /* */
367  newreact("HCl,PHOTON=>Cl,H",th85rate,0.00000000011,0.,0.); /* UMIST */
368  newreact("CCl,PHOTON=>Cl,C",th85rate,0.0000000001,0.,0.); /* UMIST */
369  newreact("ClO,PHOTON=>Cl,O",th85rate,0.0000000001,0.,0.);/* UMIST */
370  newreact("HCl,CRPHOT=>Cl,H",crnurate,2*610,0.,0.); /* UMIST */
371  newreact("CCl,CRPHOT=>Cl,C",crnurate,2*500,0.,0.); /* UMIST */
372  newreact("ClO,CRPHOT=>Cl,O",crnurate,2*500,0.,0.); /* UMIST */
373  newreact("cr,CH=>C,H",crnurate,2. * 756,0.,0.); /* UMIST */
374  newreact("cr,CH+=>C+,H",crnurate,2. * 183,0.,0.); /* UMIST */
375  newreact("cr,H2O=>OH,H",crnurate,2. * 979,0.,0.); /* UMIST */
376  newreact("cr,O2=>O2+,e-",crnurate,2. *88,0.,0.); /* UMIST */
377  newreact("cr,O2=>O,O",crnurate,2. *730,0.,0.); /* UMIST */
378  newreact("cr,OH=>O,H",crnurate,2. *522,0.,0.); /* UMIST */
379  newreact("cr,SiH=>Si,H",crnurate,2. *500,0.,0.); /* UMIST */
380  newreact("cr,SiO=>Si,O",crnurate,2. *500,0.,0.); /* UMIST */
381  newreact("PHOTON,CH3=>CH3+,e-",th85rate,1.0e-10,2.1,0.); /* UMIST */
382  newreact("PHOTON,CH3=>CH2,H",th85rate,2.5e-10,1.9,0.); /* UMIST */
383  newreact("PHOTON,CH3=>CH,H2",th85rate,2.5e-10,1.9,0.); /* UMIST */
384  newreact("CRPHOT,CH3=>CH3+,e-",crnurate,2.*500,0.,0.); /* UMIST */
385  newreact("CRPHOT,CH3=>CH2,H",crnurate,2.*500,0.,0.); /* UMIST */
386  newreact("CRPHOT,CH3=>CH,H2",crnurate,2.*500,0.,0.); /* UMIST */
387  newreact("PHOTON,CH4=>CH3,H",th85rate,2.2e-10,2.2,0.); /* UMIST */
388  newreact("PHOTON,CH4=>CH2,H2",th85rate,9.8e-10,2.2,0.); /* UMIST */
389  newreact("PHOTON,CH4=>CH,H2,H",th85rate,2.2e-10,2.2,0.); /* UMIST */
390  newreact("CRPHOT,CH4=>CH2,H2",crnurate,2.*2272,0.,0.); /* UMIST */
391  newreact("C2,PHOTON=>C,C",th85rate,4.7e-11,0.,0.); /* UMIST */ /*>>chng 05 dec 17 The rate for this reaction comes from Eric Herbst's website */
392  newreact("C2,PHOTON=>C2+,e-",th85rate,1e-10,0.,0.); /* UMIST */ /*>>chng 05 dec 17 The rate for this reaction comes from Eric Herbst's website */
393  newreact("C2,cr=>C,C",crnurate,2. *500,0.,0.); /* UMIST */
394  newreact("C2+,PHOTON=>C+,C",th85rate,1.0e-11,0.,0.); /* UMIST */
395  newreact("C2H,CRPHOT=>C2,H",crnurate,2*5000,0.,0.); /* */
396  newreact("C2H,PHOTON=>C2,H",th85rate,0.00000000051,0.,0.); /* */
397  newreact("C2H,PHOTON=>C2H+,e-",th85rate,0.00000000001,0.,0.); /* */
398  newreact("C2H,CRPHOT=>C2H+,e-",crnurate,2*5000,0.,0.); /* */
399  newreact("C3,PHOTON=>C2,C",th85rate,0.0000000038,0.,0.); /* */
400  newreact("C3,CRPHOT=>C2,C",crnurate,2*1119,0.,0.); /* */
401  newreact("C2H2,CRPHOT=>C2H2+,e-",crnurate,2*1309,0.,0.); /* */
402  newreact("C2H2,CRPHOT=>C2H,H",crnurate,2*5155,0.,0.); /* */
403  newreact("C3H,CRPHOT=>C3,H",crnurate,2*5000,0.,0.); /* */
404  newreact("C2H2,PHOTON=>C2H2+,e-",th85rate,0.00000000046,0.,0.); /* */
405  newreact("C2H2,PHOTON=>C2H,H",th85rate,0.0000000073,0.,0.); /* */
406  newreact("C3H,PHOTON=>C3,H",th85rate,0.000000001,0.,0.); /* */
407  newreact("H,CH=>C,H,H",hmrate,6.0e-9,0,40200); /* UMIST */
408  newreact("H,OH=>O,H,H",hmrate,6.0e-9,0,50900); /* UMIST */
409  newreact("H,H2O=>OH,H,H",hmrate,5.8e-9,0,52900); /* UMIST */
410  if(!co.lgFederman)
411  {
412  newreact("O,CH=>CO,H",hmrate,6.6e-11,0.,0.);/* UMIST */
413  newreact("e-,CH2+=>CH,H",hmrate,0.00000016,-0.6,0);/* UMIST */
414  newreact("e-,CH2+=>C,H2",hmrate,0.0000000768,-0.6,0); /* UMIST */
415  newreact("e-,CH3+=>C,H2,H",hmrate,0.000000105,-0.5,0); /* UMIST; Federman */
416  newreact("e-,CH3+=>CH2,H",hmrate,0.00000014,-0.5,0); /* UMIST;Federman */
417  newreact("e-,CH3+=>CH,H2",hmrate,0.000000049,-0.5,0); /* UMIST; Federman */
418  newreact("e-,CO+=>C,O",hmrate,0.0000002,-0.48,0); /* UMIST; Federman */
419  newreact("H,CH=>C,H2",hmrate,2.7e-11,0.38,2200); /* UMIST; Federman */ /* >>chng 06 Feb 27 -- NPA TH85 has a temperature barrier for this reaction, and the Meudon PDR code datafile does as well. Use the temperature barrier of 2200 K */
420  newreact("H2,CO+=>HCO+,H",hmrate,1.8e-9,0.,0.); /* UMIST;Federman; */
421  newreact("H2,CH2+=>CH3+,H",hmrate,1.6e-9,0.,0.); /* UMIST;Federman;*/
422  newreact("H2,C+=>CH2+,PHOTON",hmrate,0.0000000000000004,-0.2,0); /* UMIST;Federman */
423  newreact("N,C2=>CN,C",hmrate,5.e-11,0.5,0); /* UMIST; Federman */
424  newreact("C+,CH=>C2+,H",hmrate,27e-9,-0.50,0); /* UMIST;Federman */
425  newreact("C+,CH=>CH+,C",hmrate,3.8e-10,0.,0.); /* UMIST;Federman */
426  newreact("O,CH3+=>HCO+,H2",hmrate,4.0e-10,0.,0.); /* UMIST;Federman */
427  newreact("CH,N=>CN,H",hmrate,1.66e-10,-0.09,0); /* UMIST; Federman */
428  newreact("C+,NH=>CN+,H",hmrate,7.8e-10,0.,0.); /* UMIST; Federman */
429  newreact("e-,HCO+=>CO,H",hmrate,0.00000011,-1,0); /* UMIST; Federman */
430  }
431  else
432  {
433  newreact("O,CH=>CO,H",hmrate,9.5e-11,0.5,0); /* UMIST; Federman */
434  newreact("e-,CH2+=>CH,H",hmrate,1.25e-7,-0.5,0); /* UMIST; Federman */
435  newreact("e-,CH2+=>C,H2",hmrate,1.25e-7,-0.5,0); /* UMIST; Federman */
436  newreact("e-,CH3+=>C,H2,H",hmrate,3.5e-8,-0.5,0); /* UMIST; Federman */
437  newreact("e-,CH3+=>CH2,H",hmrate,7.0e-8,-0.5,0); /* UMIST;Federman */
438  newreact("e-,CH3+=>CH,H2",hmrate,2.45e-7,-0.5,0); /* UMIST; Federman */
439  newreact("e-,CO+=>C,O",hmrate,1.0e-7,-0.46,0); /* UMIST; Federman */
440  newreact("H,CH=>C,H2",hmrate,5.0e-11,0.5,2200); /* UMIST; Federman */ /* >>chng 06 Feb 27 -- NPA TH85 has a temperature barrier for this reaction, and the Meudon PDR code datafile does as well. Use the temperature barrier of 2200 K */
441  newreact("H2,CO+=>HCO+,H",hmrate,1.4e-9,0.,0.); /* UMIST;Federman; */
442  newreact("H2,CH2+=>CH3+,H",hmrate,1.2e-9,0.,0.); /* UMIST;Federman;*/
443  newreact("H2,C+=>CH2+,PHOTON",hmrate,1.0e-16,0.,0.); /* UMIST;Federman */
444  newreact("N,C2=>CN,C",hmrate,1.7e-11,0.5,0); /* UMIST; Federman */
445  newreact("C+,CH=>C2+,H",hmrate,5.4e-10,0.,0.); /* UMIST;Federman */
446  newreact("C+,CH=>CH+,C",hmrate,1.5e-9,0.,0.); /* UMIST;Federman */
447  newreact("O,CH3+=>HCO+,H2",hmrate,4.4e-10,0.,0.); /* UMIST;Federman */
448  newreact("CH,N=>CN,H",hmrate,2e-11,0.5,0); /* UMIST; Federman */
449  newreact("C+,NH=>CN+,H",hmrate,5.0e-10,0.,0.); /* UMIST; Federman */
450  newreact("e-,HCO+=>CO,H",hmrate,2.4e-7,-0.69,0); /* UMIST; Federman */
451  }
452 
453  newreact("H,CH+=>C+,H2",hmrate,7.5e-10,0,0); /* UMIST */
454  newreact("H,CH2=>CH,H2",hmrate,6.64e-11,0,370); /* UMIST */ /* >>chng 06 Feb 27 -- NPA TH85 has a temperature barrier for this reaction, and the Meudon PDR code datafile does as well. Use the temperature barrier of 370 K*/
455  newreact("H,CH3+=>CH2+,H2",hmrate,7.0e-10,0,10560); /* UMIST */
456  newreact("H,OH=>O,H2",hmrate,0.0000000000000699,2.8,1950); /* UMIST */
457  newreact("H,H2O=>OH,H2",hmrate,1.59e-11,1.2,9610); /* UMIST */
458  newreact("H,O2=>OH,O",hmrate,2.61e-10,0,8156); /* UMIST */
459  newreact("H,O2=>O,O,H",hmrate,6.0e-9,0,52300); /* UMIST */
460  newreact("H,C=>CH,PHOTON",hmrate,1.e-17,0,0); /* UMIST */
461  newreact("H,C+=>CH+,PHOTON",hmrate,1.7e-17,0,0); /* UMIST */
462  newreact("H,OH=>H2O,PHOTON",hmrate,5.26E-18,-5.22,90); /* UMIST */
463  newreact("H,O=>OH,PHOTON",hmrate,9.9E-19,-0.38,0); /* UMIST */
464  newreact("H-,CH=>CH2,e-",hmrate,1.0e-10,0,0); /* UMIST */
465  newreact("H-,C=>CH,e-",hmrate,1.0e-9,0,0); /* UMIST */
466  newreact("H-,OH=>H2O,e-",hmrate,1.0e-10,0,0); /* UMIST */
467  newreact("H-,O=>OH,e-",hmrate,1.0e-9,0,0); /* UMIST */
468  newreact("H-,H3O+=>H2O,H2",hmrate,0.00000023,-0.5,0); /* UMIST */
469  newreact("H-,H3O+=>OH,H2,H",hmrate,0.00000023,-0.5,0); /* UMIST */
470  newreact("H+,CH=>CH+,H",hmrate,1.9e-9,0,0); /* UMIST */
471  newreact("H+,CH2=>CH2+,H",hmrate,1.4e-9,0,0); /* UMIST */
472  newreact("H+,H2O=>H2O+,H",hmrate,6.9e-9,0,0); /* UMIST */
473  newreact("H+,O2=>O2+,H",hmrate,2.0e-9,0,0); /* UMIST */
474  newreact("H+,OH=>OH+,H",hmrate,2.1e-9,0,0); /* UMIST */
475  newreact("H+,SiO=>SiO+,H",hmrate,3.3e-9,0,0); /* UMIST */
476  newreact("H+,CH2=>CH+,H2",hmrate,1.4e-9,0,0); /* UMIST */
477  newreact("H+,SiH=>Si+,H2",hmrate,1.7e-9,0,0); /* UMIST */
478  newreact("H2,C=>CH,H",hmrate,6.64e-10,0,11700); /* UMIST */
479  newreact("H2,C+=>CH+,H",hmrate,1.0e-10,0,4640); /* UMIST */
480  newreact("H2,CH=>CH2,H",hmrate,5.46e-10,0,1943); /* UMIST */
481  newreact("H2,CH+=>CH2+,H",hmrate,1.2e-9,0,0); /* UMIST */
482  newreact("H2,OH=>H2O,H",hmrate,2.05e-12,1.52,1736); /* UMIST */
483  newreact("H2,OH+=>H2O+,H",hmrate,1.01e-9,0,0); /* UMIST */
484  newreact("H2,H2O+=>H3O+,H",hmrate,6.4e-10,0,0); /* UMIST */
485  newreact("H2,O=>OH,H",hmrate,3.14e-13,2.7,3150); /* UMIST */
486  newreact("H2,O+=>OH+,H",hmrate,1.7e-9,0,0); /* UMIST */
487  newreact("H2,SiO+=>SiOH+,H",hmrate,3.2e-10,0,0); /* UMIST */
488  newreact("H2,CH=>C,H2,H",hmrate,6.0e-9,0,40200); /* UMIST */
489  newreact("H2,OH=>O,H2,H",hmrate,6.0e-9,0,50900); /* UMIST */
490  newreact("H2,H2O=>OH,H2,H",hmrate,5.8e-9,0,52900); /* UMIST */
491  newreact("H2,O2=>O,O,H2",hmrate,6.0e-9,0,52300); /* UMIST */
492  newreact("H2,O2=>OH,OH",hmrate,3.16e-10,0,21890); /* UMIST */
493  newreact("H2,C=>CH2,PHOTON",hmrate,1.e-17,0,0); /* UMIST */
494  newreact("H2,Si+=>SiH2+,PHOTON",hmrate,0.000000000000000003,0,0); /* UMIST */
495  newreact("H2+,C=>CH+,H",hmrate,2.4e-9,0,0); /* UMIST */
496  newreact("H2+,CH=>CH2+,H",hmrate,7.1e-10,0,0); /* UMIST */
497  newreact("H2+,CH2=>CH3+,H",hmrate,1.0e-9,0,0); /* UMIST */
498  newreact("H2+,OH=>H2O+,H",hmrate,7.6e-10,0,0); /* UMIST */
499  newreact("H2+,H2O=>H3O+,H",hmrate,3.4e-9,0,0); /* UMIST */
500  newreact("H2+,O=>OH+,H",hmrate,1.5e-9,0,0); /* UMIST */
501  newreact("H2+,CH=>CH+,H2",hmrate,7.1e-10,0,0); /* UMIST */
502  newreact("H2+,CH2=>CH2+,H2",hmrate,1.0e-9,0,0); /* UMIST */
503  newreact("H2,S=>HS,H",hmrate,1.76e-13,2.88,6126); /* UMIST *//* >>chng 05 aug 02, NA added this */
504  newreact("H2+,H2O=>H2O+,H2",hmrate,3.9e-9,0,0); /* UMIST */
505  newreact("H2+,O2=>O2+,H2",hmrate,8.e-10,0,0); /* UMIST */
506  newreact("H2+,OH=>OH+,H2",hmrate,7.6e-10,0,0); /* UMIST */
507  newreact("H3+,C=>CH+,H2",hmrate,2.0e-9,0,0); /* UMIST */
508  newreact("H3+,CH=>CH2+,H2",hmrate,1.2e-9,0,0); /* UMIST */
509  newreact("H3+,CH2=>CH3+,H2",hmrate,1.7e-9,0,0); /* UMIST */
510  newreact("H3+,OH=>H2O+,H2",hmrate,1.3e-9,0,0); /* UMIST */
511  newreact("H3+,H2O=>H3O+,H2",hmrate,5.9e-9,0,0); /* UMIST */
512  newreact("H3+,O=>OH+,H2",hmrate,8.e-10,0,0); /* UMIST */
513  newreact("H3+,SiH=>SiH2+,H2",hmrate,2.0e-9,0,0); /* UMIST */
514  newreact("H3+,SiO=>SiOH+,H2",hmrate,2.0e-9,0,0); /* UMIST */
515  newreact("He+,CH=>CH+,He",hmrate,5.0e-10,0,0); /* UMIST */
516  newreact("He+,H2O=>H2O+,He",hmrate,6.05e-11,0,0); /* UMIST */
517  newreact("He+,O2=>O2+,He",hmrate,3.3e-11,0,0); /* UMIST */
518  newreact("He+,CH=>C+,H,He",hmrate,1.1e-9,0,0); /* UMIST */
519  newreact("He+,CH2=>CH+,H,He",hmrate,7.5e-10,0,0); /* UMIST */
520  newreact("He+,OH=>O+,H,He",hmrate,1.1e-9,0,0); /* UMIST */
521  newreact("He+,H2O=>OH+,H,He",hmrate,2.86e-10,0,0); /* UMIST */
522  newreact("He+,SiH=>Si+,H,He",hmrate,1.8e-9,0,0); /* UMIST */
523  newreact("He+,H2O=>OH,H+,He",hmrate,2.04e-10,0,0); /* UMIST */
524  newreact("He+,CH2=>C+,H2,He",hmrate,7.5e-10,0,0); /* UMIST */
525  newreact("He+,O2=>O+,O,He",hmrate,1.0e-9,0,0); /* UMIST */
526  newreact("He+,SiO=>Si+,O,He",hmrate,8.6e-10,0,0); /* UMIST */
527  newreact("He+,SiO=>Si,O+,He",hmrate,8.6e-10,0,0); /* UMIST */
528  newreact("He+,Si=>Si+,He",hmrate,0.0000000033,0,0); /* */
529  newreact("H,CH3=>CH2,H2",hmrate,1.0e-10,0,7600); /* UMIST */
530  newreact("H,CH4+=>CH3+,H2",hmrate,1.0e-11,0,0); /* UMIST */
531  newreact("H,CH5+=>CH4+,H2",hmrate,2.0e-11,0,0); /* UMIST */
532  newreact("H2,CH2=>CH3,H",hmrate,5.18e-11,0.17,6400); /* UMIST */
533  newreact("H2,CH=>CH3,PHOTON",hmrate,5.09E-18,-0.71,11.6); /* UMIST */
534  newreact("H2,CH3=>CH4,H",hmrate,0.0000000000000686,2.74,4740); /* UMIST */
535  newreact("H2,CH4+=>CH5+,H",hmrate,3.3e-11,0,0); /* UMIST */
536  newreact("H2,CH3+=>CH5+,PHOTON",hmrate,0.000000000000013,-1,0); /* UMIST */
537  newreact("H2+,CH4=>CH3+,H2,H",hmrate,2.3e-9,0,0); /* UMIST */
538  newreact("H2+,CH4=>CH4+,H2",hmrate,1.4e-9,0,0); /* UMIST */
539  newreact("H2+,CH4=>CH5+,H",hmrate,1.14e-10,0,0); /* UMIST */
540  newreact("H3+,CH3=>CH4+,H2",hmrate,2.1e-9,0,0); /* UMIST */
541  newreact("H3+,CH4=>CH5+,H2",hmrate,2.4e-9,0,0); /* UMIST */
542  newreact("He+,CH3=>CH+,He,H2",hmrate,1.8e-9,0,0); /* UMIST */
543  newreact("He+,CH4=>CH+,He,H2,H",hmrate,2.4e-10,0,0); /* UMIST */
544  newreact("He+,CH4=>CH2+,He,H2",hmrate,9.5e-10,0,0); /* UMIST */
545  newreact("He+,CH4=>CH3,He,H+",hmrate,4.8e-10,0,0); /* UMIST */
546  newreact("He+,CH4=>CH3+,He,H",hmrate,8.5e-11,0,0); /* UMIST */
547  newreact("He+,CH4=>CH4+,He",hmrate,5.1e-11,0,0); /* UMIST */
548  newreact("H-,CH2=>CH3,e-",hmrate,1.0e-9,0,0); /* UMIST */
549  newreact("H-,CH3=>CH4,e-",hmrate,1.0e-9,0,0); /* UMIST */
550  newreact("H+,CH3=>CH3+,H",hmrate,3.4e-9,0,0); /* UMIST */
551  newreact("H+,CH4=>CH3+,H2",hmrate,2.3e-9,0,0); /* UMIST */
552  newreact("H+,CH4=>CH4+,H",hmrate,1.5e-9,0,0); /* UMIST */
553  newreact("He+,C2=>C+,C,He",hmrate,1.6e-9,0,0); /* UMIST */
555  {
556  newreact("H2*,CH=>C,H2,H",hmrate,6.0e-9,0.,0.); /* */
557  newreact("H2*,OH=>O,H2,H",hmrate,6.0e-9,0.,0.); /* */
558  newreact("H2*,H2O=>OH,H2,H",hmrate,5.8e-9,0.,0.); /* */
559  newreact("H2*,O2=>O,O,H2",hmrate,6.0e-9,0.,0.); /* */
560  newreact("H2*,CH2=>CH3,H",hmrate,5.18e-11,0.17,0); /* */
561  newreact("H2*,CH=>CH3,PHOTON",hmrate,5.09E-18,-0.71,0); /* */
562  newreact("H2*,CH3=>CH4,H",hmrate,0.0000000000000686,2.74,0); /* */
563  newreact("H2*,CH=>CH2,H",hmrate,5.46e-10,0, 0. ); /* Tielens & Hollenbach 1985, Ap. J. 291, 722 Table 9 */
564  newreact("H2*,O=>OH,H",hmrate,3.14e-13,2.7, 0. ); /* Tielens & Hollenbach 1985, Ap. J. 291, 722 Table 9 */
565  newreact("H2*,OH=>H2O,H",hmrate,2.05e-12,1.52, 0. ); /* Tielens & Hollenbach 1985, Ap. J. 291, 722 Table 9 */
566  newreact("H2*,O2=>OH,OH",hmrate,3.16e-10,0, 0. ); /* Tielens & Hollenbach 1985, Ap. J. 291, 722 Table 9 */
567  newreact("H2*,C=>CH,H",hmrate,6.64e-10,0, 0. ); /* Tielens & Hollenbach 1985, Ap. J. 291, 722 Table 9 */
568  newreact("H2*,C+=>CH+,H",hmrate,1.0e-10,0, 0. ); /* Tielens & Hollenbach 1985, Ap. J. 291, 722 Table 9 */
569  newreact("H2*,O+=>OH+,H",hmrate,1.7e-9,0.,0.); /* */
570  }
571  newreact("H2,N=>NH,H",hmrate,1.69e-9,0,18095); /* UMIST */
572  newreact("H2,NH=>NH2,H",hmrate,5.96e-11,0,7782); /* UMIST */
573  newreact("H2,NH2=>NH3,H",hmrate,2.05e-15,3.89,1400); /* UMIST */
574  newreact("H2,CN=>HCN,H",hmrate,0.000000000000404,2.87,820); /* UMIST */
575  newreact("H+,HNO=>NO+,H2",hmrate,4.e-9,0,0); /* UMIST */
576  newreact("H+,HS=>S+,H2",hmrate,1.6e-9,0,0); /* UMIST */
577  newreact("H,HS+=>S+,H2",hmrate,1.1e-10,0,0); /* UMIST */
578  newreact("H2+,N=>NH+,H",hmrate,1.9e-9,0,0); /* UMIST */
579  newreact("H2,N+=>NH+,H",hmrate,1.0e-9,0,85); /* UMIST */
580  newreact("H2,NH+=>N,H3+",hmrate,2.25e-10,0,0); /* UMIST */
581  newreact("H2+,NH=>NH2+,H",hmrate,7.6e-10,0,0); /* UMIST */
582  newreact("H2,NH+=>NH2+,H",hmrate,1.28e-9,0,0); /* UMIST */
583  newreact("H2,NH2+=>NH3+,H",hmrate,2.7e-10,0,0); /* UMIST */
584  newreact("H2,NH3+=>NH4+,H",hmrate,0.0000000000002,0,0); /* UMIST */
585  newreact("H2+,CN=>HCN+,H",hmrate,1.2e-9,0,0); /* UMIST */
586  newreact("H2,CN+=>HCN+,H",hmrate,1.0e-9,0,0); /* UMIST */
587  newreact("H2+,NO=>HNO+,H",hmrate,1.1e-9,0,0); /* UMIST */
588  newreact("H2,S+=>HS+,H",hmrate,1.1e-10,0,9860); /* UMIST */
589  newreact("H2,CS+=>HCS+,H",hmrate,4.5e-10,0,0); /* UMIST */
590  newreact("H2,NO2+=>NO+,H2O",hmrate,1.5e-10,0,0); /* UMIST */
591  newreact("H3+,NH=>NH2+,H2",hmrate,1.3e-9,0,0); /* UMIST */
592  newreact("H3+,NH2=>NH3+,H2",hmrate,1.8e-9,0,0); /* UMIST */
593  newreact("H3+,NH3=>NH4+,H2",hmrate,2.7e-9,0,0); /* UMIST */
594  newreact("H3+,CN=>HCN+,H2",hmrate,2.0e-9,0,0); /* UMIST */
595  newreact("H3+,NO=>HNO+,H2",hmrate,1.1e-9,0,0); /* UMIST */
596  newreact("H3+,S=>HS+,H2",hmrate,2.6e-9,0,0); /* UMIST */
597  newreact("H3+,CS=>HCS+,H2",hmrate,2.9e-9,0,0); /* UMIST */
598  newreact("H3+,NO2=>NO+,OH,H2",hmrate,7.0e-10,0,0); /* UMIST */
599  newreact("He+,NH=>N+,He,H",hmrate,1.1e-9,0,0); /* UMIST */
600  newreact("He+,NH2=>N+,He,H2",hmrate,8.e-10,0,0); /* UMIST */
601  newreact("He+,NH2=>NH+,He,H",hmrate,8.e-10,0,0); /* UMIST */
602  newreact("He+,NH3=>NH+,He,H2",hmrate,1.76e-10,0,0); /* UMIST */
603  newreact("He+,NH3=>NH2+,He,H",hmrate,1.76e-9,0,0); /* UMIST */
604  newreact("He+,CN=>N,C+,He",hmrate,8.8e-10,0,0); /* UMIST */
605  newreact("He+,CN=>N+,C,He",hmrate,8.8e-10,0,0); /* UMIST */
606  newreact("He+,HCN=>N,CH+,He",hmrate,6.51e-10,0,0); /* UMIST */
607  newreact("He+,HCN=>N+,CH,He",hmrate,2.17e-10,0,0); /* UMIST */
608  newreact("He+,HCN=>N,C+,He,H",hmrate,7.75e-10,0,0); /* UMIST */
609  newreact("He+,HCN=>CN+,He,H",hmrate,1.46e-9,0,0); /* UMIST */
610  newreact("He+,N2=>N+,N,He",hmrate,9.6e-10,0,0); /* UMIST */
611  newreact("He+,NO=>O+,N,He",hmrate,2.0e-10,0,0); /* UMIST */
612  newreact("He+,NO=>O,N+,He",hmrate,1.4e-9,0,0); /* UMIST */
613  newreact("He+,HNO=>NO+,He,H",hmrate,1.0e-9,0,0); /* UMIST */
614  newreact("He+,HNO=>NO,He,H+",hmrate,1.0e-9,0,0); /* UMIST */
615  newreact("He+,HS=>S+,He,H",hmrate,1.7e-9,0,0); /* UMIST */
616  newreact("He+,OCN=>CN,O+,He",hmrate,3.0e-9,0,0); /* UMIST */
617  newreact("He+,OCN=>CN+,O,He",hmrate,3.0e-9,0,0); /* UMIST */
618  newreact("He+,SiN=>Si+,N,He",hmrate,2.0e-9,0,0); /* UMIST */
619  newreact("He+,N2O=>N2,O+,He",hmrate,2.76e-10,0,0); /* UMIST */
620  newreact("He+,N2O=>N2+,O,He",hmrate,1.24e-9,0,0); /* UMIST */
621  newreact("He+,N2O=>NO,N+,He",hmrate,3.e-10,0,0); /* UMIST */
622  newreact("He+,N2O=>NO+,N,He",hmrate,4.83e-10,0,0); /* UMIST */
623  newreact("He+,CS=>S+,C,He",hmrate,1.3e-9,0,0); /* UMIST */
624  newreact("He+,CS=>S,C+,He",hmrate,1.3e-9,0,0); /* UMIST */
625  newreact("He+,NS=>S,N+,He",hmrate,1.2e-9,0,0); /* UMIST */
626  newreact("He+,NS=>S+,N,He",hmrate,1.2e-9,0,0); /* UMIST */
627  newreact("He+,SO=>S,O+,He",hmrate,8.3e-10,0,0); /* UMIST */
628  newreact("He+,SO=>S+,O,He",hmrate,8.3e-10,0,0); /* UMIST */
629  newreact("He+,OCS=>S,CO+,He",hmrate,7.6e-10,0,0); /* UMIST */
630  newreact("He+,OCS=>CS+,O,He",hmrate,7.6e-10,0,0); /* UMIST */
631  newreact("He+,OCS=>CS,O+,He",hmrate,7.6e-10,0,0); /* UMIST */
632  newreact("He+,S2=>S+,S,He",hmrate,2.0e-9,0,0); /* UMIST */
633  newreact("H+,NH=>NH+,H",hmrate,2.1e-9,0,0); /* UMIST */
634  newreact("H+,NH2=>NH2+,H",hmrate,2.9e-9,0,0); /* UMIST */
635  newreact("H+,NH3=>NH3+,H",hmrate,1.1e-9,0,0); /* UMIST */
636  newreact("H,CN+=>CN,H+",hmrate,1.9e-10,0,0); /* UMIST */
637  newreact("H+,HCN=>HCN+,H",hmrate,0.0000000105,-0.13,0); /* UMIST */
638  newreact("H,HCN+=>HCN,H+",hmrate,3.7e-11,0,0); /* UMIST */
639  newreact("H,N2+=>N2,H+",hmrate,1.2e-10,0,0); /* UMIST */
640  newreact("H+,NO=>NO+,H",hmrate,2.9e-9,0,0); /* UMIST */
641  newreact("H+,HS=>HS+,H",hmrate,1.6e-9,0,0); /* UMIST */
642  newreact("H+,SiN=>SiN+,H",hmrate,3.0e-9,0,0); /* UMIST */
643  newreact("H+,CS=>CS+,H",hmrate,4.9e-9,0,0); /* UMIST */
644  newreact("H+,NS=>NS+,H",hmrate,4.7e-9,0,0); /* UMIST */
645  newreact("H+,SO=>SO+,H",hmrate,3.2e-9,0,0); /* UMIST */
646  newreact("H+,OCS=>OCS+,H",hmrate,2.1e-9,0,0); /* UMIST */
647  newreact("H+,S2=>S2+,H",hmrate,3.0e-9,0,0); /* UMIST */
648  newreact("H2+,NH=>NH+,H2",hmrate,7.6e-10,0,0); /* UMIST */
649  newreact("H2+,NH2=>NH2+,H2",hmrate,2.1e-9,0,0); /* UMIST */
650  newreact("H2+,NH3=>NH3+,H2",hmrate,5.7e-9,0,0); /* UMIST */
651  newreact("H2+,CN=>CN+,H2",hmrate,1.2e-9,0,0); /* UMIST */
652  newreact("H2+,HCN=>HCN+,H2",hmrate,2.7e-9,0,0); /* UMIST */
653  newreact("H2+,NO=>NO+,H2",hmrate,1.1e-9,0,0); /* UMIST */
654  newreact("He+,NH3=>NH3+,He",hmrate,2.64e-10,0,0); /* UMIST */
655  newreact("He+,N2=>N2+,He",hmrate,6.4e-10,0,0); /* UMIST */
656  newreact("H-,N=>NH,e-",hmrate,1.0e-9,0,0); /* UMIST */
657  newreact("H-,NH=>NH2,e-",hmrate,1.0e-10,0,0); /* UMIST */
658  newreact("H-,NH2=>NH3,e-",hmrate,1.0e-9,0,0); /* UMIST */
659  newreact("H-,CN=>HCN,e-",hmrate,1.0e-10,0,0); /* UMIST */
660  newreact("H-,NH4+=>NH3,H2",hmrate,0.00000023,-0.5,0); /* UMIST */
661  newreact("H-,N+=>N,H",hmrate,0.00000023,-0.5,0); /* UMIST */
662  newreact("H2,Cl+=>HCl+,H",hmrate,0.000000001,0,0); /* UMIST */
663  newreact("H2,HCl+=>H2Cl+,H",hmrate,0.0000000013,0,0); /* UMIST */
664  newreact("H3+,Cl=>HCl+,H2",hmrate,0.000000001,0,0); /* UMIST */
665  newreact("H3+,HCl=>H2Cl+,H2",hmrate,0.0000000038,0,0); /* UMIST */
666  newreact("He+,HCl=>Cl+,He,H",hmrate,0.0000000033,0,0); /* UMIST */
667  newreact("He+,CCl=>Cl,C+,He",hmrate,0.0000000033,0,0); /* UMIST */
668  newreact("He+,ClO=>Cl+,O,He",hmrate,0.000000001,0,0); /* UMIST */
669  newreact("H+,HCl=>HCl+,H",hmrate,0.0000000033,1,0); /* UMIST */
670  newreact("H3+,HNC=>HCNH+,H2",hmrate,0.0000000081,0,0); /* */
671  newreact("He+,HNC=>NH+,C,He",hmrate,0.0000000005,0,0); /* */
672  newreact("He+,HNC=>N,C+,He,H",hmrate,0.0000000005,0,0); /* */
673  newreact("He+,HNC=>CN+,He,H",hmrate,0.0000000005,0,0); /* */
674  newreact("H+,HNC=>HCN,H+",hmrate,0.000000001,0,0); /* */
675  newreact("H,HNC=>HCN,H",h_hnc_hcn_h,0.000000000000136,4.48,0);/* */
676  newreact("H2,HCN+=>HCNH+,H",hmrate,0.0000000009,0,0); /* */
677  newreact("H3+,HCN=>HCNH+,H2",hmrate,0.0000000081,0,0); /* */
678  newreact("H,C2=>CH,C",hmrate,4.67e-10,0.5,30450); /* UMIST */
679  newreact("H+,C2=>C2+,H",hmrate,3.1e-9,0,0); /* UMIST */
680  newreact("H2+,C2=>C2+,H2",hmrate,1.1e-9,0,0); /* UMIST */
681  newreact("He+,C2=>C2+,He",hmrate,5.0e-10,0,0); /* UMIST */
682  newreact("He+,C2H=>C2+,He,H",hmrate,0.000000001,0,0); /* */
683  newreact("He+,C2H=>CH+,C,He",hmrate,0.0000000015,0,0); /* */
684  newreact("He+,C2H=>CH,C+,He",hmrate,0.0000000015,0,0); /* */
685  newreact("H-,C2=>C2H,e-",hmrate,0.00000000235,0,0); /* */
686  newreact("H+,C2H=>C2+,H2",hmrate,0.0000000014,0,0); /* */
687  newreact("H+,C2H=>C2H+,H",hmrate,0.0000000014,0,0); /* */
688  newreact("H2+,C2=>C2H+,H",hmrate,0.0000000015,0,0); /* */
689  newreact("H2+,C2H=>C2H+,H2",hmrate,0.0000000014,0,0); /* */
690  newreact("H3+,C2=>C2H+,H2",hmrate,0.000000002,0,0); /* */
691  newreact("H2,C2+=>C2H+,H",hmrate,0.000000000254,0,0); /* */
692  newreact("H+,C3=>C3+,H",hmrate,0.00000000485,0,0); /* */
693  newreact("He+,C3=>C2,C+,He",hmrate,0.00000000094,0,0); /* */
694  newreact("He+,C2H2=>C2H+,He,H",hmrate,0.000000001,0,0); /* */
695  newreact("He+,C3H=>C3+,He,H",hmrate,0.000000002,0,0); /* */
696  newreact("He+,C2H2=>C2+,He,H2",hmrate,0.000000002,0,0); /* */
697  newreact("He+,C2H2=>CH+,CH,He",hmrate,0.0000000075,0,0); /* */
698  newreact("H-,C2H=>C2H2,e-",hmrate,0.000000000294,0,0); /* */
699  newreact("H+,C2H2=>C2H2+,H",hmrate,0.00000000086,0,0); /* */
700  newreact("H+,C2H2=>C2H+,H2",hmrate,0.00000000077,0,0); /* */
701  newreact("H+,C3H=>C3H+,H",hmrate,0.00000000057,0,0); /* */
702  newreact("H+,C3H=>C3+,H2",hmrate,0.0000000024,0,0); /* */
703  newreact("H2+,C2H=>C2H2+,H",hmrate,0.000000003,0,0); /* */
704  newreact("H2+,C2H2=>C2H2+,H2",hmrate,0.0000000014,0,0); /* */
705  newreact("H3+,C2H=>C2H2+,H2",hmrate,0.000000002,0,0); /* */
706  newreact("H3+,C3=>C3H+,H2",hmrate,0.0000000015,0,0); /* */
707  newreact("H2,C2H+=>C2H2+,H",hmrate,0.000000001,0,0); /* */
708  newreact("H2,C3+=>C3H+,H",hmrate,0.0000000022,0,0); /* */
709  newreact("He+,C2H2=>C2H2+,He",hmrate,0.000000001,0,0); /* */
710  newreact("H,C2H3+=>C2H2+,H2",hmrate,0.0000000000000003,-1,0); /* */
711  newreact("H2+,C2H2=>C2H3+,H",hmrate,0.0000000014,0,0); /* */
712  newreact("H3+,C2H2=>C2H3+,H2",hmrate,0.000000001,0,0); /* */
713  newreact("N2,H3+=>N2H+,H2",hmrate,1.8e-9,0.,0.); /* Bohme et al. 1973 */
714  newreact("NH2+,NH2=>NH3+,NH",hmrate,1.0e-9,0,0); /* UMIST */
715  newreact("NH2,OH+=>NH3+,O",hmrate,5.0e-10,0,0); /* UMIST */
716  newreact("NH2+,OH=>H2O+,NH",hmrate,7.1e-10,0,0); /* UMIST */
717  newreact("NH2+,NH3=>NH4+,NH",hmrate,1.61e-9,0,0); /* UMIST */
718  newreact("NH2,NH3+=>NH4+,NH",hmrate,1.0e-11,0,0); /* UMIST */
719  newreact("NH2,CH5+=>NH3+,CH4",hmrate,9.9e-10,0,0); /* UMIST */
720  newreact("NH2+,H2O=>NH3+,OH",hmrate,1.0e-10,0,0); /* UMIST */
721  newreact("NH2+,H2O=>H3O+,NH",hmrate,2.76e-9,0,0); /* UMIST */
722  newreact("NH2,H2O+=>NH3+,OH",hmrate,4.9e-10,0,0); /* UMIST */
723  newreact("NH2+,H2O=>NH4+,O",hmrate,1.45e-10,0,0); /* UMIST */
724  newreact("NH2,H3O+=>H2O,NH3+",hmrate,9.7e-10,0,0); /* UMIST */
725  newreact("NH2,HCN+=>CN,NH3+",hmrate,9.0e-10,0,0); /* UMIST */
726  newreact("NH2,CO+=>HCO+,NH",hmrate,4.5e-10,0,0); /* UMIST */
727  newreact("NH2,HNO+=>NO,NH3+",hmrate,8.8e-10,0,0); /* UMIST */
728  newreact("NH2+,O2=>HNO+,OH",hmrate,2.1e-11,0,0); /* UMIST */
729  newreact("NH2+,S=>HS+,NH",hmrate,4.4e-10,0,0); /* UMIST */
730  newreact("CH4+,NH3=>NH4+,CH3",hmrate,1.15e-9,0,0); /* UMIST */
731  newreact("CH4,NH3+=>NH4+,CH3",hmrate,4.8e-10,0,0); /* UMIST */
732  newreact("CH4,N2+=>N2,CH2+,H2",hmrate,7.e-11,0,0); /* UMIST */
733  newreact("CH4,N2+=>N2,CH3+,H",hmrate,9.3e-10,0,0); /* UMIST */
734  newreact("CH4,HNO+=>NO,CH5+",hmrate,1.0e-10,0,0); /* UMIST */
735  newreact("CH4,S+=>HCS+,H2,H",hmrate,2.0e-11,0,0); /* UMIST */
736  newreact("CH4,CS+=>HCS+,CH3",hmrate,5.0e-10,0,0); /* UMIST */
737  newreact("OH+,NH3=>NH4+,O",hmrate,1.2e-9,0,0); /* UMIST */
738  newreact("OH,NH3+=>NH4+,O",hmrate,7.0e-10,0,0); /* UMIST */
739  newreact("OH+,CN=>HCN+,O",hmrate,1.0e-9,0,0); /* UMIST */
740  newreact("OH,HCN+=>CN,H2O+",hmrate,6.3e-10,0,0); /* UMIST */
741  newreact("OH+,NO=>HNO+,O",hmrate,6.11e-10,0,0); /* UMIST */
742  newreact("OH,HNO+=>NO,H2O+",hmrate,6.2e-10,0,0); /* UMIST */
743  newreact("OH+,S=>HS+,O",hmrate,4.3e-10,0,0); /* UMIST */
744  newreact("OH+,S=>SO+,H",hmrate,4.3e-10,0,0); /* UMIST */
745  newreact("OH,S+=>SO+,H",hmrate,6.1e-10,0,0); /* UMIST */
746  newreact("NH3+,NH3=>NH4+,NH2",hmrate,2.2e-9,0,0); /* UMIST */
747  newreact("NH3,CH5+=>NH4+,CH4",hmrate,2.5e-9,0,0); /* UMIST */
748  newreact("NH3+,H2O=>NH4+,OH",hmrate,1.1e-10,0,0); /* UMIST */
749  newreact("NH3,H2O+=>NH4+,OH",hmrate,9.45e-10,0,0); /* UMIST */
750  newreact("NH3,H3O+=>NH4+,H2O",hmrate,2.2e-9,0,0); /* UMIST */
751  newreact("NH3,CO+=>HCO+,NH2",hmrate,4.12e-11,0,0); /* UMIST */
752  newreact("NH3,HNO+=>NO,NH4+",hmrate,1.1e-9,0,0); /* UMIST */
753  newreact("NH3,HS+=>S,NH4+",hmrate,9.75e-10,0,0); /* UMIST */
754  newreact("NH3,HCS+=>CS,NH4+",hmrate,2.0e-9,0,0); /* UMIST */
755  newreact("CH5+,S=>HS+,CH4",hmrate,1.3e-9,0,0); /* UMIST */
756  newreact("H2O,CN+=>HCN+,OH",hmrate,1.6e-9,0,0); /* UMIST */
757  newreact("H2O,CN+=>HCO+,NH",hmrate,1.6e-10,0,0); /* UMIST */
758  newreact("H2O,HCN+=>CN,H3O+",hmrate,1.8e-9,0,0); /* UMIST */
759  newreact("H2O,HNO+=>NO,H3O+",hmrate,2.3e-9,0,0); /* UMIST */
760  newreact("H2O+,S=>HS+,OH",hmrate,4.3e-10,0,0); /* UMIST */
761  newreact("H2O,HS+=>S,H3O+",hmrate,7.8e-10,0,0); /* UMIST */
762  newreact("H3O+,CS=>HCS+,H2O",hmrate,1.0e-9,0,0); /* UMIST */
763  newreact("CN+,NO=>OCN+,N",hmrate,1.9e-10,0,0); /* UMIST */
764  newreact("CN,HNO+=>NO,HCN+",hmrate,8.7e-10,0,0); /* UMIST */
765  newreact("CN+,O2=>OCN+,O",hmrate,8.6e-11,0,0); /* UMIST */
766  newreact("HCN+,S=>HS+,CN",hmrate,5.7e-10,0,0); /* UMIST */
767  newreact("HNO+,S=>HS+,NO",hmrate,1.1e-9,0,0); /* UMIST */
768  newreact("O2,S+=>SO+,O",hmrate,1.5e-11,0,0); /* UMIST */
769  newreact("O2+,S=>SO+,O",hmrate,5.4e-10,0,0); /* UMIST */
770  newreact("O2,CS+=>OCS+,O",hmrate,1.3e-10,0,0); /* UMIST */
771  newreact("S,SiO+=>SO,Si+",hmrate,1.0e-9,0,0); /* UMIST */
772  newreact("C+,NH3=>NH3+,C",hmrate,5.06e-10,0,0); /* UMIST */
773  newreact("C,CN+=>CN,C+",hmrate,1.1e-10,0,0); /* UMIST */
774  newreact("C,N2+=>N2,C+",hmrate,1.1e-10,0,0); /* UMIST */
775  newreact("C+,NO=>NO+,C",hmrate,5.2e-10,0,0); /* UMIST */
776  newreact("C+,SiN=>SiN+,C",hmrate,1.0e-9,0,0); /* UMIST */
777  newreact("C,CS+=>CS,C+",hmrate,1.6e-9,0,0); /* UMIST */
778  newreact("C+,NS=>NS+,C",hmrate,7.6e-10,0,0); /* UMIST */
779  newreact("C+,SO=>SO+,C",hmrate,2.6e-10,0,0); /* UMIST */
780  newreact("C+,OCS=>OCS+,C",hmrate,4.0e-10,0,0); /* UMIST */
781  newreact("CH,NH2+=>NH2,CH+",hmrate,3.5e-10,0,0); /* UMIST */
782  newreact("CH+,NH3=>NH3+,CH",hmrate,4.59e-10,0,0); /* UMIST */
783  newreact("CH,CN+=>CN,CH+",hmrate,6.4e-10,0,0); /* UMIST */
784  newreact("CH,N2+=>N2,CH+",hmrate,6.3e-10,0,0); /* UMIST */
785  newreact("CH+,NO=>NO+,CH",hmrate,7.6e-10,0,0); /* UMIST */
786  newreact("N+,NH=>NH+,N",hmrate,3.7e-10,0,0); /* UMIST */
787  newreact("N+,NH2=>NH2+,N",hmrate,1.0e-9,0,0); /* UMIST */
788  newreact("N+,NH3=>NH3+,N",hmrate,1.97e-9,0,0); /* UMIST */
789  newreact("N+,CN=>CN+,N",hmrate,1.1e-9,0,0); /* UMIST */
790  newreact("N+,HCN=>HCN+,N",hmrate,1.2e-9,0,0); /* UMIST */
791  newreact("N,N2+=>N2,N+",hmrate,1.0e-11,0,0); /* UMIST */
792  newreact("N+,NO=>NO+,N",hmrate,4.51e-10,0,0); /* UMIST */
793  newreact("N+,OCS=>OCS+,N",hmrate,1.02e-9,0,0); /* UMIST */
794  newreact("CH2,NH2+=>NH2,CH2+",hmrate,4.9e-10,0,0); /* UMIST */
795  newreact("CH2,CN+=>CN,CH2+",hmrate,8.8e-10,0,0); /* UMIST */
796  newreact("CH2,N2+=>N2,CH2+",hmrate,8.7e-10,0,0); /* UMIST */
797  newreact("CH2+,NO=>NO+,CH2",hmrate,4.2e-10,0,0); /* UMIST */
798  newreact("NH,O+=>O,NH+",hmrate,3.6e-10,0,0); /* UMIST */
799  newreact("NH,OH+=>OH,NH+",hmrate,3.6e-10,0,0); /* UMIST */
800  newreact("NH+,NH3=>NH3+,NH",hmrate,1.8e-9,0,0); /* UMIST */
801  newreact("NH+,H2O=>H2O+,NH",hmrate,1.05e-9,0,0); /* UMIST */
802  newreact("NH,CN+=>CN,NH+",hmrate,6.5e-10,0,0); /* UMIST */
803  newreact("NH,N2+=>N2,NH+",hmrate,6.5e-10,0,0); /* UMIST */
804  newreact("NH+,NO=>NO+,NH",hmrate,7.12e-10,0,0); /* UMIST */
805  newreact("NH+,O2=>O2+,NH",hmrate,4.51e-10,0,0); /* UMIST */
806  newreact("NH+,S=>S+,NH",hmrate,6.9e-10,0,0); /* UMIST */
807  newreact("CH3+,NO=>NO+,CH3",hmrate,1.0e-9,0,0); /* UMIST */
808  newreact("O+,NH2=>NH2+,O",hmrate,1.0e-9,0,0); /* UMIST */
809  newreact("O+,NH3=>NH3+,O",hmrate,1.2e-9,0,0); /* UMIST */
810  newreact("O,CN+=>CN,O+",hmrate,6.5e-11,0,0); /* UMIST */
811  newreact("O,HCN+=>HCN,O+",hmrate,6.5e-11,0,0); /* UMIST */
812  newreact("O,N2+=>N2,O+",hmrate,1.0e-11,0,0); /* UMIST */
813  newreact("O+,NO=>NO+,O",hmrate,1.7e-12,0,0); /* UMIST */
814  newreact("O+,OCS=>OCS+,O",hmrate,6.5e-10,0,0); /* UMIST */
815  newreact("NH2,OH+=>OH,NH2+",hmrate,5.0e-10,0,0); /* UMIST */
816  newreact("NH2+,NH3=>NH3+,NH2",hmrate,6.9e-10,0,0); /* UMIST */
817  newreact("NH2,H2O+=>H2O,NH2+",hmrate,4.9e-10,0,0); /* UMIST */
818  newreact("NH2,CN+=>CN,NH2+",hmrate,9.1e-10,0,0); /* UMIST */
819  newreact("NH2,N2+=>N2,NH2+",hmrate,8.9e-10,0,0); /* UMIST */
820  newreact("NH2+,NO=>NO+,NH2",hmrate,7.0e-10,0,0); /* UMIST */
821  newreact("NH2,O2+=>O2,NH2+",hmrate,8.7e-10,0,0); /* UMIST */
822  newreact("NH2+,S=>S+,NH2",hmrate,4.4e-10,0,0); /* UMIST */
823  newreact("CH4+,NH3=>NH3+,CH4",hmrate,1.65e-9,0,0); /* UMIST */
824  newreact("CH4+,OCS=>OCS+,CH4",hmrate,4.2e-10,0,0); /* UMIST */
825  newreact("OH+,NH3=>NH3+,OH",hmrate,1.2e-9,0,0); /* UMIST */
826  newreact("OH,CN+=>CN,OH+",hmrate,6.4e-10,0,0); /* UMIST */
827  newreact("OH,N2+=>N2,OH+",hmrate,6.3e-10,0,0); /* UMIST */
828  newreact("OH+,NO=>NO+,OH",hmrate,3.59e-10,0,0); /* UMIST */
829  newreact("NH3,H2O+=>H2O,NH3+",hmrate,2.21e-9,0,0); /* UMIST */
830  newreact("NH3,HCN+=>HCN,NH3+",hmrate,1.68e-9,0,0); /* UMIST */
831  newreact("NH3,N2+=>N2,NH3+",hmrate,1.9e-9,0,0); /* UMIST */
832  newreact("NH3+,Si=>Si+,NH3",hmrate,1.9e-9,0,0); /* UMIST */
833  newreact("NH3+,NO=>NO+,NH3",hmrate,7.2e-10,0,0); /* UMIST */
834  newreact("NH3,O2+=>O2,NH3+",hmrate,2.0e-9,0,0); /* UMIST */
835  newreact("NH3,S+=>S,NH3+",hmrate,1.44e-9,0,0); /* UMIST */
836  newreact("NH3,HS+=>HS,NH3+",hmrate,5.25e-10,0,0); /* UMIST */
837  newreact("NH3,SO+=>SO,NH3+",hmrate,1.3e-9,0,0); /* UMIST */
838  newreact("H2O,HCN+=>HCN,H2O+",hmrate,1.8e-9,0,0); /* UMIST */
839  newreact("H2O,N2+=>N2,H2O+",hmrate,2.3e-9,0,0); /* UMIST */
840  newreact("H2O+,NO=>NO+,H2O",hmrate,2.7e-10,0,0); /* UMIST */
841  newreact("CN+,HCN=>HCN+,CN",hmrate,1.79e-9,0,0); /* UMIST */
842  newreact("CN,N2+=>N2,CN+",hmrate,1.0e-10,0,0); /* UMIST */
843  newreact("CN+,NO=>NO+,CN",hmrate,5.7e-10,0,0); /* UMIST */
844  newreact("CN+,O2=>O2+,CN",hmrate,2.58e-10,0,0); /* UMIST */
845  newreact("CN+,S=>S+,CN",hmrate,1.1e-9,0,0); /* UMIST */
846  newreact("HCN,N2+=>N2,HCN+",hmrate,3.9e-10,0,0); /* UMIST */
847  newreact("HCN+,NO=>NO+,HCN",hmrate,8.1e-10,0,0); /* UMIST */
848  newreact("HCN+,O2=>O2+,HCN",hmrate,3.2e-10,0,0); /* UMIST */
849  newreact("HCN+,S=>S+,HCN",hmrate,5.7e-10,0,0); /* UMIST */
850  newreact("N2+,NO=>NO+,N2",hmrate,4.4e-10,0,0); /* UMIST */
851  newreact("N2+,O2=>O2+,N2",hmrate,5.e-11,0,0); /* UMIST */
852  newreact("N2+,S=>S+,N2",hmrate,1.1e-9,0,0); /* UMIST */
853  newreact("Si,NO+=>NO,Si+",hmrate,1.6e-9,0,0); /* UMIST */
854  newreact("Si,HS+=>HS,Si+",hmrate,1.4e-9,0,0); /* UMIST */
855  newreact("Si,CS+=>CS,Si+",hmrate,1.5e-10,0,0); /* UMIST */
856  newreact("NO,HNO+=>HNO,NO+",hmrate,7.0e-10,0,0); /* UMIST */
857  newreact("NO,O2+=>O2,NO+",hmrate,4.5e-10,0,0); /* UMIST */
858  newreact("NO,S+=>S,NO+",hmrate,3.7e-10,0,0); /* UMIST */
859  newreact("NO,HS+=>HS,NO+",hmrate,4.5e-10,0,0); /* UMIST */
860  newreact("NO,SiO+=>SiO,NO+",hmrate,7.2e-10,0,0); /* UMIST */
861  newreact("NO,S2+=>S2,NO+",hmrate,5.1e-10,0,0); /* UMIST */
862  newreact("O2+,NO2=>NO2+,O2",hmrate,6.6e-10,0,0); /* UMIST */
863  newreact("S,HS+=>HS,S+",hmrate,9.7e-10,0,0); /* UMIST */
864  newreact("C,N=>CN,PHOTON",hmrate,1.e-17,0,0); /* UMIST */
865  newreact("C,S=>CS,PHOTON",hmrate,4.36E-19,0.22,0); /* UMIST */
866  newreact("C+,S=>CS+,PHOTON",hmrate,3.07E-19,0.15,0); /* UMIST */
867  newreact("N+,N=>N2+,PHOTON",hmrate,3.71E-18,0.24,26.1); /* UMIST */
868  newreact("CH,N+=>N,CH+",hmrate,3.6e-10,0,0); /* UMIST */
869  newreact("CH+,S=>S+,CH",hmrate,4.7e-10,0,0); /* UMIST */
870  newreact("N+,CH2=>CH2+,N",hmrate,1.0e-9,0,0); /* UMIST */
871  newreact("N+,CH4=>CH4+,N",hmrate,2.8e-11,0,0); /* UMIST */
872  newreact("N+,OH=>OH+,N",hmrate,3.7e-10,0,0); /* UMIST */
873  newreact("N+,H2O=>H2O+,N",hmrate,2.8e-9,0,0); /* UMIST */
874  newreact("N+,O2=>O2+,N",hmrate,3.11e-10,0,0); /* UMIST */
875  newreact("OH+,S=>S+,OH",hmrate,4.3e-10,0,0); /* UMIST */
876  newreact("H2O+,S=>S+,H2O",hmrate,4.3e-10,0,0); /* UMIST */
877  newreact("Si,S+=>S,Si+",hmrate,1.6e-9,0,0); /* UMIST */
878  newreact("O2+,S=>S+,O2",hmrate,5.4e-10,0,0); /* UMIST */
879  newreact("O,CCl=>ClO,C",hmrate,0.000000000138,0,16050); /* UMIST */
880  newreact("O,ClO=>Cl,O2",hmrate,0.000000000038,0,0); /* UMIST */
881  newreact("C+,HCl=>CCl+,H",hmrate,0.0000000011,0,0); /* UMIST */
882  newreact("CH3+,HCl=>H2CCl+,H2",hmrate,0.0000000013,0,0); /* UMIST */
883  newreact("H2O,H2Cl+=>HCl,H3O+",hmrate,0.000000002,0,0); /* UMIST */
884  newreact("C+,CCl=>CCl+,C",hmrate,0.000000001,0,0); /* UMIST */
885  newreact("C+,ClO=>ClO+,C",hmrate,0.000000001,0,0); /* UMIST */
886  newreact("O2,Cl+=>Cl,O2+",hmrate,0.00000000046,0,0); /* UMIST */
887  newreact("C,NH2=>HNC,H",hmrate,0.0000000000326,-0.1,-9); /* */
888  newreact("N,CH2=>HNC,H",hmrate,0.0000000000789,0.17,0); /* */
889  newreact("CH+,HNC=>HCNH+,C",hmrate,0.0000000018,0,0); /* */
890  newreact("CH,HCNH+=>HNC,CH2+",hmrate,0.000000000315,0,0); /* */
891  newreact("CH2,HCNH+=>HNC,CH3+",hmrate,0.000000000435,0,0); /* */
892  newreact("NH+,HNC=>HCNH+,N",hmrate,0.0000000018,0,0); /* */
893  newreact("NH2+,HNC=>HCNH+,NH",hmrate,0.0000000012,0,0); /* */
894  newreact("NH2,HCNH+=>HNC,NH3+",hmrate,0.000000000445,0,0); /* */
895  newreact("OH+,HNC=>HCNH+,O",hmrate,0.0000000012,0,0); /* */
896  newreact("NH3,HCNH+=>HNC,NH4+",hmrate,0.0000000011,0,0); /* */
897  newreact("CH5+,HNC=>HCNH+,CH4",hmrate,0.0000000012,0,0); /* */
898  newreact("H2O+,HNC=>HCNH+,OH",hmrate,0.0000000011,0,0); /* */
899  newreact("H3O+,HNC=>HCNH+,H2O",hmrate,0.000000004,0,0); /* */
900  newreact("HCN+,HNC=>HCNH+,CN",hmrate,0.000000001,0,0); /* */
901  newreact("HNC,HNO+=>NO,HCNH+",hmrate,0.00000000099,0,0); /* */
902  newreact("HNC,HS+=>S,HCNH+",hmrate,0.00000000086,0,0); /* */
903  newreact("CH+,HCN=>HCNH+,C",hmrate,0.0000000018,0,0); /* */
904  newreact("CH,HCNH+=>HCN,CH2+",hmrate,0.000000000315,0,0); /* */
905  newreact("N+,CH4=>HCNH+,H,H",hmrate,0.00000000038,0,0); /* */
906  newreact("CH2,HCNH+=>HCN,CH3+",hmrate,0.000000000435,0,0); /* */
907  newreact("NH,CH3+=>HCNH+,H2",hmrate,0.00000000074,0,0); /* */
908  newreact("NH+,HCN=>HCNH+,N",hmrate,0.0000000018,0,0); /* */
909  newreact("NH2+,HCN=>HCNH+,NH",hmrate,0.0000000012,0,0); /* */
910  newreact("NH2,HCNH+=>HCN,NH3+",hmrate,0.000000000445,0,0); /* */
911  newreact("CH4,HCN+=>HCNH+,CH3",hmrate,0.00000000104,0,0); /* */
912  newreact("OH+,HCN=>HCNH+,O",hmrate,0.0000000012,0,0); /* */
913  newreact("NH3,HCN+=>HCNH+,NH2",hmrate,0.00000000084,0,0); /* */
914  newreact("NH3,HCNH+=>HCN,NH4+",hmrate,0.0000000011,0,0); /* */
915  newreact("CH5+,HCN=>HCNH+,CH4",hmrate,0.0000000012,0,0); /* */
916  newreact("H2O+,HCN=>HCNH+,OH",hmrate,0.0000000011,0,0); /* */
917  newreact("H3O+,HCN=>HCNH+,H2O",hmrate,0.000000004,0,0); /* */
918  newreact("HCN+,HCN=>HCNH+,CN",hmrate,0.0000000016,0,0); /* */
919  newreact("HCN,HNO+=>NO,HCNH+",hmrate,0.00000000099,0,0); /* */
920  newreact("HCN,HS+=>S,HCNH+",hmrate,0.00000000086,0,0); /* */
921  newreact("C,CH2=>C2H,H",hmrate,0.00000000005,0.5,0); /* */
922  newreact("O+,C2H=>CO+,CH",hmrate,0.00000000046,0,0); /* */
923  newreact("C2H,CO+=>HCO+,C2",hmrate,0.00000000039,0,0); /* */
924  newreact("C,CH2+=>C2H+,H",hmrate,0.0000000012,0,0); /* */
925  newreact("C,CH3+=>C2H+,H2",hmrate,0.0000000012,0,0); /* */
926  newreact("C2,HCN+=>CN,C2H+",hmrate,0.00000000084,0,0); /* */
927  newreact("C2,HNO+=>NO,C2H+",hmrate,0.00000000082,0,0); /* */
928  newreact("C2H,CN+=>CN,C2H+",hmrate,0.0000000008,0,0); /* */
929  newreact("C2H,N2+=>N2,C2H+",hmrate,0.00000000079,0,0); /* */
930  newreact("C2H+,HCN=>HCNH+,C2",hmrate,0.0000000014,0,0); /* */
931  newreact("C2H+,HNC=>HCNH+,C2",hmrate,0.0000000014,0,0); /* */
932  newreact("C2H+,NO=>NO+,C2H",hmrate,0.00000000012,0,0); /* */
933  newreact("C2H+,S=>S+,C2H",hmrate,0.0000000012,0,0); /* */
934  newreact("CH,C2H+=>C2,CH2+",hmrate,0.00000000032,0,0); /* */
935  newreact("CH2,C2H+=>C2,CH3+",hmrate,0.00000000044,0,0); /* */
936  newreact("CH4,C2+=>C2H+,CH3",hmrate,0.000000000238,0,0); /* */
937  newreact("CH5+,C2=>C2H+,CH4",hmrate,0.00000000095,0,0); /* */
938  newreact("CH+,CH2=>C2H+,H2",hmrate,0.000000001,0,0); /* */
939  newreact("C+,CH2=>C2H+,H",hmrate,0.000000000434,-0.5,0); /* */
940  newreact("C+,CH3=>C2H+,H2",hmrate,0.000000001,0,0); /* */
941  newreact("H2O,C2+=>C2H+,OH",hmrate,0.00000000044,0,0); /* */
942  newreact("H2O+,C2=>C2H+,OH",hmrate,0.00000000047,0,0); /* */
943  newreact("H2O+,C2H=>C2H+,H2O",hmrate,0.00000000044,0,0); /* */
944  newreact("H3O+,C2=>C2H+,H2O",hmrate,0.00000000092,0,0); /* */
945  newreact("N,C2H+=>CN,CH+",hmrate,0.00000000009,0,0); /* */
946  newreact("NH,C2+=>C2H+,N",hmrate,0.00000000033,0,0); /* */
947  newreact("NH2,C2H+=>C2,NH3+",hmrate,0.00000000046,0,0); /* */
948  newreact("NH2+,C2=>C2H+,NH",hmrate,0.00000000097,0,0); /* */
949  newreact("NH3,C2H+=>C2,NH4+",hmrate,0.00000000055,0,0); /* */
950  newreact("NH+,C2=>C2H+,N",hmrate,0.00000000049,0,0); /* */
951  newreact("N+,C2H=>C2H+,N",hmrate,0.00000000095,0,0); /* */
952  newreact("O,C2H+=>HCO+,C",hmrate,0.00000000033,0,0); /* */
953  newreact("OH+,C2=>C2H+,O",hmrate,0.00000000048,0,0); /* */
954  newreact("OH+,C2H=>C2H+,OH",hmrate,0.00000000045,0,0); /* */
955  newreact("O+,C2H=>C2H+,O",hmrate,0.00000000046,0,0); /* */
956  newreact("C+,C2H=>C3+,H",hmrate,0.000000001,0,0); /* */
957  newreact("CH+,C2H=>C3+,H2",hmrate,0.00000000098,0,0); /* */
958  newreact("C2+,C2=>C3+,C",hmrate,0.00000000087,0,0); /* */
959  newreact("CH+,C2=>C3+,H",hmrate,0.000000001,0,0); /* */
960  newreact("CH,C2+=>C3+,H",hmrate,0.00000000032,0,0); /* */
961  newreact("C,C2H+=>C3+,H",hmrate,0.0000000011,0,0); /* */
962  newreact("C,C2H2=>C3H,H",hmrate,0.0000000002,0,0); /* */
963  newreact("C,C2H2+=>C3H+,H",hmrate,0.0000000011,0,0); /* */
964  newreact("C2H,HCN+=>C2H2+,CN",hmrate,0.00000000079,0,0); /* */
965  newreact("C2H2+,HCN=>HCNH+,C2H",hmrate,0.00000000023,0,0); /* */
966  newreact("C2H2+,NO=>NO+,C2H2",hmrate,0.00000000012,0,0); /* */
967  newreact("C2H+,HCN=>C2H2+,CN",hmrate,0.0000000014,0,0); /* */
968  newreact("CH,C2H+=>C3H+,H",hmrate,0.00000000032,0,0); /* */
969  newreact("CH,CH3+=>C2H2+,H2",hmrate,0.00000000071,0,0); /* */
970  newreact("CH2,C2+=>C3H+,H",hmrate,0.00000000045,0,0); /* */
971  newreact("CH2,CH2=>C2H2,H,H",hmrate,0.00000000018,0,400); /* */
972  newreact("CH2,CH2=>C2H2,H2",hmrate,0.00000000263,0,6013); /* */
973  newreact("CH3+,C2=>C3H+,H2",hmrate,0.00000000099,0,0); /* */
974  newreact("CH4,C2H+=>C2H2+,CH3",hmrate,0.000000000374,0,0); /* */
975  newreact("CH4,C2+=>C2H2+,CH2",hmrate,0.000000000182,0,0); /* */
976  newreact("CH4,C2+=>C3H+,H2,H",hmrate,0.000000000196,0,0); /* */
977  newreact("CH4+,C2H2=>C2H2+,CH4",hmrate,0.00000000113,0,0); /* */
978  newreact("CH5+,C2H=>C2H2+,CH4",hmrate,0.0000000009,0,0); /* */
979  newreact("CH+,CH4=>C2H2+,H2,H",hmrate,0.000000000143,0,0); /* */
980  newreact("C+,C2H2=>C3H+,H",hmrate,0.0000000022,0,0); /* */
981  newreact("C+,CH3=>C2H2+,H",hmrate,0.0000000013,0,0); /* */
982  newreact("C+,CH4=>C2H2+,H2",hmrate,0.0000000004,0,0); /* */
983  newreact("H2O,C2H2+=>C2H,H3O+",hmrate,0.00000000022,0,0); /* */
984  newreact("H2O,C3H+=>HCO+,C2H2",hmrate,0.00000000027,0,0); /* */
985  newreact("H2O+,C2H=>C2H2+,OH",hmrate,0.00000000044,0,0); /* */
986  newreact("H2O+,C2H2=>C2H2+,H2O",hmrate,0.0000000019,0,0); /* */
987  newreact("H3O+,C3=>C3H+,H2O",hmrate,0.000000002,0,0); /* */
988  newreact("N,C2H2+=>HCN,CH+",hmrate,0.000000000025,0,0); /* */
989  newreact("NH2,C2H2+=>C2H,NH3+",hmrate,0.00000000045,0,0); /* */
990  newreact("NH2+,C2H=>C2H2+,NH",hmrate,0.00000000091,0,0); /* */
991  newreact("NH3,C2H2+=>C2H,NH4+",hmrate,0.0000000011,0,0); /* */
992  newreact("NH3,C2H2+=>C2H2,NH3+",hmrate,0.0000000021,0,0); /* */
993  newreact("NH3,C3H+=>C3,NH4+",hmrate,0.0000000008,0,0); /* */
994  newreact("NH3,C3H+=>C3H,NH3+",hmrate,0.00000000032,0,0); /* */
995  newreact("NH3+,C2=>C2H2+,NH",hmrate,0.00000000001,0,0); /* */
996  newreact("NH+,C2H=>C2H2+,N",hmrate,0.0000000014,0,0); /* */
997  newreact("NO,C3H+=>C3H,NO+",hmrate,0.00000000013,0,0); /* */
998  newreact("O,C2H2=>C2H,OH",hmrate,0.0000000053,0,8520); /* */
999  newreact("O,C2H2+=>HCO+,CH",hmrate,0.000000000085,0,0); /* */
1000  newreact("OH,C2H2=>C2H,H2O",hmrate,0.000000000000105,2.68,6060); /* */
1001  newreact("OH+,C2H=>C2H2+,O",hmrate,0.00000000045,0,0); /* */
1002  newreact("O+,C2H2=>C2H2+,O",hmrate,0.000000000039,0,0); /* */
1003  newreact("C,C2H3+=>C3H+,H2",hmrate,0.000000001,0,0); /* */
1004  newreact("C2H,C2H3+=>C2H2+,C2H2",hmrate,0.00000000033,0,0); /* */
1005  newreact("CH2,CH3+=>C2H3+,H2",hmrate,0.00000000099,0,0); /* */
1006  newreact("CH4,C3H+=>C2H3+,C2H2",hmrate,0.000000000612,0,0); /* */
1007  newreact("CH4,HCN+=>C2H3+,NH2",hmrate,0.00000000026,0,0); /* */
1008  newreact("CH4+,C2H2=>C2H3+,CH3",hmrate,0.00000000125,0,0); /* */
1009  newreact("CH5+,C2H2=>C2H3+,CH4",hmrate,0.0000000016,0,0); /* */
1010  newreact("CH+,CH4=>C2H3+,H2",hmrate,0.00000000109,0,0); /* */
1011  newreact("C+,CH4=>C2H3+,H",hmrate,0.0000000011,0,0); /* */
1012  newreact("H2O,C2H3+=>C2H2,H3O+",hmrate,0.00000000111,0,0); /* */
1013  newreact("HCN,C2H3+=>HCNH+,C2H2",hmrate,0.0000000029,0,0); /* */
1014  newreact("HNC,C2H3+=>HCNH+,C2H2",hmrate,0.0000000029,0,0); /* */
1015  newreact("NH3,C2H3+=>C2H2,NH4+",hmrate,0.0000000025,0,0); /* */
1016  newreact("O,C2H3+=>HCO+,CH2",hmrate,0.0000000001,0,0); /* */
1017  newreact("C,CH=>C2,H",hmrate,6.59e-11,0,0); /* UMIST */
1018  newreact("C,CN=>C2,N",hmrate,4.98e-10,0,18116); /* UMIST */
1019  newreact("C,CS=>S,C2",hmrate,1.44e-11,0.5,20435); /* UMIST */
1020  newreact("C2,S=>CS,C",hmrate,1.73e-11,0.5,0); /* UMIST */
1021  newreact("NH+,C2=>HCN+,C",hmrate,4.9e-10,0,0); /* UMIST */
1022  newreact("O+,C2=>CO+,C",hmrate,4.8e-10,0,0); /* UMIST */
1023  newreact("C+,S=>C,S+",hmrate,1.0e-9,0,0); /* UMIST */
1024  newreact("C2,S+=>CS+,C",hmrate,8.1e-10,0,0); /* UMIST */
1025  newreact("C,C2+=>C2,C+",hmrate,1.1e-10,0,0); /* UMIST */
1026  newreact("CH,C2+=>C2,CH+",hmrate,3.2e-10,0,0); /* UMIST */
1027  newreact("N+,C2=>C2+,N",hmrate,1.0e-9,0,0); /* UMIST */
1028  newreact("CH2,C2+=>C2,CH2+",hmrate,4.5e-10,0,0); /* UMIST */
1029  newreact("O+,C2=>C2+,O",hmrate,4.8e-10,0,0); /* UMIST */
1030  newreact("NH2,C2+=>C2,NH2+",hmrate,4.6e-10,0,0); /* UMIST */
1031  newreact("OH+,C2=>C2+,OH",hmrate,4.8e-10,0,0); /* UMIST */
1032  newreact("OH,C2+=>C2,OH+",hmrate,6.5e-10,0,0); /* UMIST */
1033  newreact("H2O+,C2=>C2+,H2O",hmrate,4.7e-10,0,0); /* UMIST */
1034  newreact("C2,CN+=>CN,C2+",hmrate,8.5e-10,0,0); /* UMIST */
1035  newreact("C2,N2+=>N2,C2+",hmrate,8.4e-10,0,0); /* UMIST */
1036  newreact("C2+,NO=>NO+,C2",hmrate,3.4e-10,0,0); /* UMIST */
1037  newreact("C2,O2+=>O2,C2+",hmrate,4.1e-10,0,0); /* UMIST */
1038  newreact("C2+,S=>S+,C2",hmrate,5.8e-10,0,0); /* UMIST */
1039  newreact("C,C=>C2,PHOTON",hmrate,4.36E-18,0.35,161.3); /* UMIST */
1040  newreact("C,CH+=>C2+,H",hmrate,1.2e-9,0,0); /* UMIST */
1041  newreact("CH+,CH=>C2+,H2",hmrate,7.4e-10,0,0); /* UMIST */
1042  newreact("N,C2+=>CN,C+",hmrate,4.0e-11,0,0); /* UMIST */
1043  newreact("O,C2+=>CO+,C",hmrate,3.1e-10,0,0); /* UMIST */
1044  newreact("C2+,S=>CS+,C",hmrate,5.8e-10,0,0); /* UMIST */
1045  newreact("C+,C=>C2+,PHOTON",hmrate,4.01E-18,0.17,101.5); /* UMIST */
1046  newreact("C,CH2=>CH,CH",hmrate,2.69e-12,0,23550); /* UMIST */
1047  newreact("C,H2O+=>OH,CH+",hmrate,1.1e-9,0,0); /* UMIST */
1048  newreact("C,H3O+=>HCO+,H2",hmrate,1.0e-11,0,0); /* UMIST */
1049  newreact("C,O2+=>O2,C+",hmrate,5.2e-11,0,0); /* UMIST */
1050  newreact("C,O2+=>CO+,O",hmrate,5.2e-11,0,0); /* UMIST */
1051  newreact("C,OH=>O,CH",hmrate,2.25e-11,0.5,14800); /* UMIST */
1052  newreact("C,OH+=>O,CH+",hmrate,1.2e-9,0,0); /* UMIST */
1053  newreact("C+,CH2=>CH2+,C",hmrate,5.2e-10,0,0); /* UMIST */
1054  newreact("C+,H2O=>HCO+,H",hmrate,9.0e-10,0,0); /* UMIST */
1055  newreact("C+,O=>CO+,PHOTON",hmrate,2.5E-18,0,0); /* UMIST */
1056  newreact("C+,O2=>CO+,O",hmrate,3.8e-10,0,0); /* UMIST */
1057  newreact("O,CH=>OH,C",hmrate,2.52e-11,0,2381); /* UMIST */
1058  newreact("O,CH=>HCO+,e-",hmrate,2.0e-11,0.44,0); /* UMIST */
1059  newreact("O,CH+=>CO+,H",hmrate,3.5e-10,0,0); /* UMIST */
1060  newreact("O,CH2=>OH,CH",hmrate,4.98e-10,0,6000); /* UMIST */
1061  newreact("O,CH2+=>HCO+,H",hmrate,7.5e-10,0,0); /* UMIST */
1062  newreact("O,H2O=>OH,OH",hmrate,1.85e-11,0.95,8571); /* UMIST */
1063  newreact("O,H2O+=>O2+,H2",hmrate,4.0e-11,0,0); /* UMIST */
1064  newreact("O,O=>O2,PHOTON",hmrate,4.9E-20,1.58,0); /* UMIST */
1065  newreact("O,OH=>O2,H",hmrate,4.34e-11,-0.5,30); /* UMIST */
1066  newreact("O,OH+=>O2+,H",hmrate,7.1e-10,0,0); /* UMIST */
1067  newreact("O,Si=>SiO,PHOTON",hmrate,5.52E-18,0.31,0); /* UMIST */
1068  newreact("O,Si+=>SiO+,PHOTON",hmrate,1.e-17,0,0); /* UMIST */
1069  newreact("O,SiH=>SiO,H",hmrate,4.0e-11,0.5,0); /* UMIST */
1070  newreact("O,SiH2+=>SiOH+,H",hmrate,6.3e-10,0,0); /* UMIST */
1071  newreact("O,SiO+=>O2,Si+",hmrate,2.0e-10,0,0); /* UMIST */
1072  newreact("O+,CH=>O,CH+",hmrate,3.5e-10,0,0); /* UMIST */
1073  newreact("O+,CH=>CO+,H",hmrate,3.5e-10,0,0); /* UMIST */
1074  newreact("O+,CH2=>O,CH2+",hmrate,9.7e-10,0,0); /* UMIST */
1075  newreact("O+,H2O=>H2O+,O",hmrate,3.2e-9,0,0); /* UMIST */
1076  newreact("O+,O2=>O2+,O",hmrate,1.9e-11,0,0); /* UMIST */
1077  newreact("O+,OH=>O2+,H",hmrate,3.6e-10,0,0); /* UMIST */
1078  newreact("O+,OH=>OH+,O",hmrate,3.6e-10,0,0); /* UMIST */
1079  newreact("Si,CH+=>Si+,CH",hmrate,2.0e-10,0,0); /* UMIST */
1080  newreact("Si,H2O+=>Si+,H2O",hmrate,3.0e-9,0,0); /* UMIST */
1081  newreact("Si,OH=>SiO,H",hmrate,2.0e-10,0.5,0); /* UMIST */
1082  newreact("Si,O2+=>O2,Si+",hmrate,1.6e-9,0,0); /* UMIST */
1083  newreact("Si+,H2O=>SiOH+,H",hmrate,2.3e-10,0,0); /* UMIST */
1084  newreact("Si+,OH=>SiO+,H",hmrate,6.3e-10,0,0); /* UMIST */
1085  newreact("Si+,O2=>SiO+,O",hmrate,1.e-13,0,0); /* UMIST */
1086  newreact("CH,CO+=>HCO+,C",hmrate,3.2e-10,0,0); /* UMIST */
1087  newreact("CH,H2O+=>H2O,CH+",hmrate,3.4e-10,0,0); /* UMIST */
1088  newreact("CH,H2O+=>OH,CH2+",hmrate,3.4e-10,0,0); /* UMIST */
1089  newreact("CH,H3O+=>H2O,CH2+",hmrate,6.8e-10,0,0); /* UMIST */
1090  newreact("CH,O2+=>O2,CH+",hmrate,3.1e-10,0,0); /* UMIST */
1091  newreact("CH,O2+=>HCO+,O",hmrate,3.1e-10,0,0); /* UMIST */
1092  newreact("CH,OH+=>OH,CH+",hmrate,3.5e-10,0,0); /* UMIST */
1093  newreact("CH,OH+=>O,CH2+",hmrate,3.5e-10,0,0); /* UMIST */
1094  newreact("CH,SiO+=>HCO+,Si",hmrate,5.9e-10,0,0); /* UMIST */
1095  newreact("CH+,H2O=>H3O+,C",hmrate,5.8e-10,0,0); /* UMIST */
1096  newreact("CH+,H2O=>HCO+,H2",hmrate,2.9e-9,0,0); /* UMIST */
1097  newreact("CH+,O2=>HCO+,O",hmrate,9.7e-10,0,0); /* UMIST */
1098  newreact("CH+,OH=>CO+,H2",hmrate,7.5e-10,0,0); /* UMIST */
1099  newreact("CH+,O2=>CO+,OH",hmrate,1.0e-11,0,0); /* UMIST */
1100  newreact("CH2,CO+=>HCO+,CH",hmrate,4.3e-10,0,0); /* UMIST */
1101  newreact("CH2,H2O+=>H2O,CH2+",hmrate,4.7e-10,0,0); /* UMIST */
1102  newreact("CH2,H2O+=>OH,CH3+",hmrate,4.7e-10,0,0); /* UMIST */
1103  newreact("CH2,H3O+=>H2O,CH3+",hmrate,1e-10*9.4,0.,0.); /* UMIST */
1104  newreact("CH2,O2+=>O2,CH2+",hmrate,1e-10*4.3,0.,0.); /* UMIST */
1105  /* Orphaned comment which was sitting above this reaction... */
1106  /* >>chng 06 Apr 13, add N2H+ to chemistry. Leading coefficient
1107  * is branching ratio for this reaction, which is taken from:
1108  * >>refer mole Geppert, W. D. et al. 2005, ApJ, 609, 459 */
1109  newreact("CH2,OH=>H2O,CH",hmrate,1.44e-11,0.5,3000); /* UMIST */
1110  newreact("CH2,OH+=>OH,CH2+",hmrate,1e-10*4.8,0.,0.); /* UMIST */
1111  newreact("CH2,OH+=>O,CH3+",hmrate,1e-10*4.8,0.,0.); /* UMIST */
1112  newreact("CH2+,O2=>HCO+,OH",hmrate,1e-10*9.1,0.,0.); /* UMIST */
1113  newreact("H2O,CO+=>HCO+,OH",hmrate,1e-10*8.84,0.,0.); /* UMIST */
1114  newreact("H2O+,H2O=>H3O+,OH",hmrate,1e-9*2.1,0.,0.); /* UMIST */
1115  newreact("H2O+,O2=>O2+,H2O",hmrate,1e-10*4.6,0.,0.); /* UMIST */
1116  newreact("H3O+,SiH=>SiH2+,H2O",hmrate,1e-10*9.7,0.,0.); /* UMIST */
1117  newreact("H3O+,SiO=>SiOH+,H2O",hmrate,2.0e-9,0.,0.); /* UMIST */
1118  newreact("OH,CO+=>HCO+,O",hmrate,3.1e-10,0,0); /* UMIST */
1119  newreact("OH,H2O+=>H3O+,O",hmrate,6.9e-10,0,0); /* UMIST */
1120  newreact("OH,OH=>H2O,O",hmrate,1.65e-12,1.14,50); /* UMIST */
1121  newreact("OH+,H2O=>H3O+,O",hmrate,1.3e-9,0,0); /* UMIST */
1122  newreact("OH+,H2O=>H2O+,OH",hmrate,1.59e-9,0,0); /* UMIST */
1123  newreact("OH+,O2=>O2+,OH",hmrate,5.9e-10,0,0); /* UMIST */
1124  newreact("OH+,OH=>H2O+,O",hmrate,7.0e-10,0,0); /* UMIST */
1125  newreact("OH+,SiH=>SiH2+,O",hmrate,1.0e-9,0,0); /* UMIST */
1126  newreact("OH+,SiO=>SiOH+,O",hmrate,9.4e-10,0,0); /* UMIST */
1127  newreact("C,CH5+=>CH4,CH+",hmrate,1.2e-9,0,0); /* UMIST */
1128  newreact("O,CH4=>OH,CH3",hmrate,2.29e-12,2.2,3820); /* UMIST */
1129  newreact("O,CH4+=>OH,CH3+",hmrate,1.0e-9,0,0); /* UMIST */
1130  newreact("O,CH5+=>H3O+,CH2",hmrate,2.2e-10,0,0); /* UMIST */
1131  newreact("O+,CH4=>OH,CH3+",hmrate,1.1e-10,0,0); /* UMIST */
1132  newreact("O+,CH4=>CH4+,O",hmrate,8.9e-10,0,0); /* UMIST */
1133  newreact("CH4,CH=>CH3,CH2",hmrate,2.28e-11,0.7,3000); /* UMIST */
1134  newreact("CH5+,CH=>CH4,CH2+",hmrate,6.9e-10,0,0); /* UMIST */
1135  newreact("CH2,CH2=>CH3,CH",hmrate,4.0e-10,0,5000); /* UMIST */
1136  newreact("CH4,CH2=>CH3,CH3",hmrate,7.13e-12,0,5050); /* UMIST */
1137  newreact("OH,CH2=>O,CH3",hmrate,1.44e-11,0.5,3000); /* UMIST */
1138  newreact("CH5+,CH2=>CH4,CH3+",hmrate,9.6e-10,0,0); /* UMIST */
1139  newreact("OH,CH3=>CH4,O",hmrate,3.27e-14,2.2,2240); /* UMIST */
1140  newreact("OH,CH3=>H2O,CH2",hmrate,1.2e-10,0,1400); /* UMIST */
1141  newreact("H2O,CH3=>OH,CH4",hmrate,2.3e-15,3.47,6681); /* UMIST */
1142  newreact("CH3,CH3=>CH4,CH2",hmrate,7.13e-12,0,5052); /* UMIST */
1143  newreact("OH,CH4=>H2O,CH3",hmrate,3.77e-13,2.42,1162); /* UMIST */
1144  newreact("OH+,CH4=>CH5+,O",hmrate,1.95e-10,0,0); /* UMIST */
1145  newreact("OH+,CH4=>H3O+,CH2",hmrate,1.31e-9,0,0); /* UMIST */
1146  newreact("H2O+,CH4=>H3O+,CH3",hmrate,1.4e-9,0,0); /* UMIST */
1147  newreact("CO+,CH4=>HCO+,CH3",hmrate,4.55e-10,0,0); /* UMIST */
1148  newreact("CH4,CH4+=>CH5+,CH3",hmrate,1.5e-9,0,0); /* UMIST */
1149  newreact("H2O,CH4+=>H3O+,CH3",hmrate,2.6e-9,0,0); /* UMIST */
1150  newreact("O2,CH4+=>O2+,CH4",hmrate,4.0e-10,0,0); /* UMIST */
1151  newreact("H2O,CH5+=>H3O+,CH4",hmrate,3.7e-9,0,0); /* UMIST */
1152  newreact("CH5+,OH=>H2O+,CH4",hmrate,7.0e-10,0,0); /* UMIST */
1153  newreact("C,NH=>N,CH",hmrate,1.73e-11,0.5,4000); /* UMIST */
1154  newreact("C,NH=>CN,H",hmrate,1.1e-10,0.5,0); /* UMIST */
1155  newreact("C,N2=>CN,N",hmrate,8.69e-11,0,22600); /* UMIST */
1156  newreact("C,NO=>CN,O",hmrate,4.8e-11,0,0); /* UMIST */
1157  newreact("C,HS=>S,CH",hmrate,1.2e-11,0.58,5880); /* UMIST */
1158  newreact("C,HS=>CS,H",hmrate,2.0e-11,0,0); /* UMIST */
1159  newreact("C,NS=>S,CN",hmrate,2.0e-11,0.5,0); /* UMIST */
1160  newreact("C,NS=>CS,N",hmrate,1.73e-11,0.5,4000); /* UMIST */
1161  newreact("C,S2=>CS,S",hmrate,1.73e-11,0.5,0); /* UMIST */
1162  newreact("CH,N=>NH,C",hmrate,3.03e-11,0.65,1207); /* UMIST */
1163  newreact("CH,N2=>HCN,N",hmrate,0.00000000000056,0.88,10128); /* UMIST */
1164  newreact("CH,NO=>HCN,O",hmrate,5.59e-9,0,10814); /* UMIST */
1165  newreact("CH,NO=>CN,OH",hmrate,2.32E-26,0,0); /* UMIST */
1166  newreact("CH,NO=>OCN,H",hmrate,1.13E-25,0,0); /* UMIST */
1167  newreact("CH,HNO=>NO,CH2",hmrate,1.73e-11,0.5,0); /* UMIST */
1168  newreact("CH,S=>HS,C",hmrate,1.73e-11,0.5,4000); /* UMIST */
1169  newreact("CH,S=>CS,H",hmrate,1.1e-12,0,0); /* UMIST */
1170  newreact("N,NH=>N2,H",hmrate,4.98e-11,0,0); /* UMIST */
1171  newreact("N,CH3=>HCN,H,H",hmrate,3.32e-13,0,0); /* UMIST */
1172  newreact("N,CH3=>HCN,H2",hmrate,1.3e-11,0.5,0); /* UMIST */
1173  newreact("N,OH=>O,NH",hmrate,1.88e-11,0.1,10700); /* UMIST */
1174  newreact("N,OH=>NO,H",hmrate,5.32e-11,-0.25,0); /* UMIST */
1175  newreact("N,CN=>N2,C",hmrate,3.e-10,0,0); /* UMIST */
1176  newreact("N,SiH=>SiN,H",hmrate,5.e-11,0.5,0); /* UMIST */
1177  newreact("N,NO=>N2,O",hmrate,3.75e-11,0,26); /* UMIST */
1178  newreact("N,HNO=>NO,NH",hmrate,2.94e-12,0.5,1000); /* UMIST */
1179  newreact("N,HNO=>N2O,H",hmrate,1.43e-12,0.5,1500); /* UMIST */
1180  newreact("N,O2=>NO,O",hmrate,2.26e-12,0.86,3134); /* UMIST */
1181  newreact("N,HS=>NS,H",hmrate,1.73e-11,0.5,0); /* UMIST */
1182  newreact("N,HS=>S,NH",hmrate,1.73e-11,0.5,9060); /* UMIST */
1183  newreact("N,CS=>S,CN",hmrate,3.8e-11,0.5,1160); /* UMIST */
1184  newreact("N,NS=>S,N2",hmrate,1.73e-11,0.5,0); /* UMIST */
1185  newreact("N,SO=>NS,O",hmrate,4.68e-11,0.5,8254); /* UMIST */
1186  newreact("N,SO=>S,NO",hmrate,1.73e-11,0.5,750); /* UMIST */
1187  newreact("N,S2=>NS,S",hmrate,1.73e-11,0.5,4000); /* UMIST */
1188  newreact("CH2,CN=>HCN,CH",hmrate,5.3e-12,0,2500); /* UMIST */
1189  newreact("CH2,NO=>HCN,OH",hmrate,0.000000000000832,0,1443); /* UMIST */
1190  newreact("CH2,HNO=>NO,CH3",hmrate,1.73e-11,0.5,0); /* UMIST */
1191  newreact("NH,NH=>N2,H,H",hmrate,1.16e-9,0,0); /* UMIST */
1192  newreact("NH,NH=>N2,H2",hmrate,1.7e-11,0,0); /* UMIST */
1193  newreact("NH,O=>OH,N",hmrate,1.16e-11,0,0); /* UMIST */
1194  newreact("NH,O=>NO,H",hmrate,1.16e-10,0,0); /* UMIST */
1195  newreact("NH,OH=>HNO,H",hmrate,3.32e-11,0,0); /* UMIST */
1196  newreact("NH,OH=>NH2,O",hmrate,2.93e-12,0.1,5800); /* UMIST */
1197  newreact("NH,OH=>H2O,N",hmrate,3.11e-12,1.2,0); /* UMIST */
1198  newreact("NH,H2O=>OH,NH2",hmrate,1.83e-12,1.6,14090); /* UMIST */
1199  newreact("NH,CN=>HCN,N",hmrate,2.94e-12,0.5,1000); /* UMIST */
1200  newreact("NH,NO=>N2O,H",hmrate,1.16e-10,-1.03,420); /* UMIST */
1201  newreact("NH,NO=>N2,O,H",hmrate,5.e-11,0,0); /* UMIST */
1202  newreact("NH,NO=>N2,OH",hmrate,1.46e-11,-0.58,37); /* UMIST */
1203  newreact("NH,S=>HS,N",hmrate,1.73e-11,0.5,4000); /* UMIST */
1204  newreact("NH,S=>NS,H",hmrate,1.73e-11,0.5,0); /* UMIST */
1205  newreact("NH,NO2=>HNO,NO",hmrate,5.72e-12,0.5,2500); /* UMIST */
1206  newreact("NH,NO2=>N2O,OH",hmrate,1.44e-13,0, 1140); /* UMIST */
1207  newreact("CH3,NH3=>CH4,NH2",hmrate,0.0000000000000955,0,4890); /* UMIST */
1208  newreact("CH3,CN=>HCN,CH2",hmrate,9.21e-12,0.7,1500); /* UMIST */
1209  newreact("CH3,HNO=>NO,CH4",hmrate,1.44e-11,0.5,0); /* UMIST */
1210  newreact("O,NH2=>OH,NH",hmrate,1.39e-11,0,40); /* UMIST */
1211  newreact("O,NH2=>NO,H2",hmrate,8.3e-12,0,0); /* UMIST */
1212  newreact("O,NH3=>OH,NH2",hmrate,1.89e-11,0,4003); /* UMIST */
1213  newreact("O,CN=>NO,C",hmrate,3.81e-11,0.5,14545); /* UMIST */
1214  newreact("O,HCN=>CN,OH",hmrate,6.21e-10,0,12439); /* UMIST */
1215  newreact("O,HCN=>OCN,H",hmrate,1.36e-12,1.38,3693); /* UMIST */
1216  newreact("O,N2=>NO,N",hmrate,2.51e-10,0,38602); /* UMIST */
1217  newreact("O,NO=>O2,N",hmrate,1.18e-11,0,20413); /* UMIST */
1218  newreact("O,HNO=>NO,OH",hmrate,6.e-11,0,0); /* UMIST */
1219  newreact("O,HNO=>O2,NH",hmrate,2.94e-12,0.5,3500); /* UMIST */
1220  newreact("O,HNO=>NO2,H",hmrate,1.44e-12,0.5,0); /* UMIST */
1221  newreact("O,HS=>S,OH",hmrate,1.74e-11,0.67,956); /* UMIST */
1222  newreact("O,HS=>SO,H",hmrate,2.32e-10,0,0); /* UMIST */
1223  newreact("O,OCN=>O2,CN",hmrate,4.02e-10,-1.43,3501); /* UMIST */
1224  newreact("O,SiN=>NO,Si",hmrate,2.5e-11,0.5,0); /* UMIST */
1225  newreact("O,SiN=>SiO,N",hmrate,5.75e-11,0.1,200); /* UMIST */
1226  newreact("O,N2O=>NO,NO",hmrate,1.15e-10,0,13400); /* UMIST */
1227  newreact("O,N2O=>O2,N2",hmrate,1.66e-10,0,14100); /* UMIST */
1228  newreact("O,CS=>SO,C",hmrate,4.68e-11,0.5,28940); /* UMIST */
1229  newreact("O,NS=>S,NO",hmrate,5.e-11,0.5,0); /* UMIST */
1230  newreact("O,NS=>SO,N",hmrate,1.73e-11,0.5,4000); /* UMIST */
1231  newreact("O,SO=>S,O2",hmrate,0.00000000000066,0,2760); /* UMIST */
1232  newreact("O,S2=>SO,S",hmrate,1.73e-11,0.5,0); /* UMIST */
1233  newreact("NH2,OH=>NH3,O",hmrate,0.000000000000208,0.76,262); /* UMIST */
1234  newreact("NH2,OH=>H2O,NH",hmrate,1.5e-12,0,0); /* UMIST */
1235  newreact("NH2,NO=>N2,OH,H",hmrate,1.49e-12,0,0); /* UMIST */
1236  newreact("NH2,NO=>N2,H2O",hmrate,4.27e-11,-2.5,331); /* UMIST */
1237  newreact("CH4,CN=>HCN,CH3",hmrate,3.14e-12,1.53,504); /* UMIST */
1238  newreact("OH,NH3=>H2O,NH2",hmrate,1.47e-13,2.05,7); /* UMIST */
1239  newreact("OH,CN=>HCN,O",hmrate,1.0e-11,0,1000); /* UMIST */
1240  newreact("OH,CN=>OCN,H",hmrate,7.e-11,0,0); /* UMIST */
1241  newreact("OH,HCN=>CN,H2O",hmrate,1.87e-13,1.5,3887); /* UMIST */
1242  newreact("OH,NO=>NO2,H",hmrate,5.2e-12,0,15100); /* UMIST */
1243  newreact("OH,S=>HS,O",hmrate,6.6e-11,0,0); /* UMIST */
1244  newreact("OH,S=>SO,H",hmrate,6.6e-11,0,0); /* UMIST */
1245  newreact("OH,N2O=>HNO,NO",hmrate,1.04E-17,4.33,12623); /* UMIST */
1246  newreact("OH,CS=>OCS,H",hmrate,0.0000000000000939,1.12,800); /* UMIST */
1247  newreact("NH3,CN=>HCN,NH2",hmrate,2.6e-11,-1.1,0); /* UMIST */
1248  newreact("CN,NO=>OCN,N",hmrate,1.62e-10,0,21205); /* UMIST */
1249  newreact("CN,HNO=>NO,HCN",hmrate,1.5e-11,0.5,0); /* UMIST */
1250  newreact("CN,S=>NS,C",hmrate,5.71e-11,0.5,32010); /* UMIST */
1251  newreact("CN,S=>CS,N",hmrate,1.73e-11,0.5,0); /* UMIST */
1252  newreact("N2,O2=>N2O,O",hmrate,1.0e-10,0,55200); /* UMIST */
1253  newreact("NO,NO=>O2,N2",hmrate,2.51e-11,0,30653); /* UMIST */
1254  newreact("NO,NO=>N2O,O",hmrate,7.22e-12,0,33155); /* UMIST */
1255  newreact("NO,HNO=>N2O,OH",hmrate,1.41e-11,0,14890); /* UMIST */
1256  newreact("NO,S=>NS,O",hmrate,2.94e-11,0.5,17465); /* UMIST */
1257  newreact("NO,S=>SO,N",hmrate,1.75e-10,0,20200); /* UMIST */
1258  newreact("O2,S=>SO,O",hmrate,2.28e-12,0.52,0); /* UMIST */
1259  newreact("S,SO=>S2,O",hmrate,1.73e-11,0.5,11500); /* UMIST */
1260  newreact("C,NH+=>N,CH+",hmrate,1.6e-9,0,0); /* UMIST */
1261  newreact("C+,NH=>CH+,N",hmrate,5e-10,0.,0.); /* Zsargo & Federman 2003 */
1262  newreact("C+,NH2=>HCN+,H",hmrate,1.1e-9,0,0); /* UMIST */
1263  newreact("C,NH2+=>NH,CH+",hmrate,1.2e-9,0,0); /* UMIST */
1264  newreact("C+,NH3=>HCN+,H2",hmrate,7.e-11,0,0); /* UMIST */
1265  newreact("C,NH3+=>NH,CH2+",hmrate,1.0e-11,0,0); /* UMIST */
1266  newreact("C,HCN+=>CN,CH+",hmrate,1.1e-9,0,0); /* UMIST */
1267  newreact("C,HNO+=>NO,CH+",hmrate,1.0e-9,0,0); /* UMIST */
1268  newreact("C+,HS=>CS+,H",hmrate,1.1e-9,0,0); /* UMIST */
1269  newreact("C,HS+=>CS+,H",hmrate,9.9e-10,0,0); /* UMIST */
1270  newreact("C+,OCN=>CO+,CN",hmrate,3.8e-9,0,0); /* UMIST */
1271  newreact("C+,NS=>CS+,N",hmrate,7.6e-10,0,0); /* UMIST */
1272  newreact("C+,SO=>S,CO+",hmrate,2.6e-10,0,0); /* UMIST */
1273  newreact("C+,SO=>CS+,O",hmrate,2.6e-10,0,0); /* UMIST */
1274  newreact("CH+,N=>CN+,H",hmrate,1.9e-10,0,0); /* UMIST */
1275  newreact("CH,N+=>CN+,H",hmrate,3.6e-10,0,0); /* UMIST */
1276  newreact("CH,NH+=>CH2+,N",hmrate,9.9e-10,0,0); /* UMIST */
1277  newreact("CH+,NH=>CN+,H2",hmrate,7.6e-10,0,0); /* UMIST */
1278  newreact("CH+,NH2=>HCN+,H2",hmrate,1.1e-9,0,0); /* UMIST */
1279  newreact("CH,NH2+=>NH,CH2+",hmrate,3.5e-10,0,0); /* UMIST */
1280  newreact("CH+,NH3=>NH4+,C",hmrate,4.05e-10,0,0); /* UMIST */
1281  newreact("CH,NH3+=>NH4+,C",hmrate,6.9e-10,0,0); /* UMIST */
1282  newreact("CH,HCN+=>CN,CH2+",hmrate,6.3e-10,0,0); /* UMIST */
1283  newreact("CH,HNO+=>NO,CH2+",hmrate,6.2e-10,0,0); /* UMIST */
1284  newreact("CH+,S=>HS+,C",hmrate,4.7e-10,0,0); /* UMIST */
1285  newreact("CH+,S=>CS+,H",hmrate,4.7e-10,0,0); /* UMIST */
1286  newreact("CH,S+=>CS+,H",hmrate,6.2e-10,0,0); /* UMIST */
1287  newreact("CH,HS+=>S,CH2+",hmrate,5.8e-10,0,0); /* UMIST */
1288  newreact("N,CH2+=>HCN+,H",hmrate,2.2e-10,0,0); /* UMIST */
1289  newreact("N+,NH=>N2+,H",hmrate,3.7e-10,0,0); /* UMIST */
1290  newreact("N,NH+=>N2+,H",hmrate,1.3e-9,0,0); /* UMIST */
1291  newreact("N+,CH4=>HCN+,H2,H",hmrate,5.6e-11,0,0); /* UMIST */
1292  newreact("N,OH+=>NO+,H",hmrate,8.9e-10,0,0); /* UMIST */
1293  newreact("N+,NH3=>NH2+,NH",hmrate,2.16e-10,0,0); /* UMIST */
1294  newreact("N,H2O+=>HNO+,H",hmrate,1.9e-10,0,0); /* UMIST */
1295  newreact("N+,NO=>N2+,O",hmrate,7.9e-11,0,0); /* UMIST */
1296  newreact("N+,O2=>NO,O+",hmrate,3.66e-11,0,0); /* UMIST */
1297  newreact("N+,O2=>NO+,O",hmrate,2.63e-10,0,0); /* UMIST */
1298  newreact("N,O2+=>NO+,O",hmrate,1.8e-10,0,0); /* UMIST */
1299  newreact("N,HS+=>NS+,H",hmrate,7.4e-10,0,0); /* UMIST */
1300  newreact("N,SiO+=>NO+,Si",hmrate,9.e-11,0,0); /* UMIST */
1301  newreact("N,SiO+=>NO,Si+",hmrate,2.1e-10,0,0); /* UMIST */
1302  newreact("N,SO+=>NS+,O",hmrate,5.e-11,0,0); /* UMIST */
1303  newreact("N+,OCS=>CS+,NO",hmrate,7.e-11,0,0); /* UMIST */
1304  newreact("CH2,NH+=>CH3+,N",hmrate,1.4e-9,0,0); /* UMIST */
1305  newreact("CH2,NH2+=>CH3+,NH",hmrate,4.9e-10,0,0); /* UMIST */
1306  newreact("CH2+,NH3=>NH4+,CH",hmrate,1.26e-9,0,0); /* UMIST */
1307  newreact("CH2,NH3+=>NH2,CH3+",hmrate,9.6e-10,0,0); /* UMIST */
1308  newreact("CH2,HCN+=>CN,CH3+",hmrate,8.7e-10,0,0); /* UMIST */
1309  newreact("CH2,HNO+=>NO,CH3+",hmrate,8.6e-10,0,0); /* UMIST */
1310  newreact("CH2+,S=>HCS+,H",hmrate,1.4e-9,0,0); /* UMIST */
1311  newreact("CH2,S+=>HCS+,H",hmrate,1.0e-11,0,0); /* UMIST */
1312  newreact("NH+,NH=>NH2+,N",hmrate,1.0e-9,0,0); /* UMIST */
1313  newreact("NH+,O=>OH+,N",hmrate,1.0e-9,0,0); /* UMIST */
1314  newreact("NH,O+=>NO+,H",hmrate,3.6e-10,0,0); /* UMIST */
1315  newreact("NH+,NH2=>NH3+,N",hmrate,1.5e-9,0,0); /* UMIST */
1316  newreact("NH,NH2+=>NH3+,N",hmrate,7.3e-10,0,0); /* UMIST */
1317  newreact("NH+,OH=>H2O+,N",hmrate,1.0e-9,0,0); /* UMIST */
1318  newreact("NH,OH+=>NH2+,O",hmrate,3.6e-10,0,0); /* UMIST */
1319  newreact("NH+,NH3=>NH4+,N",hmrate,6.e-10,0,0); /* UMIST */
1320  newreact("NH,NH3+=>NH4+,N",hmrate,7.1e-10,0,0); /* UMIST */
1321  newreact("NH,CH5+=>CH4,NH2+",hmrate,7.1e-10,0,0); /* UMIST */
1322  newreact("NH+,H2O=>NH3+,O",hmrate,1.75e-10,0,0); /* UMIST */
1323  newreact("NH+,H2O=>H3O+,N",hmrate,1.05e-9,0,0); /* UMIST */
1324  newreact("NH+,H2O=>HNO+,H2",hmrate,3.5e-10,0,0); /* UMIST */
1325  newreact("NH,H2O+=>H3O+,N",hmrate,7.1e-10,0,0); /* UMIST */
1326  newreact("NH+,H2O=>OH,NH2+",hmrate,8.75e-10,0,0); /* UMIST */
1327  newreact("NH+,CN=>HCN+,N",hmrate,1.6e-9,0,0); /* UMIST */
1328  newreact("NH,HCN+=>CN,NH2+",hmrate,6.5e-10,0,0); /* UMIST */
1329  newreact("NH,CO+=>HCO+,N",hmrate,3.2e-10,0,0); /* UMIST */
1330  newreact("NH,Si+=>SiN+,H",hmrate,1.0e-9,0,0); /* UMIST */
1331  newreact("NH,HNO+=>NO,NH2+",hmrate,6.3e-10,0,0); /* UMIST */
1332  newreact("NH,O2+=>HNO+,O",hmrate,3.2e-10,0,0); /* UMIST */
1333  newreact("NH+,O2=>NO+,OH",hmrate,2.05e-10,0,0); /* UMIST */
1334  newreact("NH,O2+=>NO2+,H",hmrate,3.2e-10,0,0); /* UMIST */
1335  newreact("NH+,S=>HS+,N",hmrate,6.9e-10,0,0); /* UMIST */
1336  newreact("NH+,S=>NS+,H",hmrate,6.9e-10,0,0); /* UMIST */
1337  newreact("NH,S+=>NS+,H",hmrate,6.3e-10,0,0); /* UMIST */
1338  newreact("CH3+,NH3=>NH4+,CH2",hmrate,3.4e-10,0,0); /* UMIST */
1339  newreact("CH3+,S=>HCS+,H2",hmrate,1.4e-9,0,0); /* UMIST */
1340  newreact("O,NH2+=>HNO+,H",hmrate,7.2e-11,0,0); /* UMIST */
1341  newreact("O,NH3+=>HNO+,H2",hmrate,1.0e-11,0,0); /* UMIST */
1342  newreact("O+,CN=>NO+,C",hmrate,1.0e-9,0,0); /* UMIST */
1343  newreact("O+,HCN=>CO+,NH",hmrate,1.2e-9,0,0); /* UMIST */
1344  newreact("O+,HCN=>NO+,CH",hmrate,1.2e-9,0,0); /* UMIST */
1345  newreact("O+,HCN=>HCO+,N",hmrate,1.2e-9,0,0); /* UMIST */
1346  newreact("O+,N2=>NO+,N",hmrate,1.2e-12,0,0); /* UMIST */
1347  newreact("O,N2+=>NO+,N",hmrate,1.3e-10,0,0); /* UMIST */
1348  newreact("O,HNO+=>NO2+,H",hmrate,1.e-12,0,0); /* UMIST */
1349  newreact("O,HS+=>S+,OH",hmrate,2.9e-10,0,0); /* UMIST */
1350  newreact("O,HS+=>SO+,H",hmrate,2.9e-10,0,0); /* UMIST */
1351  newreact("O,SiN+=>SiO+,N",hmrate,1.0e-9,0,0); /* UMIST */
1352  newreact("O+,N2O=>NO+,NO",hmrate,6.3e-10,0,0); /* UMIST */
1353  newreact("O,CS+=>S,CO+",hmrate,6.e-11,0,0); /* UMIST */
1354  newreact("O,HCS+=>S,HCO+",hmrate,5.e-12,0,0); /* UMIST */
1355  newreact("O,HCS+=>OCS+,H",hmrate,5.e-12,0,0); /* UMIST */
1356  newreact("O+,NO2=>O2,NO+",hmrate,8.3e-10,0,0); /* UMIST */
1357  newreact("O,NS+=>S,NO+",hmrate,6.1e-10,0,0); /* UMIST */
1358 
1359  /* Create linear list of species and populate it... */
1360  coreactions.list = (struct COmole_rate_s **)MALLOC((size_t)coreactions.n*
1361  sizeof(struct COmole_rate_s *));
1362 
1363  /* ...first active species */
1365  coreactions.n,NULL);
1366  ASSERT (i == coreactions.n);
1367 
1368 }
1369 STATIC void newreact(const char label[],
1370  double (*fun)(struct COmole_rate_s *rate), double a, double b, double c)
1371 {
1372  struct COmole_rate_s *rate;
1373  struct molecule *sp;
1374  data_u *p;
1375  int i,j,prod,exists;
1376  char buf[7];
1377 
1378  DEBUG_ENTRY("newreact()");
1379 
1380  coreactions.n++;
1381  rate = (struct COmole_rate_s *) MALLOC (sizeof(struct COmole_rate_s));
1382  p = addentry(label,0,mole_priv.reactab,&exists);
1383  p->p = (void *) rate;
1384  rate->label = (char *) p->key;
1385  rate->fun = fun;
1386  if(fun == hmrate && b == 0. && c == 0.) /* Reaction rate is actually simpler */
1387  {
1388  rate->fun = constrate;
1389  }
1390  rate->a = a;
1391  rate->b = b;
1392  rate->c = c;
1393  rate->rk = 0.0; /* Sane initial value, in case used early */
1394 
1395  rate->index = coreactions.n-1;
1396 
1397  rate->nreactants = rate->nrates = rate->nproducts = rate->photon = 0;
1398  j = prod = 0;
1399  for(i=0;!i || label[i-1]!='\0';i++)
1400  {
1401  if(label[i] == ',' || label[i] == '=' || label[i] == '\0')
1402  {
1403  buf[j] = '\0';
1404  j = 0;
1405  sp = findspecies(buf);
1406  if(sp != &null_mole)
1407  {
1408  if(prod == 0)
1409  {
1410  fixit(); /* Bodge, should really test if active when filling matrix not when defining reaction */
1411  if(sp->active)
1412  {
1413  if(rate->nreactants >= MAXREACTANTS)
1414  {
1415  fprintf(stderr,"Mole_co_etc: Too many reactants in %s, only %d allowed\n",label,MAXREACTANTS);
1416  cdEXIT( EXIT_FAILURE );
1417  }
1418  rate->reactants[rate->nreactants] = sp;
1419  rate->nreactants++;
1420  }
1421  if(rate->nrates >= MAXREACTANTS)
1422  {
1423  fprintf(stderr,"Mole_co_etc: Too many rate species in %s, only %d allowed\n",label,MAXREACTANTS);
1424  cdEXIT( EXIT_FAILURE );
1425  }
1426  rate->rate_species[rate->nrates] = sp;
1427  rate->nrates++;
1428  }
1429  else
1430  {
1431  fixit(); /* Bodge, should really test if active when filling matrix not when defining reaction */
1432  if(sp->active)
1433  {
1434  if(rate->nproducts >= MAXPRODUCTS)
1435  {
1436  fprintf(stderr,"Mole_co_etc: Too many products in %s, only %d allowed\n",label,MAXPRODUCTS);
1437  cdEXIT( EXIT_FAILURE );
1438  }
1439  rate->products[rate->nproducts] = sp;
1440  rate->nproducts++;
1441  }
1442  }
1443  }
1444  else
1445  {
1446  if(0)
1447  fprintf(stderr,"Could not find %s\n",buf);
1448  if(strncmp(buf,"PHOTON",6) == 0) {
1449  if(prod == 0)
1450  rate->photon--;
1451  else
1452  rate->photon++;
1453  }
1454  fixit(); /* Should do something proper about non-network species */
1455  }
1456  if(label[i] == '=')
1457  {
1458  i++;
1459  prod = 1;
1460  }
1461  }
1462  else
1463  {
1464  buf[j] = label[i];
1465  j++;
1466  }
1467  }
1468 
1469  /* >> chng 06 Oct 10 rjrw: use 1/(1/m1+1/m2) for reduced mass to prevent underflow */
1470  if(rate->nrates == 2)
1471  {
1472  rate->reduced_mass = 1./(1./rate->rate_species[0]->mole_mass+1./rate->rate_species[1]->mole_mass);
1473  }
1474  else
1475  {
1476  rate->reduced_mass = 0.;
1477  }
1478 }
1479 
1480 
1481 /*
1482  * Functions to specify chemical rates -- note that the rate->a overall scale
1483  * factor is applied in CO_update_rks
1484  *
1485  */
1486 
1487 #include "phycon.h"
1488 #include "physconst.h"
1489 #include "doppvel.h"
1490 
1491 STATIC double noneq_offset(struct COmole_rate_s *rate);
1492 
1493 STATIC double hmrate(struct COmole_rate_s *rate)
1494 {
1495  double te;
1496 
1497  DEBUG_ENTRY("hmrate()");
1498 
1499  te = phycon.te+noneq_offset(rate);
1500 
1501  return pow(te/300.,rate->b)*exp(-rate->c/te);
1502 }
1503 
1504 /* Add in non-equilibrium chemistry. This is done by assuming
1505  * that turbulence reduces the temperature barrier, thereby
1506  * enhancing reaction rates for molecules such as CH+. The
1507  * "effective temperature is defined according to
1508  * >>refer Federman et al. 1996, MNRAS. L41-46 */
1509 
1510 /* The effective temperature is defined as:
1511  * T(effective) = T + (1/3)*reduced_mass*turbulent_velocity^2/BOLTZMANN_CONSTANT
1512  */
1513 STATIC double noneq_offset(struct COmole_rate_s *rate)
1514 {
1515  /* This logic could be cached by using distinct rate functions in newreact */
1516  int nreact, n;
1517  bool lgFact;
1518 
1519  DEBUG_ENTRY("noneq_offset()");
1520 
1521  lgFact = false;
1522  if(co.lgNonEquilChem)
1523  {
1524  if(co.lgNeutrals)
1525  {
1526  lgFact = true;
1527  }
1528  else
1529  {
1530  nreact = rate->nreactants;
1531  for(n=0;n<nreact;n++)
1532  {
1533  if(rate->reactants[0]->nElec != 0)
1534  {
1535  lgFact = true;
1536  break;
1537  }
1538  }
1539  }
1540  }
1541 
1542  if( lgFact )
1543  return 0.333f*POW2(DoppVel.TurbVel)/BOLTZMANN*rate->reduced_mass;
1544  else
1545  return 0.;
1546 }
1547 STATIC double constrate(struct COmole_rate_s *rate)
1548 {
1549  return 1.;
1550 }
1551  /* hmi.UV_Cont_rel2_Habing_TH85_depth is field relative to Habing background, dimensionless */
1552  /* >>chng 04 apr 01, move from TH85 to DB96, also correct leading coef to use
1553  * UMIST database value */
1554  /* CO_photo_dissoc_rate = 1.67e-10f*hmi.UV_Cont_rel2_Habing_TH85_depth;*/
1555 
1556  /* TRY MOVING PHOTORATES OUT OF LOOP */
1557 
1558  /* >>chng 02 jul 04 -- The following are dissociation rates for various molecular species
1559  For right now we will calculate this rate by the standard form:
1560  (alpha)*Go*exp(-Beta*AV)
1561  when the command "set Leiden hack UMIST rates" is used. Otherwise we
1562  will just let cloudy calculate the value of the UV radiation field */
1563 #include "rfield.h"
1564 STATIC double th85rate(struct COmole_rate_s *rate)
1565 {
1566  double rk;
1567 
1568  DEBUG_ENTRY("th85rate()");
1569 
1570  if(co.lgUMISTrates || rate->b == 0.0)
1571  {
1573  }
1574  else
1575  {
1577  }
1578 
1579  return rk;
1580 }
1581 #include "secondaries.h"
1582  /* >> chng aug 24, 05 NPA This is the cosmic ray ionization rate used in the molecular network.
1583  * TH85 and the e-mail from Amiel Sternberg has each cosmic ray ionization rate as a
1584  * leading coefficient multiplied by a scale factor.
1585  * The leading coefficient is defined as the cosmic ray rate for H + CR = > H+
1586  * + e- . For molecules in the heavy element molecular network, this scale
1587  * factor is derived by taking the rate for:
1588 
1589  X + CRPHOT => Y + Z
1590  and dividing it by the rate:
1591  H + CRP => H+ + e-
1592 
1593  This scale factor is 2.17 for all cosmic ray reactions in this network
1594  crnu_rate = secondaries.csupra[ipHYDROGEN][0];*/
1595 STATIC double crnurate(struct COmole_rate_s *rate)
1596 {
1597  return 2.17*secondaries.csupra[ipHYDROGEN][0];
1598 }
1599 #include "ionbal.h"
1601 {
1602  double val = 0;
1603  int ns, ion;
1604  /* inner shell photoionization of CO, assume rates are same as K 1s and 2s
1605  * shell of C and O */
1606  /* >>chng 04 may 26, upper limit should be ns<2, had been ns<2 so picked up
1607  * valence shell, which was incorrect */
1608 
1609  DEBUG_ENTRY("co_lnu_c_o_lnu()");
1610 
1611  for( ns=0; ns<2; ++ns )
1612  {
1613  ion = 0;
1614  val += ionbal.PhotoRate_Shell[ipCARBON][ion][ns][0];
1615  val += ionbal.PhotoRate_Shell[ipOXYGEN][ion][ns][0];
1616  }
1617 
1618  return val;
1619 }
1620 
1622 {
1623  long int ipElem;
1624 
1625  ipElem = rate->reactants[0]->nelem_hevmol;
1626 
1627  if(rate->reactants[0]->nElec == 1)
1628  return ionbal.RateRecomTot[ipElem][0]+gv.GrainChTrRate[ipElem][1][0];
1629  else
1630  return ionbal.RateIonizTot[ipElem][0]+gv.GrainChTrRate[ipElem][0][1];
1631 }
1632  /******************************** Gas-Grain Chemistry**********************************/
1633 
1634  /* The Gas-Grain Chemistry rates are taken from:
1635  >>refer Hasegawa, T. I. & Herbst, E. 1993, MNRAS, 261, 83
1636 
1637  So far only CO depletion onto grains is considered, however, this code can be generalized
1638  if desired to other molecules, using the data in the above paper. There are three important reactions
1639  to determine the abundance of a molecule on grain surfaces deep in molecular clouds. The
1640  rate of accretion of molecule X onto grains is
1641 
1642  R(accretion) = PI*[grain_radius]^2*[thermal velocity]*[density_of_grains]
1643 
1644  Two processes remove molecule X from the grain surface, and that is thermal evaporation, due
1645  to the heat of the grain, and cosmic ray deabsorption. The first of these rates come from the
1646  above paper, and depends primarily on the dust temperature. The cosmic ray rate is a constant,
1647  calculated in Hasegawa and Herbst.
1648 
1649  For each molecule desired, I have created a new species which is the density of that molecule
1650  on the grain surface */
1651 
1652 
1653  /* evaporation rate of molecule on grain is:
1654 
1655  k(evap) = [vibrational absorption frequency]*exp[-binding_energy/dust_temperature]
1656 
1657  The binding energies come from Hasegawa and Herbst, Table 4. The vibrational frequency comes from
1658  equation 3 of >>refer Hasegawa, T. I., Herbst, E., & Leung, C. M. 1992, ApJSS, 82, 167
1659 
1660  [vibrational absorption frequency] =
1661  SQRT[[2*number_of_sites_for_grain_absorption*binding_energy]/[PI^2*mass_of_molecule]]
1662 
1663  **********************************************************************************************/
1664 
1665 STATIC double vib_evap(struct COmole_rate_s *rate)
1666 {
1667  double binding_energy, exponent, vib_freq, number_of_sites /* on grain */;
1668  int nd;
1669 
1670  DEBUG_ENTRY("vib_evap()");
1671 
1672  exponent = 0.0;
1673 
1674  binding_energy = rate->b;
1675  /*>>chng 06 nov 28 only include source from molecules if we have an estimated first
1676  * solution - first test is that we have called mole at least twice,
1677  * second test is that we are on a later iteration */
1678  if( conv.nTotalIoniz > 1 || iteration > 1 )
1679  {
1680  for( nd=0; nd < gv.nBin; nd++ )
1681  {
1682  exponent += exp(-binding_energy/gv.bin[nd]->tedust);
1683  }
1684  }
1685  number_of_sites = 1.5e15;
1686 
1687  vib_freq = sqrt(2*number_of_sites*binding_energy/(PI*PI*rate->reactants[0]->mole_mass));
1688 
1689  /*>>chng 06 jan 11, NPA - In some H+ regions the grain temperatures are so low
1690  that molecular freeze out occurs. This should not happen, because the ices
1691  should sublimate in such a harsh environment. Therefore, we introduce an
1692  artificial sublimation rate to destroy ices. THIS IS NOT A PHYSICAL RATE!!!!
1693  only a rate that gets the desired, realistic result */
1694  /*>>chng 06 sep 03 rjrw -- include this in standard evaporation rate coeff (the artificial part is the sexp term) */
1696  /* Rate comes from Table curve and assumes that rate is high (~1) in H+
1697  * region and negligible ( < 1e-30) in molecular cloud - designed to stop
1698  * freeze-out above 100 K */
1699 
1700  return vib_freq*exponent+sexp( 555.89/phycon.sqrte - 5.55 );
1701 }
1702 STATIC double grn_abs(struct COmole_rate_s *rate)
1703 {
1704  int nd;
1705  double den_times_area;
1706 
1707  DEBUG_ENTRY("grn_abs()");
1708 
1709  den_times_area = 0.0;
1710 
1711  fixit(); /* Should cache value */
1712  /* calculate the rates that are dependent on grain physics. This includes grain density,
1713  cross sectional area, and dust temperature of each constituent. Note that
1714 
1715  gv.bin[nd]->IntArea/4.*gv.bin[nd]->cnv_H_pCM3
1716 
1717  is the integrated projected grain surface area per cm^3 of gas for each grain size bin */
1718 
1719  /* >>chng 06 feb 28, turn off this rate when no grain molecules */
1720  /* >>chng 06 dec 05 rjrw: do this in newreact rather than rate */
1721  for( nd=0; nd < gv.nBin; nd++ )
1722  {
1723  /* >>chng 06 mar 04, update expression for projected grain surface area, PvH */
1724  den_times_area += gv.bin[nd]->IntArea/4.*gv.bin[nd]->cnv_H_pCM3;
1725  }
1726 
1727  return den_times_area*sqrt(8.*BOLTZMANN*phycon.te/(PI*rate->reactants[0]->mole_mass));
1728 }
1729 
1730 #include "rt.h"
1731 STATIC double th85rate_co(struct COmole_rate_s *rate)
1732 {
1733  double esc_co;
1734  /******************************************************************************************
1735  * First define the rate, which is of the form:
1736  *
1737  * R = (Ro)*(Go*exp(-3.2Av))*Beta(tau(CO))
1738  *
1739  * where:
1740  *
1741  * Ro = 1.67*e-10
1742  * (Go*exp(-3.2Av)) = hmi.UV_Cont_rel2_Habing_TH85_depth
1743  * tauCO = 4.4e-15 * findspecies("CO")->hevcol / (DoppVel.doppler[LIMELM]/1e5) /
1744  * (1. + phycon.sqrte*0.6019);
1745  * tauC = 1.6*e17*N(C)
1746  * Beta(tau(CO)) = esca0k2(esc_co)
1747  ********************************************************************************************/
1748  /* eqn 12 of
1749  * >>refer CO dissoc Hollenbach, D.J., Takahashi, T., & Tielens, A. 1991, ApJ, 377, 192
1750  * based on
1751  * >>refer CO dissoc Black, J.H., & van Dishoeck, E.F. 1988, ApJ, 334, 771 */
1752  esc_co = 4.4e-15 * rate->reactants[0]->hevcol /
1753  /* the line width in km/s */
1754  (DoppVel.doppler[LIMELM]/1e5) /
1755  /* this term accounts for populations within ground elec state */
1756  (1. + phycon.sqrte*0.6019);
1757  return esca0k2(esc_co)*th85rate(rate);
1758 }
1760 {
1761  /* This rate will blow up if the temperature gets too low, therefore
1762  * set this rate for T < 500 equal to the rate at 500 K */
1763  if(phycon.te > 500)
1764  {
1765  return hmrate(rate);
1766  }
1767  else
1768  {
1769  return 6.3E-18;
1770  }
1771 }
1772 STATIC double h_hnc_hcn_h(struct COmole_rate_s *rate)
1773 {
1774  if(phycon.te > 100)
1775  {
1776  return hmrate(rate);
1777  }
1778  else
1779  {
1780  return 1e-15;
1781  }
1782 }

Generated for cloudy by doxygen 1.8.1.1