00001
00002
00003
00004
00005
00006 #include "cddefines.h"
00007 #include "phycon.h"
00008 #include "dense.h"
00009 #include "taulines.h"
00010 #include "h2.h"
00011 #include "h2_priv.h"
00012 #include "mole.h"
00013
00014
00015 #define PRT_COLL false
00016
00017
00018
00019 #define N_H2_HE_FIT_PAR 8
00020 static realnum ***H2_He_coll_fit_par;
00021 static bool **lgDefn_H2He_coll;
00022
00023
00024 STATIC realnum H2_CollidRateEvalOne(
00025
00026
00027 long iVibHi, long iRotHi,long iVibLo,
00028
00029 long iRotLo, long ipHi , long ipLo ,
00030
00031 long nColl )
00032 {
00033 double fitted;
00034 realnum rate;
00035 double t3Plus1 = phycon.te/1000. + 1.;
00036 double t3Plus1Squared = POW2(t3Plus1);
00037
00038
00039 double gbarcoll[N_X_COLLIDER][3] =
00040 {
00041 {-9.9265 , -0.1048 , 0.456 },
00042 {-8.281 , -0.1303 , 0.4931 },
00043 {-10.0357, -0.0243 , 0.67 },
00044 {-8.6213 , -0.1004 , 0.5291 },
00045 {-9.2719 , -0.0001 , 1.0391 }
00046 };
00047
00048 DEBUG_ENTRY( "H2_CollidRateEvalOne()" );
00049
00050
00051
00052 if( nColl == 1 && mole.lgH2_He_ORNL )
00053 {
00054
00055
00056
00057
00058
00059
00060
00061
00062 if( (fitted=H2_He_coll(ipHi , ipLo , phycon.te ))>0. )
00063 {
00064
00065
00066
00067
00068 rate = (realnum)fitted*mole.lgColl_deexec_Calc;
00069
00070
00071
00072
00073
00074
00075 }
00076
00077
00078
00079
00080 else if( mole.lgColl_gbar &&
00081 (H2_lgOrtho[0][iVibHi][iRotHi]-H2_lgOrtho[0][iVibLo][iRotLo]==0) )
00082 {
00083
00084
00085 double ediff = energy_wn[0][iVibHi][iRotHi] - energy_wn[0][iVibLo][iRotLo];
00086
00087
00088
00089 ediff = MAX2(100., ediff );
00090 rate = (realnum)pow(10. ,
00091 gbarcoll[nColl][0] + gbarcoll[nColl][1] *
00092 pow(ediff,gbarcoll[nColl][2]) )*mole.lgColl_deexec_Calc;
00093
00094
00095
00096
00097
00098
00099
00100 }
00101 else
00102 rate = 0;
00103 }
00104 else if( nColl==4 )
00105 {
00106
00107
00108
00109 if( CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][1] != 0 )
00110 {
00111 rate = CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0] * 1e-10f *
00112
00113 (realnum)sexp( CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][1]/1000./phycon.te_eV)*mole.lgColl_deexec_Calc;
00114
00115
00116
00117
00118
00119
00120 }
00121
00122
00123
00124 else if( mole.lgColl_gbar )
00125 {
00126
00127
00128 double ediff = energy_wn[0][iVibHi][iRotHi] - energy_wn[0][iVibLo][iRotLo];
00129 ediff = MAX2(100., ediff );
00130 rate = (realnum)pow(10. ,
00131 gbarcoll[nColl][0] + gbarcoll[nColl][1] *
00132 pow(ediff ,gbarcoll[nColl][2]) )*mole.lgColl_deexec_Calc;
00133
00134
00135
00136
00137
00138
00139
00140 }
00141 else
00142 rate = 0;
00143 }
00144 else if( CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0]!= 0 )
00145 {
00146
00147
00148
00149
00150
00151 double r = CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0] +
00152 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][1]/t3Plus1 +
00153 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][2]/t3Plus1Squared;
00154
00155 rate = (realnum)pow(10.,r)*mole.lgColl_deexec_Calc;
00156
00157
00158
00159
00160
00161
00162
00163 }
00164
00165
00166
00167 else if( mole.lgColl_gbar &&
00168 (H2_lgOrtho[0][iVibHi][iRotHi]-H2_lgOrtho[0][iVibLo][iRotLo]==0) )
00169 {
00170
00171
00172 double ediff = energy_wn[0][iVibHi][iRotHi] - energy_wn[0][iVibLo][iRotLo];
00173
00174
00175 ediff = MAX2(100., ediff );
00176 rate = (realnum)pow(10. ,
00177 gbarcoll[nColl][0] + gbarcoll[nColl][1] *
00178 pow(ediff,gbarcoll[nColl][2]) )*mole.lgColl_deexec_Calc;
00179
00180 if( nColl == 0 && h2.lgH2_H_coll_07 )
00181 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] *= 100.;
00182
00183
00184
00185
00186
00187
00188
00189 }
00190 else
00191 rate = 0;
00192
00193
00194
00195 if( !mole.lgH2_ortho_para_coll_on &&
00196 (H2_lgOrtho[0][iVibHi][iRotHi]-H2_lgOrtho[0][iVibLo][iRotLo]) )
00197 rate = 0.;
00198
00199 {
00200 enum {DEBUG_LOC=false};
00201 if( DEBUG_LOC )
00202 {
00203 fprintf(ioQQQ,"bugcoll\tiVibHi\t%li\tiRotHi\t%li\tiVibLo\t%li\tiRotLo\t%li\tcoll\t%.2e\n",
00204 iVibHi,iRotHi,iVibLo,iRotLo,
00205 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] );
00206 }
00207 }
00208 return rate;
00209 }
00210
00211
00212 void H2_CollidRateEvalAll( void )
00213 {
00214 long int numb_coll_trans = 0;
00215 double excit;
00216 long int iElecHi , iElecLo , ipHi , iVibHi , iRotHi ,
00217 ipLo , iVibLo , iRotLo , nColl;
00218
00219 DEBUG_ENTRY( "H2_CollidRateEvalAll()" );
00220
00221 if( PRT_COLL )
00222 fprintf(ioQQQ,"H2 coll deex rate coef\n"
00223 "VibHi\tRotHi\tVibLo\tRotLo\trate\n");
00224
00225 iElecHi = 0;
00226 iElecLo = 0;
00227 if(mole.nH2_TRACE >= mole.nH2_trace_full)
00228 fprintf(ioQQQ,"H2 set collision rates\n");
00229
00230
00231
00232
00233
00234 H2_coll_dissoc_rate_coef[0][0] = 0.;
00235 H2_coll_dissoc_rate_coef_H2[0][0] = 0.;
00236 for( ipHi=0; ipHi<nLevels_per_elec[0]; ++ipHi )
00237 {
00238 double energy;
00239
00240
00241 long int ip = H2_ipX_ener_sort[ipHi];
00242 iVibHi = ipVib_H2_energy_sort[ip];
00243 iRotHi = ipRot_H2_energy_sort[ip];
00244
00245
00246
00247
00248 energy = H2_DissocEnergies[0] - energy_wn[0][iVibHi][iRotHi];
00249 ASSERT( energy > 0. );
00250
00251 H2_coll_dissoc_rate_coef[iVibHi][iRotHi] =
00252 1e-14f * (realnum)sexp(energy/phycon.te_wn) * mole.lgColl_dissoc_coll;
00253
00254
00255
00256 H2_coll_dissoc_rate_coef_H2[iVibHi][iRotHi] =
00257 1e-11f * (realnum)sexp(energy/phycon.te_wn) * mole.lgColl_dissoc_coll;
00258
00259
00260
00261
00262
00263
00264 for( ipLo=0; ipLo<ipHi; ++ipLo )
00265 {
00266 ip = H2_ipX_ener_sort[ipLo];
00267 iVibLo = ipVib_H2_energy_sort[ip];
00268 iRotLo = ipRot_H2_energy_sort[ip];
00269
00270 ASSERT( energy_wn[0][iVibHi][iRotHi] - energy_wn[0][iVibLo][iRotLo] > 0.);
00271
00272
00273
00274
00275
00276
00277
00278 ++numb_coll_trans;
00279
00280
00281
00282 if( PRT_COLL && iVibHi == 1 && iRotHi==3)
00283 fprintf(ioQQQ,"%li\t%li\t%li\t%li",
00284 iVibHi,iRotHi,iVibLo,iRotLo);
00285 for( nColl=0; nColl<N_X_COLLIDER; ++nColl )
00286 {
00287 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] =
00288 H2_CollidRateEvalOne( iVibHi,iRotHi,iVibLo,iRotLo,
00289 ipHi , ipLo , nColl );
00290 if( PRT_COLL && iVibHi == 1 && iRotHi==3)
00291 fprintf(ioQQQ,"\t%.2e",H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] );
00292 }
00293 if( PRT_COLL && iVibHi == 1 && iRotHi==3)
00294 fprintf(ioQQQ,"\n");
00295 }
00296 }
00297 if( PRT_COLL )
00298 cdEXIT( EXIT_FAILURE );
00299
00300
00301
00302
00303
00304
00305 nColl = 0;
00306 iElecHi = 0;
00307 iElecLo = 0;
00308 iVibHi = 0;
00309 iVibLo = 0;
00310
00311
00312
00313 double excit1;
00314 double te_used = MAX2( 100. , phycon.te );
00315
00316 iRotLo = 0;
00317 iRotHi = 1;
00318 excit1 = sexp( H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyK/te_used);
00319 excit = sexp( -(POW2(5.30-460./te_used)-21.2) )*1e-13;
00320
00321 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][0] = (realnum)(
00322 excit*H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->g/
00323 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Hi->g /
00324
00325 SDIV(excit1) )*mole.lgColl_deexec_Calc *
00326
00327 mole.lgH2_ortho_para_coll_on;
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337 iRotLo = 0;
00338 iRotHi = 3;
00339 excit = sexp( -(POW2(6.36-373./te_used)-34.5) )*1e-13;
00340 excit1 = sexp( H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyK/te_used);
00341 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][0] = (realnum)(
00342 excit*H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->g/
00343 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Hi->g /
00344 SDIV(excit1) )*mole.lgColl_deexec_Calc *
00345
00346 mole.lgH2_ortho_para_coll_on;
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356 iRotLo = 1;
00357 iRotHi = 2;
00358 excit = sexp( -(POW2(5.35-454./te_used)-23.1 ) )*1e-13;
00359 excit1 = sexp( H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyK/te_used);
00360 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][0] = (realnum)(
00361 excit*H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->g/
00362 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Hi->g /
00363 SDIV(excit1) )*mole.lgColl_deexec_Calc *
00364
00365 mole.lgH2_ortho_para_coll_on;
00366
00367
00368
00369
00370
00371
00372
00373 if( phycon.te < 100. )
00374 {
00375
00376
00377 H2_CollRate[0][1][0][0][0] = (realnum)(H2_CollRate[0][0][1][0][0]*exp(-(3900-170.5)*(1./phycon.te - 1./100.)));
00378 H2_CollRate[0][3][0][0][0] = (realnum)(H2_CollRate[0][0][3][0][0]*exp(-(3900-1015.1)*(1./phycon.te - 1./100.)));
00379 H2_CollRate[0][2][0][1][0] = (realnum)(H2_CollRate[0][0][2][0][1]*exp(-(3900-339.3)*(1./phycon.te - 1./100.)));
00380 }
00381
00382
00383
00384
00385
00386
00387
00388
00389 if( mole.nH2_TRACE >= mole.nH2_trace_full )
00390 fprintf(ioQQQ,
00391 " collision rates updated for new temp, number of trans is %li\n",
00392 numb_coll_trans);
00393
00394
00395
00396
00397 return;
00398 }
00399
00400
00401 void H2_CollidRateRead( long int nColl )
00402 {
00403
00404
00405
00406
00407
00408
00409 const char* cdDATAFILE[N_X_COLLIDER] =
00410 {
00411 "H2_coll_H_07.dat",
00412 "H2_coll_He_LeBourlot.dat",
00413 "H2_coll_H2ortho.dat",
00414 "H2_coll_H2para.dat",
00415 "H2_coll_Hp.dat"
00416 };
00417
00418 FILE *ioDATA;
00419 char chLine[FILENAME_PATH_LENGTH_2];
00420 const char* chFilename;
00421 long int i, n1;
00422 long int iVibHi , iVibLo , iRotHi , iRotLo;
00423 long int magic_expect = -1;
00424
00425 DEBUG_ENTRY( "H2_CollidRateRead()" );
00426
00427 if( nColl == 0 )
00428 {
00429
00430 if( h2.lgH2_H_coll_07 )
00431 {
00432 magic_expect = 71106;
00433 chFilename = "H2_coll_H_07.dat";
00434 }
00435 else
00436 {
00437
00438 magic_expect = 20429;
00439 chFilename = "H2_coll_H_99.dat";
00440 }
00441 }
00442 else if( nColl == 1 )
00443 {
00444
00445 if( mole.lgH2_He_ORNL )
00446 {
00447
00448
00449 long int magic_found,
00450 magic_expect = 70513;
00451
00452
00453
00454
00455
00456
00457 chFilename = "H2_coll_He_ORNL.dat";
00458 if( (magic_found = H2_He_coll_init( chFilename )) != magic_expect )
00459 {
00460 fprintf(ioQQQ,"The H2 - He collision data file H2_coll_He_ORNL.dat does not have the correct magic number.\n");
00461 fprintf(ioQQQ,"I found %li but expected %li\n", magic_found , magic_expect );
00462
00463 cdEXIT(EXIT_FAILURE);
00464 }
00465 return;
00466 }
00467 else
00468 {
00469 magic_expect = 20429;
00470
00471 chFilename = "H2_coll_He_LeBourlot.dat";
00472 }
00473 }
00474 else
00475 {
00476
00477 magic_expect = 20429;
00478 chFilename = cdDATAFILE[nColl];
00479 }
00480
00481 ioDATA = open_data( chFilename, "r" );
00482
00483
00484 if( read_whole_line( chLine , (int)sizeof(chLine) , ioDATA ) == NULL )
00485 {
00486 fprintf( ioQQQ, " H2_CollidRateRead could not read first line of %s\n", chFilename );
00487 cdEXIT(EXIT_FAILURE);
00488 }
00489
00490
00491 n1 = atoi( chLine );
00492
00493
00494
00495 if( n1 != magic_expect )
00496 {
00497 fprintf( ioQQQ,
00498 " H2_CollidRateRead: the version of %s is not the current version.\n", chFilename );
00499 fprintf( ioQQQ,
00500 " I expected to find the number %li and got %li instead.\n" ,
00501 magic_expect , n1 );
00502 fprintf( ioQQQ, "Here is the line image:\n==%s==\n", chLine );
00503 cdEXIT(EXIT_FAILURE);
00504 }
00505
00506 while( read_whole_line( chLine , (int)sizeof(chLine) , ioDATA ) != NULL )
00507 {
00508 if( chLine[0]=='#' )
00509 continue;
00510 double a[3];
00511 sscanf(chLine,"%li\t%li\t%li\t%li\t%le\t%le\t%le",
00512 &iVibHi ,&iRotHi , &iVibLo , &iRotLo , &a[0],&a[1],&a[2] );
00513
00514
00515 ASSERT( iRotHi >= 0 && iVibHi >= 0 && iRotLo >= 0 && iVibLo >=0 );
00516
00517
00518
00519
00520 if( iVibHi > VIB_COLLID ||
00521 iVibLo > VIB_COLLID ||
00522 iRotHi > h2.nRot_hi[0][iVibHi] ||
00523 iRotLo > h2.nRot_hi[0][iVibLo])
00524 {
00525 iVibHi = -1;
00526 continue;
00527 }
00528
00529
00530 if( !( (iVibHi == iVibLo) && (iRotHi == iRotLo )) )
00531 {
00532
00533 ASSERT( (energy_wn[0][iVibHi][iRotHi] - energy_wn[0][iVibLo][iRotLo] ) > 0. );
00534 for( i=0; i<3; ++i )
00535 {
00536 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][i] = (realnum)a[i];
00537 }
00538
00539
00540
00541
00542 }
00543 }
00544 fclose( ioDATA );
00545
00546 return;
00547 }
00548
00549
00550
00551
00552
00553
00554 long int H2_He_coll_init(const char FILE_NAME_IN[])
00555 {
00556
00557 int i, j;
00558 long int magic;
00559 double par[N_H2_HE_FIT_PAR];
00560 char line[INPUT_LINE_LENGTH];
00561 int h2_i, h2_f, he_i, he_f;
00562 char quality, space;
00563
00564
00565 double error;
00566
00567 FILE *ifp;
00568
00569 DEBUG_ENTRY( "H2_He_coll_init()" );
00570
00571
00572
00573
00574 H2_He_coll_fit_par = (realnum ***)MALLOC(sizeof(realnum **)*(unsigned)nLevels_per_elec[0] );
00575 lgDefn_H2He_coll = (bool**)MALLOC(sizeof(bool *)*(unsigned)nLevels_per_elec[0] );
00576 for( i=1; i<nLevels_per_elec[0]; ++i )
00577 {
00578 lgDefn_H2He_coll[i] = (bool*)MALLOC(sizeof(bool)*(unsigned)i );
00579 H2_He_coll_fit_par[i] = (realnum **)MALLOC(sizeof(realnum *)*(unsigned)i );
00580 for( j=0; j<i; ++j)
00581 H2_He_coll_fit_par[i][j] = (realnum *)MALLOC(sizeof(realnum)*(unsigned)N_H2_HE_FIT_PAR );
00582 }
00583
00584
00585 for( i=1; i<nLevels_per_elec[0]; i++ )
00586 {
00587 for( j=0; j<i; j++ )
00588 {
00589 lgDefn_H2He_coll[i][j] = false;
00590 }
00591 }
00592
00593
00594 ifp = open_data( FILE_NAME_IN, "r" );
00595
00596
00597 if( read_whole_line(line, (int)sizeof(line), ifp)==NULL )
00598 {
00599 printf("DISASTER H2_He_coll_init can't read first line of %s\n", FILE_NAME_IN);
00600 cdEXIT(EXIT_FAILURE);
00601 }
00602 sscanf(line, "%li", &magic);
00603
00604
00605 while( read_whole_line(line, (int)sizeof(line), ifp) != NULL )
00606 {
00607
00608 if( line[0]!='#' )
00609 {
00610 sscanf(line, "%i%i%i%i%c%c%c%c%lf%lf%lf%lf%lf%lf%lf%lf%lf", &h2_i,
00611 &h2_f, &he_i, &he_f,&space, &space, &space, &quality,
00612 &error, &par[0], &par[1], &par[2], &par[3], &par[4],
00613 &par[5], &par[6], &par[7]);
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629
00630
00631
00632
00633
00634
00635 if( par[3] < 0. )
00636 {
00637
00638 par[3] = -par[3];
00639 }
00640 if( par[6] < 0. )
00641 {
00642
00643 par[6] = -par[6];
00644 }
00645
00646
00647 --h2_f;
00648 --h2_i;
00649
00650 lgDefn_H2He_coll[h2_i][h2_f] = true;
00651 for( i=0; i<N_H2_HE_FIT_PAR; i++ )
00652
00653 H2_He_coll_fit_par[h2_i][h2_f][i] = (realnum)par[i];
00654 }
00655 }
00656 fclose(ifp);
00657 return magic;
00658 }
00659
00660
00661
00662
00663
00664 double H2_He_coll(int init, int final, double temp)
00665 {
00666
00667 double k, t3Plus1, b2, c2, f2, t3;
00668
00669 DEBUG_ENTRY( "H2_He_coll()" );
00670
00671
00672 if( temp<2 || temp > 1e8 )
00673 {
00674 k = -1;
00675 }
00676 else if( init <= final )
00677 {
00678 k = -1;
00679 }
00680
00681 else if( init < 0 || init >302 || final < 0 || final > 302 )
00682 {
00683 k = -1;
00684 }
00685
00686 else if( !lgDefn_H2He_coll[init][final] )
00687 {
00688 k = -1;
00689 }
00690
00691 else if( lgDefn_H2He_coll[init][final] )
00692 {
00693
00694
00695
00696
00697 double sum1 , sum2;
00698
00699
00700
00701
00703 temp = MIN2( 1e4 , temp );
00704
00705 t3 = temp/1e3;
00706
00707 t3Plus1 = t3+1;
00708 b2 = H2_He_coll_fit_par[init][final][1]/(H2_He_coll_fit_par[init][final][3]*t3+1);
00709 c2 = H2_He_coll_fit_par[init][final][2]/(t3Plus1*t3Plus1);
00710 {
00711 enum {DEBUG_LOC=false};
00712 if( DEBUG_LOC )
00713 {
00714 fprintf(ioQQQ,"bug H2 He coll\t%i %i %.3e %.3e %.3e \n",
00715 init,final,
00716 H2_He_coll_fit_par[init][final][5],
00717 H2_He_coll_fit_par[init][final][6]*t3+1,
00718 H2_He_coll_fit_par[init][final][7]
00719
00720 );
00721 }
00722 }
00723
00724 sum1 = H2_He_coll_fit_par[init][final][7] * log10( H2_He_coll_fit_par[init][final][6]*t3+1. );
00725
00726 if( fabs(sum1)< 38. )
00727 {
00728
00729
00730
00731
00732 f2 = H2_He_coll_fit_par[init][final][5]/pow(10. , sum1 );
00733 }
00734 else
00735 f2= 0.;
00736 {
00737 enum {DEBUG_LOC=false };
00738 if( DEBUG_LOC )
00739 {
00740 fprintf(ioQQQ,"bug H2 He coll\t%i %i %.3e %.3e %.3e %.3e %.3e sum %.3e %.3e \n",
00741 init,final,
00742 H2_He_coll_fit_par[init][final][0],
00743 b2,
00744 c2,
00745 H2_He_coll_fit_par[init][final][4],
00746 f2 ,
00747 H2_He_coll_fit_par[init][final][0]+b2+c2,
00748 H2_He_coll_fit_par[init][final][4]+f2);
00749 }
00750 }
00751
00752 sum1 = H2_He_coll_fit_par[init][final][0]+b2+c2;
00753 sum2 = H2_He_coll_fit_par[init][final][4]+f2;
00754 k = 0.;
00755 if( fabs(sum1) < 38. )
00756 k += pow(10., sum1 );
00757 if( fabs(sum2) < 38. )
00758 k += pow(10., sum2 );
00759
00760 if( k>1e-6 )
00761 {
00762
00763
00764 fprintf(ioQQQ,"PROBLEM H2-He rate coefficient hit cap, upper index of %i"
00765 " lower index of %i rate was %.2e resetting to 1e-6, Te=%e\n",
00766 init , final , k , phycon.te );
00767 k = 1e-6;
00768 }
00769 {
00770 enum {DEBUG_LOC=false};
00771 if( DEBUG_LOC )
00772 {
00773 fprintf(ioQQQ,"DEBUG H2 He rate %.3e \n",
00774 k);
00775 }
00776 }
00777 }
00778
00779 else
00780 {
00781 k = 99;
00782 }
00783 return k;
00784 }