53 #define INTSZ(a) (sizeof(a)/sizeof(int))
87 static int poolsize=1,
index = 0;
113 if(list == NULL ||
index == poolsize)
133 for(i=0; i<r->nreactants; i++)
134 r->reactants[i] = in[i];
137 for(i=0; i<r->
nrates; i++)
138 r->rate_species[i] = rate[i];
141 for(i=0; i<r->nproducts; i++)
142 r->products[i] = out[i];
148 #if defined (__ICC) && defined(__amd64)
149 #pragma optimization_level 1
155 enum {PRINTSOL =
false};
166 int printsol = PRINTSOL;
171 double frac_H2star_grains,
173 double sum_first_ions;
242 static double oatomic = -1., oion = -1.;
246 static bool lgMustMalloc =
true;
250 long int rindex, ratei, ratej;
257 lgMustMalloc =
false;
268 c[i] = ((
double*)
MALLOC( (
size_t)N_H_MOLEC*
sizeof(double) ));
359 for( nd=0; nd <
gv.
nBin; nd++ )
400 # ifndef IGNORE_QUANTUM_HEATING
413 for( nd=0; nd <
gv.
nBin; nd++ )
415 # ifndef IGNORE_QUANTUM_HEATING
417 double *qtemp, *qprob;
430 # ifndef IGNORE_QUANTUM_HEATING
434 qtemp = (
double*)
MALLOC((
size_t)(
NQGRID*
sizeof(double)));
435 qprob = (
double*)
MALLOC((
size_t)(
NQGRID*
sizeof(double)));
437 qheat(qtemp,qprob,&qnbin,nd);
452 for( k=0; k < qnbin; k++ )
462 double conversion_efficiency_HM79 = 1/(1. + 1e4*
sexp(920./qtemp[k]));
463 sticking_probability_H = 1./(1. + 0.04*sqrt(qtemp[k]+
phycon.
te) +
467 conversion_efficiency_HM79;
489 double conversion_efficiency_HM79 = 1/(1. + 1e4*
sexp(920./
gv.
bin[nd]->
tedust));
496 gv.
bin[nd]->
cnv_H_pCM3 * sticking_probability_H * conversion_efficiency_HM79;
500 # ifndef IGNORE_QUANTUM_HEATING
509 double sqrt_term = 35.399494936611667;
513 for( k=0; k < qnbin; k++ )
515 double beta_alpha = 0.25 * sqrt_term *
sexp(200./qtemp[k] );
517 double xi = 1./ (1. + 1.3e13*
sexp(1.5*1e4/qtemp[k])*sqrt_term/(2.*f) );
519 double beta = 3e12 *
sexp( 320. / qtemp[k] );
522 double recombination_efficiency_CT02 = xi / (1. + 0.005*f/2./
SDIV(beta) + beta_alpha );
523 sticking_probability_H = 1./(1. + 0.04*sqrt(qtemp[k]+
phycon.
te) +
530 recombination_efficiency_CT02;
554 double sqrt_term = 35.399494936611667;
557 double xi = 1./ (1. + 1.3e13*
sexp(1.5*1e4/
gv.
bin[nd]->
tedust )*sqrt_term/(2.*f) );
562 double recombination_efficiency_CT02 = xi / (1. + 0.005*f/2./
SDIV(beta) + beta_alpha );
569 gv.
bin[nd]->
cnv_H_pCM3 * sticking_probability_H * recombination_efficiency_CT02;
573 # ifndef IGNORE_QUANTUM_HEATING
641 for( nd=0; nd <
gv.
nBin; nd++ )
657 for( nd=0; nd <
gv.
nBin; nd++ )
697 # ifndef IGNORE_QUANTUM_HEATING
724 frac_H2star_grains = 0.9416;
725 frac_H2star_hminus = 1. - 4.938e-6;
738 corr = pow(10.,corr*Hmolec_old[
ipMH]/(Hmolec_old[
ipMH]+1.6e4));
782 double telog = log(teused);
783 hmi.
rh2h2p =
sexp(2.123715e4/teused)*(-3.3232183e-7 + 3.3735382e-7*log(teused) -
784 1.4491368e-7*pow(telog,2) +3.4172805e-8*pow(telog,3) -
785 4.781372e-9*pow(telog,4) + 3.9731542e-10*pow(telog,5) -
786 1.8171411e-11*pow(telog,6) +3.5311932e-13*pow(telog,7));
813 sum_H0_Hp = Hmolec_old[
ipMH]+Hmolec_old[
ipMHp];
820 int in[]={-1},out[]={-1};
840 if(r->
next == NULL) {
871 if(r->
next == NULL) {
894 TStancil =
MAX2( TStancil , 10. );
901 if(r->
next == NULL) {
917 if(r->
next == NULL) {
930 hphmhhpe = 4.75e-30*pow(
phycon.
te,3.1);
931 if(r->
next == NULL) {
947 if(r->
next == NULL) {
958 if(r->
next == NULL) {
979 enum {DEBUG_LOC=
false};
980 if( DEBUG_LOC &&
nzone>140 )
982 fprintf(
ioQQQ,
"DEBUG sumfirstions\t%.2f\t%.4e\t%.4e\t%.4e",
989 fprintf(
ioQQQ,
"\t%li\t%.3e",
998 if(r->
next == NULL) {
1009 if(r->
next == NULL) {
1020 if(r->
next == NULL) {
1042 y=545969508.1323510+x*71239.23653059864;
1048 if(r->
next == NULL) {
1059 if(r->
next == NULL) {
1069 enum {DEBUG_LOC=
false};
1070 if( DEBUG_LOC &&
nzone>140 )
1072 fprintf(
ioQQQ,
" debuggggrn grn\t%.2f\t%.3e\t%.3e\tfrac\t%.3e\tH-\t%.3e\t%.3e\tfrac\t%.3e\t%.3e\t%.3e\t%.3e\n",
1114 enum {DEBUG_LOC=
false};
1115 if( DEBUG_LOC &&
nzone>140)
1118 fprintf(
ioQQQ,
"hmi.assoc_detach_backwards_grnd\t%.2f\t%.5e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\n",
1144 if(r->
next == NULL) {
1159 if(r->
next == NULL) {
1187 Hneut = 3.4738192887404660e-008;
1192 fhneut = Hmolec_old[
ipMHp]*Hneut;
1194 if(r->
next == NULL) {
1222 if(r->
next == NULL) {
1229 bhneut *= Hmolec_old[
ipMHp];
1244 # define CATALYST true
1251 if(r->
next == NULL) {
1263 if(r->
next == NULL) {
1281 if(r->
next == NULL) {
1294 if(r->
next == NULL) {
1318 if(r->
next == NULL) {
1329 if(r->
next == NULL) {
1344 if(r->
next == NULL) {
1366 if(r->
next == NULL) {
1380 if(r->
next == NULL) {
1397 if(r->
next == NULL) {
1420 if(r->
next == NULL) {
1437 if(r->
next == NULL) {
1466 static long int nzone_eval = -1, iteration_evaluated=-1;
1504 if(r->
next == NULL) {
1529 if(r->
next == NULL) {
1554 if(r->
next == NULL) {
1575 if(r->
next == NULL) {
1590 h2scrh2pe = 4.4e-17;
1599 if(r->
next == NULL) {
1636 if(r->
next == NULL) {
1652 if(r->
next == NULL) {
1665 if(r->
next == NULL) {
1683 if(r->
next == NULL) {
1695 if(r->
next == NULL) {
1705 hmi.
CR_reac_H2g = h2crh2pe + h2crhphe + h2crphh + h2crphphm + h2crphpeh;
1706 hmi.
CR_reac_H2s = h2scrh2pe + h2scrhphe + h2scrphh + h2scrphphm + h2scrphpeh;
1716 if(r->
next == NULL) {
1748 if(r->
next == NULL) {
1779 if(r->
next == NULL) {
1795 if(r->
next == NULL) {
1881 if(r->
next == NULL) {
1905 # define FACTOR 2.25
1917 if(r->
next == NULL) {
1942 if(r->
next == NULL) {
1955 " H2 destroy rate=%.2e DIS;%.3f bat;%.3f h2dis;%.3f hmi.H2_photoionize_rate;%.3f h2h2p;%.3f E-h;%.3f hmi.h2hph3p;%.3f sec;%.3f\n",
1969 fprintf(
ioQQQ,
" Destroy H2: rate=0\n" );
1997 radath =
HMRATE(5.3e-19,1.85,0);
1999 if( r->
next == NULL) {
2017 if(r->
next == NULL) {
2032 if(r->
next == NULL) {
2052 # define OLD_FRAC 0.0
2064 if(r->
next == NULL) {
2075 if(r->
next == NULL) {
2097 h2pehh =
HMRATE(1.6e-8,-0.43,0);
2099 if(r->
next == NULL) {
2117 if(r->
next == NULL) {
2127 if(r->
next == NULL) {
2139 if(r->
next == NULL) {
2163 if(r->
next == NULL) {
2178 if(r->
next == NULL) {
2194 if(r->
next == NULL) {
2237 H2star_excit = Boltz_fac_H2_H2star * H2star_deexcit;
2244 if(r->
next == NULL) {
2264 if(r->
next == NULL) {
2272 if(r->
next == NULL) {
2278 r->
rk = deexc_hneut;
2291 if(r->
next == NULL) {
2304 r->
rk = deexc_htwo*Boltz_fac_H2_H2star;
2307 if(r->
next == NULL) {
2320 r->
rk = deexc_hneut*Boltz_fac_H2_H2star;
2333 if(r->
next == NULL) {
2413 if(r->
next == NULL) {
2437 if(r->
next == NULL) {
2457 if(r->
next == NULL) {
2477 if(r->
next == NULL) {
2490 if(r->
next == NULL) {
2500 if(r->
next == NULL) {
2510 if(r->
next == NULL) {
2521 if(r->
next == NULL) {
2538 if(r->
next == NULL) {
2565 if(r->
next == NULL) {
2587 if(r->
next == NULL) {
2601 if(r->
next == NULL) {
2610 if(r->
next == NULL) {
2619 if(r->
next == NULL) {
2638 for( i=
hmi.
iheh1-1; i < limit; i++ )
2650 if(r->
next == NULL) {
2659 if(r->
next == NULL) {
2685 if(r->
next == NULL) {
2700 if(r->
next == NULL) {
3317 if(r->
next == NULL) {
3325 if(r->
next == NULL) {
3333 if(r->
next == NULL) {
3341 if(r->
next == NULL) {
3349 if(r->
next == NULL) {
3357 if(r->
next == NULL) {
3365 if(r->
next == NULL) {
3373 if(r->
next == NULL) {
3381 if(r->
next == NULL) {
3389 if(r->
next == NULL) {
3397 if(r->
next == NULL) {
3405 if(r->
next == NULL) {
3413 if(r->
next == NULL) {
3421 if(r->
next == NULL) {
3429 if(r->
next == NULL) {
3437 if(r->
next == NULL) {
3445 if(r->
next == NULL) {
3471 if(r->
next == NULL) {
3643 if(r->
next == NULL) {
3651 if(r->
next == NULL) {
3659 if(r->
next == NULL) {
3667 if(r->
next == NULL) {
3675 if(r->
next == NULL) {
3683 if(r->
next == NULL) {
3691 if(r->
next == NULL) {
3700 if(r->
next == NULL) {
4932 while (r->
next != NULL)
4936 fprintf(
ioQQQ,
"DEBUG r\t%li\t%.3e\n", i, r->
rk);
4989 while (r->
next != NULL)
5031 for(j=0;j < r->
nrates && !ok;j++)
5035 sinkrate[i] = rate_deriv[j];
5048 fprintf(
ioQQQ,
"A chemical rate in hmole was independent of the species it used\n");
5049 fprintf(
ioQQQ,
"This probably shouldn't happen (so you shouldn't see this message).\n");
5062 bvec[ratei] -= rate;
5076 bvec[ratei] += rate;
5152 rated = rate_deriv[j];
5175 enum {DEBUG_LOC=
false};
5178 if( DEBUG_LOC && (
nzone > 570) )
5201 double total, mtotal;
5209 if( fabs(total) > 1e-5*fabs(c[i][i]*
hmi.
nProton[i]))
5211 fprintf(
ioQQQ,
"PROBLEM Subtotal1 %.2e\n",fabs(total)/fabs(c[i][i]*
hmi.
nProton[i]));
5212 fprintf(
ioQQQ,
"Species %li Total %g Diag %g\n",i,total,c[i][i]*
hmi.
nProton[i]);
5216 fprintf(
ioQQQ,
"NOTE Subtotal1 %.2e Te=%.4e\n",
5218 fprintf(
ioQQQ,
"Species %li Total %g Diag %g\n",i,total,c[i][i]*
hmi.
nProton[i]);
5221 total = mtotal = 0.;
5227 if(fabs(total) > 1e-30 && fabs(total) > 1e-10*rtot)
5229 fprintf(
ioQQQ,
"PROBLEM Subtotal2 %.2e\n",fabs(total)/mtotal);
5230 fprintf(
ioQQQ,
"RHS Total %g cf %g\n",total,mtotal);
5232 else if(fabs(total) > 1e-7*mtotal)
5234 fprintf(
ioQQQ,
"WARNING zone %li Hmole RHS conservation error %.2e of %.2e\n",
nzone,total,mtotal);
5235 fprintf(
ioQQQ,
"(may be due to high rate equilibrium reactions)\n");
5243 #define N_H_MAT (N_H_MOLEC-MOLMIN)
5262 proton_sum_old = 0.;
5283 Hmolec_old[
ipMH] = 0.;
5299 bvec[
ipMH] = Hmolec_old[
ipMH] = 0.;
5303 bvec[ipConserve] = 0.;
5306 proton_sum_old = 0.;
5310 proton_sum_old +=
hmi.
nProton[i]*Hmolec_old[i];
5316 enum {DEBUG_LOC=
false};
5320 fprintf(
ioQQQ,
" HMOLE h2 %.2e h2* %.2e\n" , Hmolec_old[ipMH2g] ,Hmolec_old[
ipMH2s] );
5346 fprintf(
ioQQQ,
" MOLE old abundances\t%.2f",
fnzone);
5348 fprintf(
ioQQQ,
"\t%.2e", Hmolec_old[i] );
5349 fprintf(
ioQQQ,
"\n" );
5352 fprintf(
ioQQQ,
" ");
5357 fprintf(
ioQQQ,
" bvec \n" );
5364 fprintf(
ioQQQ,
"%10.2e", c[j][i] );
5366 fprintf(
ioQQQ,
"%10.2e", bvec[i] );
5367 fprintf(
ioQQQ,
"\n" );
5410 # define MAT(a,I_,J_) (*((a)+(I_)*(N_H_MAT)+(J_)))
5415 for( i=0; i < N_H_MAT; i++ )
5427 fprintf(
ioQQQ,
"%15.7g\t",Hmolec_old[i]);
5430 fprintf(
ioQQQ,
"sum = %15.7g\n",total);
5437 getrf_wrapper(N_H_MAT,N_H_MAT,(
double*)amat,N_H_MAT,ipiv,&merror1);
5440 if( merror1 != 0 || merror2 != 0 )
5442 fprintf(
ioQQQ,
"PROBLEM hmole_step: dgetrs finds singular or ill-conditioned matrix\n" );
5449 fprintf(
ioQQQ,
"solution:\n");
5452 fprintf(
ioQQQ,
"%15.7g\t",bvec[i]);
5455 fprintf(
ioQQQ,
"sum = %15.7g\n",total);
5468 etmp = bvec[i]/(
ABSLIM+Hmolec_old[i]);
5471 fprintf(
ioQQQ,
"%15.7g\t",etmp);
5474 *error += etmp*etmp;
5477 bvec[i] = Hmolec_old[i]-bvec[i];
5480 *error = sqrt(*error)/N_H_MAT;
5485 fprintf(
ioQQQ,
"err = %15.7g\n",*error);
5489 fprintf(
ioQQQ,
"%15.7g\t",bvec[i]);
5492 fprintf(
ioQQQ,
"sum = %15.7g\n",total);
5495 proton_sum_new = 0.;
5508 fracnegtmp = -bvec[i]/
SDIV(Hmolec_old[i]);
5511 if(fracnegtmp > fracneg)
5513 fracneg = fracnegtmp;
5514 fracnegfac = (0.5*Hmolec_old[i]-bvec[i])/(Hmolec_old[i]-bvec[i]);
5523 conserve = (proton_sum_old - proton_sum_new)/
SDIV(proton_sum_old);
5530 if( fabs(conserve) > 10.*FLT_EPSILON )
5531 fprintf(
ioQQQ,
"PROBLEM hmoleee zn %li proton_sum_old %.8e, proton_sum_new %.8e n(H) %.8e (old-new)/old %.3e nH-old %.3e nH-new %.3e\n",
5551 fprintf(
ioQQQ,
" =>\n" );
5556 fprintf(
ioQQQ,
"\n" );
5568 fprintf(
ioQQQ,
" PROBLEM hmole_step finds negative H molecule, in zone %.2f.\n",
fnzone );
5569 fprintf(
ioQQQ,
" Worst is species %d -ve by fraction %g.\n",iworst,fracneg );
5570 fprintf(
ioQQQ,
" The populations follow:\n");
5575 fprintf(
ioQQQ,
"\n" );
5581 double total=0., ntotal=0., ratio;
5582 enum {FIXUPTYPE = 1};
5586 if(FIXUPTYPE == 1) {
5596 ratio = total/(total-ntotal);
5602 else if(FIXUPTYPE == 2)
5606 bvec[i] = fracnegfac*Hmolec_old[i]+(1-fracnegfac)*bvec[i];
5616 fprintf(
ioQQQ,
" FIXUP taken %i time%s.\n\n", *nFixup, (*nFixup == 1)?
"":
"s");
5617 fprintf(
ioQQQ,
" Initially:\n");
5622 fprintf(
ioQQQ,
"\n" );
5623 fprintf(
ioQQQ,
" Changed to:\n");
5628 fprintf(
ioQQQ,
"\n" );
5637 h1fnd = bvec[
ipMHp];
5639 h1rat = h1fnd/
SDIV(sum_H0_Hp);
5646 if(fabs(bvec[
ipMH]+bvec[
ipMHp]-h1fnd) >= 1e-12 * h1fnd)
5648 static bool lgPrint=
true;
5649 fprintf(
ioQQQ,
"PROBLEM h1fnd residual error, bvec[ipMH]=%g [ipMHp}=%g"
5650 " h1fnd=%g h1rat=%g bvec[ipMH]+bvec[ipMHp]-h1fnd=%g\n",
5651 bvec[
ipMH],bvec[
ipMHp],h1fnd,h1rat,bvec[ipMH]+bvec[ipMHp]-h1fnd);
5656 fprintf(
ioQQQ,
" This problem is usually caused by little or no sources of ionizaiton.\n");
5657 fprintf(
ioQQQ,
" Is the simulation physically motivated?\n");
5660 fprintf(
ioQQQ,
"PROBLEM h1fnd - no cosmic rays are present - is this physical?\n");
5661 fprintf(
ioQQQ,
"PROBLEM h1fnd - Consider including the COSMIC RAY BACKGROUND command.\n");
5691 enum {DEBUG_LOC=
false};
5692 if( DEBUG_LOC && (
nzone>50) )
5694 double createsum ,create_from_Hn2 , create_3body_Ho, create_h2p,
5695 create_h3p, create_h3pe, create_grains, create_hminus;
5696 double destroysum, destroy_hm ,destroy_soloman ,destroy_2h ,destroy_hp,
5697 destroy_h,destroy_hp2,destroy_h3p;
5714 createsum = create_from_Hn2 + create_3body_Ho + create_h2p +
5715 create_h3p + create_h3pe + create_grains + create_hminus;
5717 fprintf(
ioQQQ,
"H2 create zone\t%.2f \tsum\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
5720 create_hminus / createsum,
5721 create_from_Hn2 / createsum,
5722 create_3body_Ho / createsum,
5723 create_h2p / createsum,
5724 create_h3p / createsum,
5725 create_h3pe / createsum,
5726 create_grains / createsum );
5739 destroysum = destroy_hm + destroy_soloman + destroy_2h +
5740 destroy_hp+ destroy_h+ destroy_hp2+ destroy_h3p;
5742 fprintf(
ioQQQ,
"H2 destroy\t%.3f \t%.2e\tsum\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
5745 destroy_hm / destroysum ,
5746 destroy_soloman / destroysum ,
5747 destroy_2h / destroysum ,
5748 destroy_hp / destroysum ,
5749 destroy_h / destroysum ,
5750 destroy_hp2 / destroysum ,
5751 destroy_h3p / destroysum );
5758 enum {DEBUG_LOC=
false};
5759 if( DEBUG_LOC && (
nzone>140) )
5761 double create_from_Ho,create_3body_Ho,create_batach,destroy_photo,
5762 destroy_coll_heavies,destroy_coll_electrons,destroy_Hattach,destroy_fhneut,
5763 destsum , createsum;
5766 create_3body_Ho = c3bod;
5771 destroy_coll_electrons = cionhm;
5773 destroy_fhneut = fhneut;
5775 destsum = destroy_photo + destroy_coll_heavies + destroy_coll_electrons +
5776 destroy_Hattach + destroy_fhneut;
5777 fprintf(
ioQQQ,
"H- destroy zone\t%.2f\tTe\t%.4e\tsum\t%.2e\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
5781 destroy_photo/destsum ,
5782 destroy_coll_heavies/destsum,
5783 destroy_coll_electrons/destsum,
5784 destroy_Hattach/destsum,
5785 destroy_fhneut/destsum );
5787 createsum = create_from_Ho+create_3body_Ho+create_batach;
5788 fprintf(
ioQQQ,
"H- create\t%.2f\tTe\t%.4e\tsum\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
5793 create_from_Ho/createsum,
5794 create_3body_Ho/createsum,
5795 create_batach/createsum);
5875 static double log_G0_face = -1;
5912 f1 = 0.15 * log_density + 0.75;
5913 f2 = -0.5 * log_density + 10.;
5945 k_f4 = -0.25 * log_G0_face + 1.25;
5956 f4 = pow(k_f4,2) * pow( 10. , 2.2211 * log_density - 29.8506);
5961 f4 = pow(k_f4,2) * pow( 10., 2.2211 * log_density - 29.8506);
5964 f3 =
MAX2(0.1, -4.75 * log_density + 24.25);
5965 f5 =
MAX2(1.,0.95 * log_density - 1.45) * 0.2 * log_G0_face;
6006 H2star_excit = Boltz_fac_H2_H2star * H2star_deexcit;
6030 enum {DEBUG_LOC=
false};
6039 fprintf(
ioQQQ,
" \n" );
6046 fprintf(
ioQQQ,
"\n raw; " );
6051 fprintf(
ioQQQ,
" \n" );
6134 " Create H2, rate=%10.2e grain;%5.3f hmin;%5.3f bhedis;%5.3f h2+;%5.3f hmi.radasc:%5.3f hmi.h3ph2p:%5.3f hmi.h3petc:%5.3f\n",
6146 fprintf(
ioQQQ,
" Create H2, rate=0\n" );
6157 fprintf(
ioQQQ,
" Create H2+, rate=%10.2e hmi.rh2h2p;%5.3f b2pcin;%5.3f hmi.h3ph2p;%5.3f hmi.h3petc+;%5.3f\n",
6165 fprintf(
ioQQQ,
" Create H2+, rate=0\n" );
6220 fprintf(
ioQQQ,
" HMOLE, Dep Coef, H-:%10.2e H2:%10.2e H2+:%10.2e\n",
6222 fprintf(
ioQQQ,
" H- creat: Rad atch%10.3e Induc%10.3e bHneut%10.2e 3bod%10.2e b=>H2%10.2e N(H-);%10.2e b(H-);%10.2e\n",
6225 fprintf(
ioQQQ,
" H- destr: Photo;%10.3e mut neut%10.2e e- coll ion%10.2e =>H2%10.2e x-ray%10.2e p+H-%10.2e\n",
6229 fprintf(
ioQQQ,
" H- heating:%10.3e Ind cooling%10.2e Spon cooling%10.2e\n",
6240 " Destroy H2+: rate=%10.2e e-;%5.3f phot;%5.3f hard gam;%5.3f H2col;%5.3f h2phhp;%5.3f pion;%5.3f bh2h2p:%5.3f\n",
6249 " Create H2+: rate=%.2e HII HI;%.3f Col H2;%.3f HII H2;%.3f HI HI;%.3f\n",
6258 fprintf(
ioQQQ,
" Create H2+: rate= is zero\n" );
6265 enum {DEBUG_LOC=
false};
6268 fprintf(
ioQQQ,
"hmole bugg\t%.3f\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
6279 #if defined(__HP_aCC)
6280 #pragma OPTIMIZE OFF