15 #define PRT_COLL false
19 #define N_H2_HE_FIT_PAR 8
27 long iVibHi,
long iRotHi,
long iVibLo,
29 long iRotLo,
long ipHi ,
long ipLo ,
35 double t3Plus1 =
phycon.
te/1000. + 1.;
36 double t3Plus1Squared =
POW2(t3Plus1);
41 {-9.9265 , -0.1048 , 0.456 },
42 {-8.281 , -0.1303 , 0.4931 },
43 {-10.0357, -0.0243 , 0.67 },
44 {-8.6213 , -0.1004 , 0.5291 },
45 {-9.2719 , -0.0001 , 1.0391 }
89 ediff =
MAX2(100., ediff );
91 gbarcoll[nColl][0] + gbarcoll[nColl][1] *
109 if(
CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][1] != 0 )
111 rate =
CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0] * 1e-10f *
129 ediff =
MAX2(100., ediff );
131 gbarcoll[nColl][0] + gbarcoll[nColl][1] *
144 else if(
CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0]!= 0 )
151 double r =
CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0] +
152 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][1]/t3Plus1 +
153 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][2]/t3Plus1Squared;
175 ediff =
MAX2(100., ediff );
177 gbarcoll[nColl][0] + gbarcoll[nColl][1] *
181 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] *= 100.;
200 enum {DEBUG_LOC=
false};
203 fprintf(
ioQQQ,
"bugcoll\tiVibHi\t%li\tiRotHi\t%li\tiVibLo\t%li\tiRotLo\t%li\tcoll\t%.2e\n",
204 iVibHi,iRotHi,iVibLo,iRotLo,
205 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] );
214 long int numb_coll_trans = 0;
216 long int iElecHi , iElecLo , ipHi , iVibHi , iRotHi ,
217 ipLo , iVibLo , iRotLo , nColl;
222 fprintf(
ioQQQ,
"H2 coll deex rate coef\n"
223 "VibHi\tRotHi\tVibLo\tRotLo\trate\n");
228 fprintf(
ioQQQ,
"H2 set collision rates\n");
264 for( ipLo=0; ipLo<ipHi; ++ipLo )
270 ASSERT( energy_wn[0][iVibHi][iRotHi] - energy_wn[0][iVibLo][iRotLo] > 0.);
282 if(
PRT_COLL && iVibHi == 1 && iRotHi==3)
283 fprintf(
ioQQQ,
"%li\t%li\t%li\t%li",
284 iVibHi,iRotHi,iVibLo,iRotLo);
287 H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] =
289 ipHi , ipLo , nColl );
290 if(
PRT_COLL && iVibHi == 1 && iRotHi==3)
291 fprintf(
ioQQQ,
"\t%.2e",
H2_CollRate[iVibHi][iRotHi][iVibLo][iRotLo][nColl] );
293 if(
PRT_COLL && iVibHi == 1 && iRotHi==3)
318 excit1 =
sexp(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyK/te_used);
319 excit =
sexp( -(
POW2(5.30-460./te_used)-21.2) )*1e-13;
322 excit*
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->g/
323 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Hi->g /
339 excit =
sexp( -(
POW2(6.36-373./te_used)-34.5) )*1e-13;
340 excit1 =
sexp(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyK/te_used);
342 excit*
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->g/
343 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Hi->g /
358 excit =
sexp( -(
POW2(5.35-454./te_used)-23.1 ) )*1e-13;
359 excit1 =
sexp(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyK/te_used);
361 excit*
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->g/
362 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Hi->g /
391 " collision rates updated for new temp, number of trans is %li\n",
412 "H2_coll_He_LeBourlot.dat",
413 "H2_coll_H2ortho.dat",
414 "H2_coll_H2para.dat",
420 const char* chFilename;
422 long int iVibHi , iVibLo , iRotHi , iRotLo;
423 long int magic_expect = -1;
432 magic_expect = 71106;
433 chFilename =
"H2_coll_H_07.dat";
438 magic_expect = 20429;
439 chFilename =
"H2_coll_H_99.dat";
442 else if( nColl == 1 )
449 long int magic_found,
450 magic_expect = 70513;
457 chFilename =
"H2_coll_He_ORNL.dat";
460 fprintf(
ioQQQ,
"The H2 - He collision data file H2_coll_He_ORNL.dat does not have the correct magic number.\n");
461 fprintf(
ioQQQ,
"I found %li but expected %li\n", magic_found , magic_expect );
469 magic_expect = 20429;
471 chFilename =
"H2_coll_He_LeBourlot.dat";
477 magic_expect = 20429;
478 chFilename = cdDATAFILE[nColl];
486 fprintf(
ioQQQ,
" H2_CollidRateRead could not read first line of %s\n", chFilename );
495 if( n1 != magic_expect )
498 " H2_CollidRateRead: the version of %s is not the current version.\n", chFilename );
500 " I expected to find the number %li and got %li instead.\n" ,
502 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
506 while(
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) != NULL )
511 sscanf(chLine,
"%li\t%li\t%li\t%li\t%le\t%le\t%le",
512 &iVibHi ,&iRotHi , &iVibLo , &iRotLo , &a[0],&a[1],&a[2] );
515 ASSERT( iRotHi >= 0 && iVibHi >= 0 && iRotLo >= 0 && iVibLo >=0 );
530 if( !( (iVibHi == iVibLo) && (iRotHi == iRotLo )) )
561 int h2_i, h2_f, he_i, he_f;
585 for( i=1; i<nLevels_per_elec[0]; i++ )
599 printf(
"DISASTER H2_He_coll_init can't read first line of %s\n", FILE_NAME_IN);
602 sscanf(line,
"%li", &magic);
610 sscanf(line,
"%i%i%i%i%c%c%c%c%lf%lf%lf%lf%lf%lf%lf%lf%lf", &h2_i,
611 &h2_f, &he_i, &he_f,&space, &space, &space, &quality,
612 &error, &par[0], &par[1], &par[2], &par[3], &par[4],
613 &par[5], &par[6], &par[7]);
667 double k, t3Plus1,
b2, c2, f2, t3;
672 if( temp<2 || temp > 1e8 )
676 else if( init <=
final )
681 else if( init < 0 || init >302 || final < 0 || final > 302 )
703 temp =
MIN2( 1e4 , temp );
711 enum {DEBUG_LOC=
false};
714 fprintf(
ioQQQ,
"bug H2 He coll\t%i %i %.3e %.3e %.3e \n",
726 if( fabs(sum1)< 38. )
737 enum {DEBUG_LOC=
false };
740 fprintf(
ioQQQ,
"bug H2 He coll\t%i %i %.3e %.3e %.3e %.3e %.3e sum %.3e %.3e \n",
755 if( fabs(sum1) < 38. )
756 k += pow(10., sum1 );
757 if( fabs(sum2) < 38. )
758 k += pow(10., sum2 );
764 fprintf(
ioQQQ,
"PROBLEM H2-He rate coefficient hit cap, upper index of %i"
765 " lower index of %i rate was %.2e resetting to 1e-6, Te=%e\n",
770 enum {DEBUG_LOC=
false};
773 fprintf(
ioQQQ,
"DEBUG H2 He rate %.3e \n",