49 double a, b, c, a_op, b_op, c_op, d_op, e_op, f_op, a_o,
50 b_o, c_o, d_o, e_o, f_o, g_o;
52 static double TeUsed = -1.;
63 for( ion=0; ion <= nelem; ion++ )
84 for( ion=0; ion <
LIMELM; ion++ )
125 a_op = 2.3344302e-10;
126 b_op = 2.3651505e-10;
127 c_op = -1.3146803e-10;
128 d_op = 2.9979994e-11;
129 e_op = -2.8577012e-12;
130 f_op = 1.1963502e-13;
164 a_o = -7.6767404e-14;
165 b_o = -3.7282001e-13;
167 d_o = -3.6606214e-12;
169 f_o = -2.6139493e-13;
345 0.6340e-9*pow( log10(
phycon.
te/1500.) ,2.06 );
360 1.4589e-9*pow( log10(
phycon.
te/20000.) ,2.06 );
550 for( nelem=0; nelem<
LIMELM; ++nelem )
552 for( ion=0; ion<
LIMELM; ++ion )
592 int limit =
MIN2(4, nelem);
594 for( ion=0; ion < limit; ion++ )
614 for( ion=4; ion < nelem; ion++ )
639 enum {DEBUG_LOC=
false};
649 int limit =
MIN2(4, nelem);
651 for( ion=0; ion < limit; ion++ )
663 fprintf(
ioQQQ,
"DEBUG ct %li %li %.3f\n", nelem, ion,
673 for( ion=4; ion < nelem; ion++ )
678 fprintf(
ioQQQ,
"DEBUG ct %li %li %.3f\n", nelem, ion,
687 return( SumCTHeat_v );
710 fprintf(
ioQQQ,
" HCTIon doing 1-time init of charge transfer data\n");
780 fprintf(
ioQQQ,
" HCTIon doing 1-time init of charge transfer data\n");
797 return( HCTRecom_v );
801 ASSERT( ion >= 0 && ion <= nelem );
813 return( HCTRecom_v );
822 return( HCTRecom_v );
864 for( nelem=0; nelem<
LIMELM; ++nelem )
882 {
static double _itmp0[] = {2.84e-3 , 1.99 , 375.54 , -54.07 , 1
e2 , 1e4 , 0.,
885 for( i=1, _r = 0; i <= 8; i++ )
892 {
static double _itmp1[] = {1.07e-6 , 3.15 , 176.43 , -4.29 , 1e3 , 1e5 , 0. ,2.34};
893 for( i=1, _r = 0; i <= 8; i++ )
898 {
static double _itmp2[] = {4.55e-3,-0.29,-0.92,-8.38,1
e2,5e4,
900 for( i=1, _r = 0; i <= 8; i++ )
906 {
static double _itmp3[] = {7.40e-2,0.47,24.37,-0.74,1e1,1e4,
908 for( i=1, _r = 0; i <= 8; i++ )
913 {
static double _itmp4[] = {3.34e-6,9.31,2632.31,-3.04,1e3,
915 for( i=1, _r = 0; i <= 8; i++ )
920 {
static double _itmp5[] = {9.76e-3,3.14,55.54,-1.12,5e3,3e4,
922 for( i=1, _r = 0; i <= 8; i++ )
927 {
static double _itmp6[] = {7.60e-5,0.00,-1.97,-4.32,1e4,3e5,
929 for( i=1, _r = 0; i <= 8; i++ )
934 {
static double _itmp7[] = {0.92,1.15,0.80,-0.24,1e3,2e5,0.0,
936 for( i=1, _r = 0; i <= 8; i++ )
942 {
static double _itmp8[] = {2.26 , 7.36e-2 , -0.43 , -0.11 , 2e3 , 1e5 , 3.031
944 for( i=1, _r = 0; i <= 8; i++ )
949 {
static double _itmp9[] = {1.00e-5,0.00,0.00,0.00,1e3,1e4,
951 for( i=1, _r = 0; i <= 8; i++ )
956 {
static double _itmp10[] = {4.39,0.61,-0.89,-3.56,1e3,3e4,
958 for( i=1, _r = 0; i <= 8; i++ )
963 {
static double _itmp11[] = {2.83e-1,6.80e-3,6.44e-2,-9.70,
964 1e3,3e4,2.368,-2.04};
965 for( i=1, _r = 0; i <= 8; i++ )
970 {
static double _itmp12[] = {2.10,7.72e-2,-0.41,-7.31,1e4,1e5,
972 for( i=1, _r = 0; i <= 8; i++ )
977 {
static double _itmp13[] = {1.20e-2,3.49,24.41,-1.26,1e3,3e4,
979 for( i=1, _r = 0; i <= 8; i++ )
994 {
static double _itmp14[] = {1.87e-6,2.06,9.93,-3.89,6e3,1e5,
996 for( i=1, _r = 0; i <= 7; i++ )
1001 {
static double _itmp15[] = {1.00e-5,0.,0.,0.,1e3,1e7,-40.81};
1002 for( i=1, _r = 0; i <= 7; i++ )
1007 for( i=1; i <= 7; i++ )
1011 {
static double _itmp16[] = {1.26,0.96,3.02,-0.65,1e3,3e4,3.02};
1012 for( i=1, _r = 0; i <= 7; i++ )
1017 {
static double _itmp17[] = {1.00e-5,0.,0.,0.,2e3,5e4,-108.83};
1018 for( i=1, _r = 0; i <= 7; i++ )
1023 for( i=1; i <= 7; i++ )
1027 {
static double _itmp18[] = {1.00e-5,0.,0.,0.,2e3,5e4,-4.61};
1028 for( i=1, _r = 0; i <= 7; i++ )
1033 {
static double _itmp19[] = {1.00e-5,0.,0.,0.,2e3,5e4,-140.26};
1034 for( i=1, _r = 0; i <= 7; i++ )
1039 {
static double _itmp20[] = {5.17,0.82,-0.69,-1.12,2e3,5e4,
1041 for( i=1, _r = 0; i <= 7; i++ )
1046 for( i=1; i <= 7; i++ )
1050 {
static double _itmp21[] = {2.00e-2,0.,0.,0.,1e3,1e9,2.46};
1051 for( i=1, _r = 0; i <= 7; i++ )
1056 {
static double _itmp22[] = {1.00e-5,0.,0.,0.,2e3,5e4,-24.33};
1057 for( i=1, _r = 0; i <= 7; i++ )
1063 {
static double _itmp23[] = {2.74 , 0.93 , -0.61 , -1.13 , 2e3 , 5e4 ,
1065 for( i=1, _r = 0; i <= 7; i++ )
1071 {
static double _itmp24[] = {4.88e-7 , 3.25 , -1.12 , -0.21 , 5.5e3 , 1e5 ,
1073 for( i=1, _r = 0; i <= 7; i++ )
1078 {
static double _itmp25[] = {1.67e-4,2.79,304.72,-4.07,5e3,
1080 for( i=1, _r = 0; i <= 7; i++ )
1085 {
static double _itmp26[] = {3.25,0.21,0.19,-3.29,1e3,1e5,5.73};
1086 for( i=1, _r = 0; i <= 7; i++ )
1091 {
static double _itmp27[] = {332.46,-0.11,-9.95e-1,-1.58e-3,
1093 for( i=1, _r = 0; i <= 7; i++ )
1098 {
static double _itmp28[] = {1.01e-3,-0.29,-0.92,-8.38,1
e2,
1100 for( i=1, _r = 0; i <= 7; i++ )
1105 {
static double _itmp29[] = {3.05e-1,0.60,2.65,-0.93,1e3,1e5,
1107 for( i=1, _r = 0; i <= 7; i++ )
1112 {
static double _itmp30[] = {4.54,0.57,-0.65,-0.89,1e1,1e5,
1114 for( i=1, _r = 0; i <= 7; i++ )
1120 {
static double _itmp31[] = { 2.95 , 0.55 , -0.39 , -1.07 , 1e3 , 1e6 ,
1122 for( i=1, _r = 0; i <= 7; i++ )
1127 {
static double _itmp32[] = {1.04,3.15e-2,-0.61,-9.73,1e1,1e4,
1129 for( i=1, _r = 0; i <= 7; i++ )
1134 {
static double _itmp33[] = {1.04,0.27,2.02,-5.92,1
e2,1e5,6.65};
1135 for( i=1, _r = 0; i <= 7; i++ )
1140 {
static double _itmp34[] = {3.98,0.26,0.56,-2.62,1e3,5e4,5.};
1141 for( i=1, _r = 0; i <= 7; i++ )
1146 {
static double _itmp35[] = {2.52e-1,0.63,2.08,-4.16,1e3,3e4,
1148 for( i=1, _r = 0; i <= 7; i++ )
1153 for( i=1; i <= 7; i++ )
1157 {
static double _itmp36[] = {1.00e-5,0.,0.,0.,2e3,5e4,-21.37};
1158 for( i=1, _r = 0; i <= 7; i++ )
1163 {
static double _itmp37[] = {9.86,0.29,-0.21,-1.15,2e3,5e4,
1165 for( i=1, _r = 0; i <= 7; i++ )
1170 {
static double _itmp38[] = {7.15e-1,1.21,-0.70,-0.85,2e3,5e4,
1172 for( i=1, _r = 0; i <= 7; i++ )
1177 for( i=1; i <= 7; i++ )
1181 {
static double _itmp39[] = {1.00e-5,0.,0.,0.,5e3,5e4,-27.36};
1182 for( i=1, _r = 0; i <= 7; i++ )
1187 {
static double _itmp40[] = {14.73,4.52e-2,-0.84,-0.31,5e3,
1189 for( i=1, _r = 0; i <= 7; i++ )
1194 {
static double _itmp41[] = {6.47,0.54,3.59,-5.22,1e3,3e4,8.60};
1195 for( i=1, _r = 0; i <= 7; i++ )
1200 for( i=1; i <= 7; i++ )
1204 {
static double _itmp42[] = {1.00e-5,0.,0.,0.,2e3,5e4,-33.68};
1205 for( i=1, _r = 0; i <= 7; i++ )
1210 {
static double _itmp43[] = {1.33,1.15,1.20,-0.32,2e3,5e4,6.25};
1211 for( i=1, _r = 0; i <= 7; i++ )
1216 {
static double _itmp44[] = {1.01e-1,1.34,10.05,-6.41,2e3,5e4,
1218 for( i=1, _r = 0; i <= 7; i++ )
1223 for( i=1; i <= 7; i++ )
1227 {
static double _itmp45[] = {8.58e-5,2.49e-3,2.93e-2,-4.33,
1229 for( i=1, _r = 0; i <= 7; i++ )
1234 {
static double _itmp46[] = {6.49,0.53,2.82,-7.63,1e3,3e4,5.73};
1235 for( i=1, _r = 0; i <= 7; i++ )
1240 {
static double _itmp47[] = {6.36,0.55,3.86,-5.19,1e3,3e4,8.60};
1241 for( i=1, _r = 0; i <= 7; i++ )
1246 for( i=1; i <= 7; i++ )
1250 {
static double _itmp48[] = {1.00e-5,0.,0.,0.,1e3,3e4,-5.23};
1251 for( i=1, _r = 0; i <= 7; i++ )
1256 {
static double _itmp49[] = {7.11e-5,4.12,1.72e4,-22.24,1e3,
1258 for( i=1, _r = 0; i <= 7; i++ )
1263 {
static double _itmp50[] = {7.52e-1,0.77,6.24,-5.67,1e3,3e4,
1265 for( i=1, _r = 0; i <= 7; i++ )
1270 for( i=1; i <= 7; i++ )
1275 {
static double _itmp51[] = {6.77 , 7.36e-2 , -0.43 , -0.11 , 5
e2 , 1e5 ,
1277 for( i=1, _r = 0; i <= 7; i++ )
1282 {
static double _itmp52[] = {4.90e-1,-8.74e-2,-0.36,-0.79,1e3,
1284 for( i=1, _r = 0; i <= 7; i++ )
1289 {
static double _itmp53[] = {7.58,0.37,1.06,-4.09,1e3,5e4,7.49};
1290 for( i=1, _r = 0; i <= 7; i++ )
1295 for( i=1; i <= 7; i++ )
1299 {
static double _itmp54[] = {1.74e-4,3.84,36.06,-0.97,1e3,3e4,
1301 for( i=1, _r = 0; i <= 7; i++ )
1306 {
static double _itmp55[] = {9.46e-2,-5.58e-2,0.77,-6.43,1e3,
1308 for( i=1, _r = 0; i <= 7; i++ )
1313 {
static double _itmp56[] = {5.37,0.47,2.21,-8.52,1e3,3e4,9.71};
1314 for( i=1, _r = 0; i <= 7; i++ )
1319 {
static double _itmp57[] = {3.82e-7,11.10,2.57e4,-8.22,1e3,
1321 for( i=1, _r = 0; i <= 7; i++ )
1326 {
static double _itmp58[] = {1.00e-5,0.,0.,0.,1e3,3e4,-9.73};
1327 for( i=1, _r = 0; i <= 7; i++ )
1332 {
static double _itmp59[] = {2.29,4.02e-2,1.59,-6.06,1e3,3e4,
1334 for( i=1, _r = 0; i <= 7; i++ )
1339 {
static double _itmp60[] = {6.44,0.13,2.69,-5.69,1e3,3e4,8.60};
1340 for( i=1, _r = 0; i <= 7; i++ )
1345 for( i=1; i <= 7; i++ )
1349 {
static double _itmp61[] = {1.00e-5,0.,0.,0.,1e3,3e4,-10.21};
1350 for( i=1, _r = 0; i <= 7; i++ )
1355 {
static double _itmp62[] = {1.88,0.32,1.77,-5.70,1e3,3e4,8.};
1356 for( i=1, _r = 0; i <= 7; i++ )
1361 {
static double _itmp63[] = {7.27,0.29,1.04,-10.14,1e3,3e4,
1363 for( i=1, _r = 0; i <= 7; i++ )
1368 for( i=1; i <= 7; i++ )
1372 {
static double _itmp64[] = {1.00e-5,0.,0.,0.,1e3,3e4,-14.03};
1373 for( i=1, _r = 0; i <= 7; i++ )
1378 {
static double _itmp65[] = {4.57,0.27,-0.18,-1.57,1e3,3e4,
1380 for( i=1, _r = 0; i <= 7; i++ )
1385 {
static double _itmp66[] = {6.37,0.85,10.21,-6.22,1e3,3e4,
1387 for( i=1, _r = 0; i <= 7; i++ )
1392 for( i=1; i <= 7; i++ )
1396 {
static double _itmp67[] = {1.00e-5,0.,0.,0.,1e3,3e4,-18.02};
1397 for( i=1, _r = 0; i <= 7; i++ )
1402 {
static double _itmp68[] = {4.76,0.44,-0.56,-0.88,1e3,3e4,
1404 for( i=1, _r = 0; i <= 7; i++ )
1409 {
static double _itmp69[] = {1.00e-5,0.,0.,0.,1e3,3e4,-47.3};
1410 for( i=1, _r = 0; i <= 7; i++ )
1415 for( i=1; i <= 7; i++ )
1419 {
static double _itmp70[] = {0.,0.,0.,0.,1e1,1e9,0.};
1420 for( i=1, _r = 0; i <= 7; i++ )
1425 {
static double _itmp71[] = {3.17e-2,2.12,12.06,-0.40,1e3,3e4,
1427 for( i=1, _r = 0; i <= 7; i++ )
1432 {
static double _itmp72[] = {2.68,0.69,-0.68,-4.47,1e3,3e4,
1434 for( i=1, _r = 0; i <= 7; i++ )
1439 for( i=1; i <= 7; i++ )
1443 {
static double _itmp73[] = {0.,0.,0.,0.,1e1,1e9,0.};
1444 for( i=1, _r = 0; i <= 7; i++ )
1449 {
static double _itmp74[] = {7.22e-3,2.34,411.50,-13.24,1e3,
1451 for( i=1, _r = 0; i <= 7; i++ )
1456 {
static double _itmp75[] = {1.20e-1,1.48,4.00,-9.33,1e3,3e4,
1458 for( i=1, _r = 0; i <= 7; i++ )
1463 for( i=1; i <= 7; i++ )
1467 {
static double _itmp76[] = {0.,0.,0.,0.,1e1,1e9,0.};
1468 for( i=1, _r = 0; i <= 7; i++ )
1473 {
static double _itmp77[] = {6.34e-1,6.87e-3,0.18,-8.04,1e3,
1475 for( i=1, _r = 0; i <= 7; i++ )
1480 {
static double _itmp78[] = {4.37e-3,1.25,40.02,-8.05,1e3,3e4,
1482 for( i=1, _r = 0; i <= 7; i++ )
1487 for( i=1; i <= 7; i++ )
1491 {
static double _itmp79[] = {1.00e-5,0.,0.,0.,1e3,3e4,-1.05};
1492 for( i=1, _r = 0; i <= 7; i++ )
1497 {
static double _itmp80[] = {5.12,-2.18e-2,-0.24,-0.83,1e3,
1499 for( i=1, _r = 0; i <= 7; i++ )
1504 {
static double _itmp81[] = {1.96e-1,-8.53e-3,0.28,-6.46,1e3,
1506 for( i=1, _r = 0; i <= 7; i++ )
1511 for( i=1; i <= 7; i++ )
1515 {
static double _itmp82[] = {5.27e-1,0.61,-0.89,-3.56,1e3,3e4,
1517 for( i=1, _r = 0; i <= 7; i++ )
1522 {
static double _itmp83[] = {10.90,0.24,0.26,-11.94,1e3,3e4,
1524 for( i=1, _r = 0; i <= 7; i++ )
1529 {
static double _itmp84[] = {1.18,0.20,0.77,-7.09,1e3,3e4,6.6};
1530 for( i=1, _r = 0; i <= 7; i++ )
1535 for( i=1; i <= 7; i++ )
1539 {
static double _itmp85[] = {1.65e-1,6.80e-3,6.44e-2,-9.70,
1541 for( i=1, _r = 0; i <= 7; i++ )
1546 {
static double _itmp86[] = {14.20,0.34,-0.41,-1.19,1e3,3e4,
1548 for( i=1, _r = 0; i <= 7; i++ )
1553 {
static double _itmp87[] = {4.43e-1,0.91,10.76,-7.49,1e3,3e4,
1555 for( i=1, _r = 0; i <= 7; i++ )
1560 for( i=1; i <= 7; i++ )
1564 {
static double _itmp88[] = {1.26,7.72e-2,-0.41,-7.31,1e3,1e5,
1566 for( i=1, _r = 0; i <= 7; i++ )
1571 {
static double _itmp89[] = {3.42,0.51,-2.06,-8.99,1e3,1e5,
1573 for( i=1, _r = 0; i <= 7; i++ )
1578 {
static double _itmp90[] = {14.60,3.57e-2,-0.92,-0.37,1e3,
1580 for( i=1, _r = 0; i <= 7; i++ )
1585 for( i=1; i <= 7; i++ )
1589 {
static double _itmp91[] = {5.30,0.24,-0.91,-0.47,1e3,3e4,
1591 for( i=1, _r = 0; i <= 7; i++ )
1596 {
static double _itmp92[] = {3.26,0.87,2.85,-9.23,1e3,3e4,6.};
1597 for( i=1, _r = 0; i <= 7; i++ )
1602 {
static double _itmp93[] = {1.03,0.58,-0.89,-0.66,1e3,3e4,
1604 for( i=1, _r = 0; i <= 7; i++ )
1609 for( i=1; i <= 7; i++ )
1613 {
static double _itmp94[] = {1.05,1.28,6.54,-1.81,1e3,1e5,3.0};
1614 for( i=1, _r = 0; i <= 7; i++ )
1619 {
static double _itmp95[] = {9.73,0.35,0.90,-5.33,1e3,3e4,5.2};
1620 for( i=1, _r = 0; i <= 7; i++ )
1625 {
static double _itmp96[] = {6.14,0.25,-0.91,-0.42,1e3,3e4,
1627 for( i=1, _r = 0; i <= 7; i++ )
1632 for( i=1; i <= 7; i++ )
1636 {
static double _itmp97[] = {1.47e-3,3.51,23.91,-0.93,1e3,3e4,
1638 for( i=1, _r = 0; i <= 7; i++ )
1643 {
static double _itmp98[] = {9.26,0.37,0.40,-10.73,1e3,3e4,
1645 for( i=1, _r = 0; i <= 7; i++ )
1650 {
static double _itmp99[] = {11.59,0.20,0.80,-6.62,1e3,3e4,
1652 for( i=1, _r = 0; i <= 7; i++ )
1657 for( i=1; i <= 7; i++ )
1661 {
static double _itmp100[] = {1.00e-5,0.,0.,0.,1e3,3e4,-4.37};
1662 for( i=1, _r = 0; i <= 7; i++ )
1667 {
static double _itmp101[] = {6.96e-4,4.24,26.06,-1.24,1e3,
1669 for( i=1, _r = 0; i <= 7; i++ )
1674 {
static double _itmp102[] = {1.33e-2,1.56,-0.92,-1.20,1e3,
1676 for( i=1, _r = 0; i <= 7; i++ )
1693 if( strcmp( chPunch,
"CHAR") == 0 )
1702 fprintf( ipPnunit,
"#element\tion\n");
1703 for( j=1; j <
LIMELM; j++ )
1710 for( jj=0; jj < j; jj++ )
1712 fprintf( ipPnunit,
"%.2e\t",
1715 fprintf( ipPnunit,
"\n" );
1720 fprintf( ipPnunit,
"\n#ionization rates, atomic number\n");
1721 for( j=1; j <
LIMELM; j++ )
1724 for( jj=0; jj < j; jj++ )
1726 fprintf( ipPnunit,
"%.2e\t",
1729 fprintf( ipPnunit,
"\n" );
1735 else if( strcmp( chPunch,
"CHAG") == 0 )
1738 double BreakEnergy = 100./13.0;
1743 long int nelem, ion;
1746 fprintf(ipPnunit,
"H ioniz\n X+i\\Te");
1747 while( te1 <= tefinal )
1749 fprintf(ipPnunit,
"\t%.0f K",te1);
1752 fprintf(ipPnunit,
"\n");
1763 for( ion=0; ion<=nelem; ++ion )
1773 fprintf(ipPnunit,
"%s",
1778 fprintf(ipPnunit,
"0 ");
1782 fprintf(ipPnunit,
"+ ");
1786 fprintf(ipPnunit,
"+%li",ion);
1801 fprintf(ipPnunit,
"\n");
1803 fprintf(ipPnunit,
"\n");
1808 fprintf(ipPnunit,
"H recom\n X+i\\Te");
1809 while( te1 <= tefinal )
1811 fprintf(ipPnunit,
"\t%.0f K",te1);
1814 fprintf(ipPnunit,
"\n");
1822 for( ion=0; ion<=nelem; ++ion )
1832 fprintf(ipPnunit,
"%s",
1837 fprintf(ipPnunit,
"0 ");
1841 fprintf(ipPnunit,
"+ ");
1845 fprintf(ipPnunit,
"+%li",ion);
1859 fprintf(ipPnunit,
"\n");
1861 fprintf(ipPnunit,
"\n");
1867 fprintf(ipPnunit,
"He recom\n Elem\\Te");
1868 while( te1 <= tefinal )
1870 fprintf(ipPnunit,
"\t%.0f",te1);
1873 fprintf(ipPnunit,
"\n");
1881 for( ion=0; ion<=nelem; ++ion )
1886 fprintf(ipPnunit,
"%.2s%.2s",
1901 fprintf(ipPnunit,
"\n");
1903 fprintf(ipPnunit,
"\n");
1909 fprintf(ipPnunit,
"He ioniz\n Elem\\Te");
1910 while( te1 <= tefinal )
1912 fprintf(ipPnunit,
"\t%.0f",te1);
1915 fprintf(ipPnunit,
"\n");
1923 for( ion=0; ion<=nelem; ++ion )
1928 fprintf(ipPnunit,
"%.2s%.2s",
1943 fprintf(ipPnunit,
"\n");
1945 fprintf(ipPnunit,
"\n");
1952 fprintf(
ioQQQ,
" punch charge keyword insane\n" );