Changeset 794
- Timestamp:
- 01/22/07 13:41:22 (23 months ago)
- Files:
-
- 1 modified
-
branches/newmole/source/mole_h_step.cpp (modified) (264 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/newmole/source/mole_h_step.cpp
r789 r794 49 49 50 50 #define ABSLIM 1e-12 51 #define NBUF 256 51 52 52 53 typedef struct COmole_reaction_s reaction; … … 58 59 /* reaction index, a number to reference current reaction */ 59 60 int rindex, 60 /* vector of ints that are incoming species, the reactants */ 61 int *in, 62 /* number of reactants */ 63 int nin, 64 /* same for products */ 65 int *out, 66 /* number of products */ 67 int nout, 61 char *in, char *out, 68 62 /* rate determining species if they are not the same as the reactants, 69 63 * these are non-null in cases where a part of the chemical network 70 64 * acts as a catalyst in the reaction 71 65 * as H2g + H2g -> H2g + H2* or where */ 72 int *rate, 73 /* number of these */ 74 int nrate) 66 char *rate) 75 67 { 76 68 static reaction *list = NULL, *r; 77 static int poolsize=1, index = 0; 78 int i; 69 static unsigned int poolsize=1, index = 0; 70 int nin, nout, nrate; 71 char buf[NBUF], *s, *t; 79 72 80 73 /* this routine is called only to initialize structure with information … … 93 86 * when not null then the rate determining species are not the 94 87 * same as *in */ 95 if( rate == NULL || nrate == 0)88 if(*rate == '\0') 96 89 { 97 90 rate=in; 98 nrate=nin;99 91 } 100 92 101 93 /* space for the linked list "list" */ 102 /*lint -e701 shift left of signed quantity */103 94 if(list == NULL || index == poolsize) 104 95 { … … 107 98 index = 0; 108 99 } 109 /*lint +e701 */110 100 111 101 /* fprintf(ioQQQ,"Getting element %d+1 of %d\n",index,poolsize); */ … … 114 104 r->next = NULL; 115 105 r->index = rindex; 106 107 strncpy(buf,in,NBUF); 108 nin = 0; 109 for (s = buf; ; s = NULL) 110 { 111 t = strtok(s,","); 112 if (!t) 113 break; 114 r->reactants[nin++] = findspecies(t); 115 } 116 strncpy(buf,out,NBUF); 117 nout = 0; 118 for (s = buf; ; s = NULL) 119 { 120 t = strtok(s,","); 121 if (!t) 122 break; 123 r->products[nout++] = findspecies(t); 124 } 125 strncpy(buf,rate,NBUF); 126 nrate = 0; 127 for (s = buf; ; s = NULL) 128 { 129 t = strtok(s,","); 130 if (!t) 131 break; 132 r->rate_species[nrate++] = findspecies(t); 133 } 134 116 135 ASSERT(nin <= MAXREACTANTS && nout <= MAXPRODUCTS && nrate <= MAXREACTANTS); 117 118 136 r->nreactants = nin; 119 137 r->nrates = nrate; 120 138 r->nproducts = nout; 121 122 /* incoming reactants */123 for(i=0; i<r->nreactants; i++)124 r->reactants[i] = mole_h_species[in[i]];125 126 /* rate determining species */127 for(i=0; i<r->nrates; i++)128 r->rate_species[i] = mole_h_species[rate[i]];129 130 /* outgoing products */131 for(i=0; i<r->nproducts; i++)132 r->products[i] = mole_h_species[out[i]];133 139 134 140 return r; … … 820 826 if(r == NULL) 821 827 { 822 int in[]={-1},out[]={-1}; 823 r = rlist = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 828 r = rlist = newreaction(rindex,"","",""); 824 829 } 825 830 rindex++; … … 837 842 * there already. 838 843 * 839 * >>>> ONLY CHANGE the elements of the in[] and out[] vectors and840 844 * the rate constant, keep the rest fixed for all reactions 841 845 * */ 842 846 if(r->next == NULL) { 843 int in[]={ipMH},out[]={ipMHm}; 844 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 847 r->next = newreaction(rindex,"H","H-",""); 845 848 } 846 849 r = r->next; … … 872 875 873 876 if(r->next == NULL) { 874 int in[]={ipMHm,ipMHp},out[]={ipMH2p}; 875 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 877 r->next = newreaction(rindex,"H-,H+","H2+",""); 876 878 } 877 879 r = r->next; … … 902 904 hmi.h2phmh2h = 1.4e-7*co.lgUMISTrates*17.305/phycon.sqrte; 903 905 if(r->next == NULL) { 904 int in[]={ipMH2p,ipMHm},out[]={ipMH2g,ipMH}; 905 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 906 r->next = newreaction(rindex,"H2+,H-","H2,H",""); 906 907 } 907 908 r = r->next; … … 919 920 h2phmhhh = 1.4e-7f*17.3205/phycon.sqrte; 920 921 if(r->next == NULL) { 921 int in[]={ipMH2p,ipMHm},out[]={ipMH,ipMH,ipMH}; 922 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 922 r->next = newreaction(rindex,"H2+,H-","H,H,H",""); 923 923 } 924 924 r = r->next; … … 933 933 hphmhhpe = 4.75e-30*pow(phycon.te,3.1); 934 934 if(r->next == NULL) { 935 int in[]={ipMHp,ipMHm},out[]={ipMH,ipMHp}; 936 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 935 r->next = newreaction(rindex,"H+,H-","H,H+",""); 937 936 } 938 937 r = r->next; … … 949 948 h2hmhh2e = 6.74e-17*co.lgUMISTrates*phycon.tesqrd*sexp(19870/phycon.te); 950 949 if(r->next == NULL) { 951 int in[]={ipMH2g,ipMHm},out[]={ipMH,ipMH2g}; 952 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 950 r->next = newreaction(rindex,"H2,H-","H,H2",""); 953 951 } 954 952 r = r->next; … … 960 958 961 959 if(r->next == NULL) { 962 int in[]={ipMHm},out[]={ipMH}; 963 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 960 r->next = newreaction(rindex,"H-","H",""); 964 961 } 965 962 r = r->next; … … 1001 998 1002 999 if(r->next == NULL) { 1003 int in[]={ipMHm},out[]={ipMH}; 1004 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1000 r->next = newreaction(rindex,"H-","H",""); 1005 1001 } 1006 1002 r = r->next; … … 1012 1008 1013 1009 if(r->next == NULL) { 1014 int in[]={ipMHm},out[]={ipMH}; 1015 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1010 r->next = newreaction(rindex,"H-","H",""); 1016 1011 } 1017 1012 r = r->next; … … 1023 1018 1024 1019 if(r->next == NULL) { 1025 int in[]={ipMH},out[]={ipMHm}; 1026 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1020 r->next = newreaction(rindex,"H","H-",""); 1027 1021 } 1028 1022 r = r->next; … … 1051 1045 /* this one is into ground H2 */ 1052 1046 if(r->next == NULL) { 1053 int in[]={ipMH, ipMHm},out[]={ipMH2g}; 1054 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1047 r->next = newreaction(rindex,"H,H-","H2",""); 1055 1048 } 1056 1049 r = r->next; … … 1062 1055 /* this one is into excited H2 */ 1063 1056 if(r->next == NULL) { 1064 int in[]={ipMH, ipMHm},out[]={ipMH2s}; 1065 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1057 r->next = newreaction(rindex,"H,H-","H2*",""); 1066 1058 } 1067 1059 r = r->next; … … 1152 1144 /* >>chng 03 sep 11, resolve H2 and H2*, use fraction determined above */ 1153 1145 if(r->next == NULL) { 1154 int in[]={ipMH2g},out[]={ipMH,ipMHm}; 1155 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1146 r->next = newreaction(rindex,"H2","H,H-",""); 1156 1147 } 1157 1148 r = r->next; … … 1167 1158 /* >>chng 03 sep 11, resolve H2 and H2*, add new destruction process for H2* */ 1168 1159 if(r->next == NULL) { 1169 int in[]={ipMH2s},out[]={ipMH,ipMHm}; 1170 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1160 r->next = newreaction(rindex,"H2*","H,H-",""); 1171 1161 } 1172 1162 r = r->next; … … 1202 1192 1203 1193 if(r->next == NULL) { 1204 int in[]={ipMHm,ipMHp},out[]={ipMH,ipMH}; 1205 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1194 r->next = newreaction(rindex,"H-,H+","H,H",""); 1206 1195 } 1207 1196 r = r->next; … … 1230 1219 1231 1220 if(r->next == NULL) { 1232 int in[]={ipMH,ipMH},out[]={ipMHm,ipMHp}, ratesp[]={ipMH,ipMHp}; 1233 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1221 r->next = newreaction(rindex,"H,H","H-,H+","H,H+"); 1234 1222 } 1235 1223 r = r->next; … … 1265 1253 if(r->next == NULL) { 1266 1254 /* >> chng 05 jul 14, TE, H2s gets destroyed */ 1267 int in[]={ipMH2s},out[]={ipMH,ipMHm}; 1268 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1255 r->next = newreaction(rindex,"H2*","H,H-",""); 1269 1256 } 1270 1257 r = r->next; … … 1294 1281 /* This goes to excited H2 */ 1295 1282 if(r->next == NULL) { 1296 int in[]={ipMH,ipMH},out[]={ipMH2s},ratesp[]={ipMH}; 1297 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1283 r->next = newreaction(rindex,"H,H","H2*","H"); 1298 1284 } 1299 1285 r = r->next; … … 1306 1292 /* This goes to ground H2 */ 1307 1293 if(r->next == NULL) { 1308 int in[]={ipMH,ipMH},out[]={ipMH2g},ratesp[]={ipMH}; 1309 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1294 r->next = newreaction(rindex,"H,H","H2","H"); 1310 1295 } 1311 1296 r = r->next; … … 1324 1309 /* This goes to excited H2 */ 1325 1310 if(r->next == NULL) { 1326 int in[]={ipMH,ipMH},out[]={ipMH2s},ratesp[]={ipMH}; 1327 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1311 r->next = newreaction(rindex,"H,H","H2*","H"); 1328 1312 } 1329 1313 r = r->next; … … 1337 1321 /* This goes to ground H2 */ 1338 1322 if(r->next == NULL) { 1339 int in[]={ipMH,ipMH},out[]={ipMH2g},ratesp[]={ipMH}; 1340 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1323 r->next = newreaction(rindex,"H,H","H2","H"); 1341 1324 } 1342 1325 r = r->next; … … 1362 1345 /* Possible that changing to a rate proportional to ipMHp would be more consistent */ 1363 1346 if(r->next == NULL) { 1364 int in[]={ipMH,ipMH},out[]={ipMH2g},ratesp[]={ipMH,ipMHp}; 1365 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1347 r->next = newreaction(rindex,"H,H","H2","H,H+"); 1366 1348 } 1367 1349 r = r->next; … … 1373 1355 /* >>chng 00 nov 25 factor of 0.1, assume pump is total, and 10% distroy H2 is 21*/ 1374 1356 if(r->next == NULL) { 1375 int in[]={ipMH2g},out[]={ipMH,ipMH}; 1376 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1357 r->next = newreaction(rindex,"H2","H,H",""); 1377 1358 } 1378 1359 r = r->next; … … 1388 1369 /* >>chng 00 nov 25 factor of 0.1, assume pump is total, and 10% distroy H2 */ 1389 1370 if(r->next == NULL) { 1390 int in[]={ipMH2s},out[]={ipMH,ipMH}; 1391 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1371 r->next = newreaction(rindex,"H2*","H,H",""); 1392 1372 } 1393 1373 r = r->next; … … 1408 1388 1409 1389 if(r->next == NULL) { 1410 int in[]={ipMH2g},out[]={ipMH,ipMH}; 1411 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1390 r->next = newreaction(rindex,"H2","H,H",""); 1412 1391 } 1413 1392 r = r->next; … … 1428 1407 1429 1408 if(r->next == NULL) { 1430 int in[]={ipMH2g,ipMHp},out[]={ipMH3p}; 1431 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1409 r->next = newreaction(rindex,"H2,H+","H3+",""); 1432 1410 } 1433 1411 r = r->next; … … 1442 1420 /* Rate is catalyzed by an additional H */ 1443 1421 if(r->next == NULL) { 1444 int in[]={ipMH2g},out[]={ipMH,ipMH},ratesp[]={ipMH,ipMH2g}; 1445 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1422 r->next = newreaction(rindex,"H2","H,H","H,H2"); 1446 1423 } 1447 1424 r = r->next; … … 1459 1436 1460 1437 if(r->next == NULL) { 1461 int in[]={ipMH,ipMH,ipMH2g},out[]={ipMH2g,ipMH2g}; 1462 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1438 r->next = newreaction(rindex,"H,H,H2","H2,H2",""); 1463 1439 } 1464 1440 r = r->next; … … 1482 1458 1483 1459 if(r->next == NULL) { 1484 int in[]={ipMH2g,ipMH2g},out[]={ipMH,ipMH,ipMH2g}; 1485 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1460 r->next = newreaction(rindex,"H2,H2","H,H,H2",""); 1486 1461 } 1487 1462 r = r->next; … … 1500 1475 1501 1476 if(r->next == NULL) { 1502 int in[]={ipMH,ipMH},out[]={ipMH2g},ratesp[]={ipMH,ipMH,ipMH}; 1503 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),ratesp,NELEMS(ratesp)); 1477 r->next = newreaction(rindex,"H,H","H2","H,H,H"); 1504 1478 } 1505 1479 r = r->next; … … 1567 1541 * so H2 secondary ionzation rate is 5e-17 s-1 */ 1568 1542 if(r->next == NULL) { 1569 int in[]={ipMH2g},out[]={ipMH2p}; 1570 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1543 r->next = newreaction(rindex,"H2","H2+",""); 1571 1544 } 1572 1545 r = r->next; … … 1592 1565 /* >>chng 04 apr 22, add H2 + cr -> H+ H + e, TH85 table 10 */ 1593 1566 if(r->next == NULL) { 1594 int in[]={ipMH2g},out[]={ipMH,ipMHp}; 1595 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1567 r->next = newreaction(rindex,"H2","H,H+",""); 1596 1568 } 1597 1569 r = r->next; … … 1619 1591 /* H2s + CR -> H+ H + e, TH85 table 10 */ 1620 1592 if(r->next == NULL) { 1621 int in[]={ipMH2s},out[]={ipMH,ipMHp}; 1622 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1593 r->next = newreaction(rindex,"H2*","H,H+",""); 1623 1594 } 1624 1595 r = r->next; … … 1641 1612 * Cosmic ray ionization of H2s added*/ 1642 1613 if(r->next == NULL) { 1643 int in[]={ipMH2s},out[]={ipMH2p}; 1644 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1614 r->next = newreaction(rindex,"H2*","H2+",""); 1645 1615 } 1646 1616 r = r->next; … … 1666 1636 * h2crphh = 1.3e-18f */ 1667 1637 if(r->next == NULL) { 1668 int in[]={ipMH2g},out[]={ipMH,ipMH}; 1669 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1638 r->next = newreaction(rindex,"H2","H,H",""); 1670 1639 } 1671 1640 r = r->next; … … 1703 1672 1704 1673 if(r->next == NULL) { 1705 int in[]={ipMH2s},out[]={ipMH,ipMH}; 1706 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1674 r->next = newreaction(rindex,"H2*","H,H",""); 1707 1675 } 1708 1676 r = r->next; … … 1719 1687 1720 1688 if(r->next == NULL) { 1721 int in[]={ipMH2g},out[]={ipMHp,ipMHm}; 1722 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1689 r->next = newreaction(rindex,"H2","H+,H-",""); 1723 1690 } 1724 1691 r = r->next; … … 1732 1699 1733 1700 if(r->next == NULL) { 1734 int in[]={ipMH2s},out[]={ipMHp,ipMHm}; 1735 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1701 r->next = newreaction(rindex,"H2*","H+,H-",""); 1736 1702 } 1737 1703 r = r->next; … … 1750 1716 1751 1717 if(r->next == NULL) { 1752 int in[]={ipMH2g},out[]={ipMHp,ipMH}; 1753 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1718 r->next = newreaction(rindex,"H2","H+,H",""); 1754 1719 } 1755 1720 r = r->next; … … 1762 1727 1763 1728 if(r->next == NULL) { 1764 int in[]={ipMH2s},out[]={ipMHp,ipMH}; 1765 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1729 r->next = newreaction(rindex,"H2*","H+,H",""); 1766 1730 } 1767 1731 r = r->next; … … 1783 1747 hmi.h3phm2h2 = 1.3e-7 / (phycon.sqrte/31.62278) * co.lgUMISTrates;/*pow(phycon.te/1000., -0.5);*/ 1784 1748 if(r->next == NULL) { 1785 int in[]={ipMH3p,ipMHm},out[]={ipMH2g,ipMH2g}; 1786 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1749 r->next = newreaction(rindex,"H3+,H-","H2,H2",""); 1787 1750 } 1788 1751 r = r->next; … … 1816 1779 1817 1780 if(r->next == NULL) { 1818 int in[]={ipMH3p},out[]={ipMH2p,ipMH}; 1819 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1781 r->next = newreaction(rindex,"H3+","H2+,H",""); 1820 1782 } 1821 1783 r = r->next; … … 1849 1811 1850 1812 if(r->next == NULL) { 1851 int in[]={ipMH3p},out[]={ipMH2g,ipMHp}; 1852 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1813 r->next = newreaction(rindex,"H3+","H2,H+",""); 1853 1814 } 1854 1815 r = r->next; … … 1866 1827 * bh2h2p and rh2h2p are not in detailed balance,astro-ph/0404288*/ 1867 1828 if(r->next == NULL) { 1868 int in[]={ipMH2g,ipMHp},out[]={ipMH,ipMH2p}; 1869 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1829 r->next = newreaction(rindex,"H2,H+","H,H2+",""); 1870 1830 } 1871 1831 r = r->next; … … 1882 1842 /* >> chng 05 jul 13, TE, 1883 1843 * this process populates v=4,no J information assume into J=0 -> H2s not H2g */ 1884 int in[]={ipMH,ipMH2p},out[]={ipMHp,ipMH2s}; 1885 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1844 r->next = newreaction(rindex,"H,H2+","H+,H2*",""); 1886 1845 } 1887 1846 r = r->next; … … 1903 1862 1904 1863 if(r->next == NULL) { 1905 int in[]={ipMH,ipMH3p},out[]={ipMH2g,ipMH2p}; 1906 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1864 r->next = newreaction(rindex,"H,H3+","H2,H2+",""); 1907 1865 } 1908 1866 r = r->next; … … 1921 1879 hmi.h3phmh2hh = 2.3e-7f*pow(phycon.te/300 , -0.5)*co.lgUMISTrates; 1922 1880 if(r->next == NULL) { 1923 int in[]={ipMH3p,ipMHm},out[]={ipMH2g,ipMH,ipMH}; 1924 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1881 r->next = newreaction(rindex,"H3+,H-","H2,H,H",""); 1925 1882 } 1926 1883 r = r->next; … … 1935 1892 1936 1893 if(r->next == NULL) { 1937 int in[]={ipMH2g,ipMH3p},out[]={ipMH2g,ipMH2p,ipMH}; 1938 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1894 r->next = newreaction(rindex,"H2,H3+","H2,H2+,H",""); 1939 1895 } 1940 1896 r = r->next; … … 1949 1905 1950 1906 if(r->next == NULL) { 1951 int in[]={ipMH2g,ipMH3p},out[]={ipMHp,ipMH2g,ipMH2g}; 1952 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1907 r->next = newreaction(rindex,"H2,H3+","H+,H2,H2",""); 1953 1908 } 1954 1909 r = r->next; … … 1985 1940 1986 1941 if(r->next == NULL) { 1987 int in[]={ipMH3p},out[]={ipMH,ipMH2g}; 1988 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1942 r->next = newreaction(rindex,"H3+","H,H2",""); 1989 1943 } 1990 1944 r = r->next; … … 2010 1964 2011 1965 if(r->next == NULL) { 2012 int in[]={ipMH3p},out[]={ipMH,ipMH,ipMH}; 2013 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 1966 r->next = newreaction(rindex,"H3+","H,H,H",""); 2014 1967 } 2015 1968 r = r->next; … … 2067 2020 2068 2021 if( r->next == NULL) { 2069 int in[]={ipMH,ipMHp},out[]={ipMH2p}; 2070 r->next = newreaction(rindex,in,NELEMS(in),out,NELEMS(out),NULL,0); 2022 r->next = newreaction(rindex,"H,H+","H2+",""); 2071 2023 } 2072 2024 r = r->next; … … 2085 2037 2086 2038 if(r->next == NULL) { 2087 int in[]={ipMH2p},out[]={ipMH,ipMHp},ratesp[]={ipMHp,ipMH2p}; 2088 r->next = newreaction(rindex,in,NELEMS(in),out
