29                         long nHi, 
long lHi, 
long sHi, 
long jHi, 
 
   30                         long nLo, 
long lLo, 
long sLo, 
long jLo );
 
   32 STATIC double CS_l_mixing_S62( 
double deltaE_eV, 
double IP_Ryd_ground, 
long gLo, 
double Aul, 
long nelem, 
long Collider, 
double temp );
 
   55         class StarkCollTransProb_VF01;
 
   56         class StarkCollTransProb_VOS12QM;
 
   70                                                                 double tauLo_1, 
double IP_Ryd_Hi_1, 
double IP_Ryd_Lo_1, 
long Collider_1, 
double temp_1) :
 
   81                         if( ! ( s > 0 && 
n > 0 ) ) 
 
   83                                 fprintf( 
ioQQQ, 
"invalid parameter for my_Integrand_VF01_E\n" );
 
  109                         double reduced_b_maxa, reduced_b_maxb;
 
  135                                         double quantum_defect1  = (double)n- (
double)
nelem/sqrt(
IP_Ryd_Lo);
 
  136                                         double quantum_defect2  = (double)n- (
double)
nelem/sqrt(
IP_Ryd_Hi);
 
  139                                         ASSERT( fabs(quantum_defect1)  < 1.0 );
 
  140                                         ASSERT( fabs(quantum_defect1)  > 0.0 );
 
  141                                         ASSERT( fabs(quantum_defect2)  < 1.0 );
 
  142                                         ASSERT( fabs(quantum_defect2)  > 0.0 );
 
  145                                         double omega_qd1 = fabs( 5.* quantum_defect1 * (1.-0.6*
POW2((
double)
l/(
double)n)) / 
POW3( (
double)n ) / (
double)
l );
 
  147                                         double omega_qd2 = fabs( 5.* quantum_defect2 * (1.-0.6*
POW2((
double)
lp/(
double)n)) / 
POW3( (
double)n ) / (
double)
lp );
 
  149                                         omega_qd = 0.5*( omega_qd1 + omega_qd2 );
 
  169                                                 double PS_crit = deltaE_eV*
tauLo/HBAReV;
 
  171                                                         reduced_b_maxb = 1.12*HBAReV*vred/deltaE_eV/
aveRadius;
 
  182                                                         meanb = 
MIN2(meanb,reduced_b_maxa);
 
  185                                                         meanb = reduced_b_maxa;
 
  186                                                 double beta_brock= meanb*abs(deltaE_eV)/(HBAReV*4.*PI*vred);
 
  187                                                 if (beta_brock >= 0.4)
 
  188                                                         reduced_b_maxb = 1.12*HBAReV*vred/deltaE_eV/
aveRadius;
 
  210                 double col_str = collision_strength_VF01<P>( 
ipISO, EOverKT * 
temp / TE1RYD,
 
  212                 return exp( -1.*EOverKT ) * col_str;
 
  226                                                                 double tauLo_1, 
double IP_Ryd_Hi_1, 
double IP_Ryd_Lo_1, 
long Collider_1, 
double temp_1) :
 
  227                 data(ipISO_1, nelem_1, n_1, l_1, lp_1, s, gLo_1,
 
  228                           tauLo_1, IP_Ryd_Hi_1, IP_Ryd_Lo_1, Collider_1, temp_1) {}
 
  232                 double EOverKT = -log(y);
 
  234                 double col_str = collision_strength_VF01<P>( 
data.ipISO, EOverKT * 
data.temp / TE1RYD,
 
  242         long i, i1, j, nelem, ipHi, ipLo;
 
  266                 fprintf( 
ioQQQ, 
" HeCollidSetup could not read first line of he1_cs.dat.\n");
 
  270         i1 = (long)
FFmtRead(chLine,&i,
sizeof(chLine),&lgEOL);
 
  278                         " HeCollidSetup: the version of he1_cs.dat is not the current version.\n" );
 
  280                         " HeCollidSetup: I expected to find the number %i and got %li instead.\n" ,
 
  282                 fprintf( 
ioQQQ, 
"Here is the line image:\n==%s==\n", chLine );
 
  288         while( 
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) != NULL )
 
  291                 if( chLine[0] == 
'#')
 
  296                 char *chTemp = strtok(chLine,
" \t\n");
 
  297                 while( chTemp != NULL )
 
  299                         CSTemp.push_back( atof(chTemp) );
 
  300                         chTemp = strtok(NULL,
" \t\n");
 
  306                 fprintf( 
ioQQQ, 
" HeCollidSetup could not find line in CS temperatures in he1_cs.dat.\n");
 
  316                 for( 
long ipHi=1; ipHi < numLevs; ++ipHi )
 
  319                         for( 
long ipLo=0; ipLo<ipHi; ++ipLo )
 
  323                 for( 
long ipHi=1; ipHi < numLevs; ++ipHi )
 
  325                         for( 
long ipLo=0; ipLo<ipHi; ++ipLo )
 
  327                                 for( 
unsigned i=0; i< 
CSTemp.size(); ++i )
 
  329                                         HeCS[ipHi][ipLo][i] = -1.f;
 
  337         while( 
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) != NULL )
 
  341                 if( (chLine[0] == 
' ') || (chLine[0]==
'\n') )
 
  343                 if( chLine[0] != 
'#')
 
  347                         ipLo = (long)
FFmtRead(chLine,&j,
sizeof(chLine),&lgEOL);
 
  348                         ipHi = (long)
FFmtRead(chLine,&j,
sizeof(chLine),&lgEOL);
 
  356                                 for( 
long i=0; i<3; ++i )
 
  358                                         if( (chTemp = 
strchr_s( chTemp, 
'\t' )) == NULL )
 
  366                                 for( 
unsigned i=0; i< 
CSTemp.size(); ++i )
 
  369                                         if( (chTemp = 
strchr_s( chTemp, 
'\t' )) == NULL )
 
  371                                                 fprintf( 
ioQQQ, 
" HeCollidSetup could not scan cs, current indices: %li %li\n", ipHi, ipLo );
 
  375                                         sscanf( chTemp , 
"%le" , &a );
 
  376                                         HeCS[ipHi][ipLo][i] = (
realnum)a;
 
  424                                 nHi, lHi, sHi, jHi, gHi, IP_Ryd_Hi,
 
  425                                 nLo, lLo, sLo, jLo, gLo, IP_Ryd_Lo,
 
  426                                 Aul, tauLo, EnerWN, EnerErg );
 
  434                                         long nHi, 
long lHi, 
long sHi, 
long jHi, 
long gHi, 
double IP_Ryd_Hi,
 
  435                                         long nLo, 
long lLo, 
long sLo, 
long jLo, 
long gLo, 
double IP_Ryd_Lo,
 
  436                                         double Aul, 
double tauLo, 
double EnerWN, 
double EnerErg )
 
  442         const char *where = 
"      ";
 
  451         double deltaE_eV = EnerErg/EN1EV;
 
  454         if( nLo==2 && lLo==1 && sLo==3 )
 
  456                 factor1 *= (2.f*jLo+1.f) / 9.f;
 
  460         if( nHi==2 && lHi==1 && sHi==3 )
 
  462                 factor1 *= (2.f*jHi+1.f) / 9.f;
 
  470         if( (cs = 
HeCSTableInterp( nelem, Collider, nHi, lHi, sHi, jHi, nLo, lLo, sLo, jLo )) >= 0.f ) 
 
  473                 if( nLo==2 && lLo==1 && sLo==3 && nHi==2 && lHi==1 && sHi==3 ) 
 
  493                         if( lHi==0 && sHi==3 ) 
 
  494                                 cs = 0.25f/
POW2(nelem+1.f);
 
  495                         else if( lHi==0 && sHi==1 ) 
 
  496                                 cs = 0.4f/
POW2(nelem+1.f);
 
  497                         else if( lHi==1 && sHi==3 && jHi==0 ) 
 
  498                                 cs = 0.15f/
POW2(nelem+1.f);
 
  499                         else if( lHi==1 && sHi==3 && jHi==1 ) 
 
  500                                 cs = 0.45f/
POW2(nelem+1.f);
 
  501                         else if( lHi==1 && sHi==3 && jHi==2 ) 
 
  502                                 cs = 0.75f/
POW2(nelem+1.f);
 
  503                         else if( lHi==1 && sHi==1 ) 
 
  504                                 cs = 1.3f/
POW2(nelem+1.f);
 
  509                 else if( nLo==2 && lLo==0 && sLo==3 )
 
  511                         if( lHi==0 && sHi==1 ) 
 
  512                                 cs = 2.75f/
POW2(nelem+1.f);
 
  513                         else if( lHi==1 && sHi==3 && jHi==0 ) 
 
  514                                 cs = 60.f/
POW2(nelem+1.f);
 
  515                         else if( lHi==1 && sHi==3 && jHi==1 ) 
 
  516                                 cs = 180.f/
POW2(nelem+1.f);
 
  517                         else if( lHi==1 && sHi==3 && jHi==2 ) 
 
  518                                 cs = 300.f/
POW2(nelem+1.f);
 
  519                         else if( lHi==1 && sHi==1 ) 
 
  520                                 cs = 5.8f/
POW2(nelem+1.f);
 
  525                 else if( nLo==2 && lLo==0 && sLo==1 )
 
  527                         if( lHi==1 && sHi==3 && jHi==0 ) 
 
  528                                 cs = 0.56f/
POW2(nelem+1.f);
 
  529                         else if( lHi==1 && sHi==3 && jHi==1 ) 
 
  530                                 cs = 1.74f/
POW2(nelem+1.f);
 
  531                         else if( lHi==1 && sHi==3 && jHi==2 ) 
 
  532                                 cs = 2.81f/
POW2(nelem+1.f);
 
  533                         else if( lHi==1 && sHi==1 ) 
 
  534                                 cs = 190.f/
POW2(nelem+1.f);
 
  539                 else if( nLo==2 && lLo==1 && sLo==3 && jLo==0 )
 
  541                         if( lHi==1 && sHi==3 && jHi==1 ) 
 
  542                                 cs = 8.1f/
POW2(nelem+1.f);
 
  543                         else if( lHi==1 && sHi==3 && jHi==2 ) 
 
  544                                 cs = 8.2f/
POW2(nelem+1.f);
 
  545                         else if( lHi==1 && sHi==1 ) 
 
  546                                 cs = 3.9f/
POW2(nelem+1.f);
 
  551                 else if( nLo==2 && lLo==1 && sLo==3 && jLo==1 )
 
  553                         if( lHi==1 && sHi==3 && jHi==2 ) 
 
  554                                 cs = 30.f/
POW2(nelem+1.f);
 
  555                         else if( lHi==1 && sHi==1 ) 
 
  556                                 cs = 11.7f/
POW2(nelem+1.f);
 
  561                 else if( nLo==2 && lLo==1 && sLo==3 && jLo==2 )
 
  563                         ASSERT( lHi==1 && sHi==1 );
 
  574         else if( (nHi==nLo) && (sHi==sLo) )
 
  699                                 long nLo1 = nLo, nHi1 = nHi;
 
  739                                 fprintf(
ioQQQ,
"Check VF01 %ld %ld %ld %ld %ld %ld %g: %g (%g) VOS12 %g (%g) VOS12QM %g PS64 %g\n",
 
  740                                                 Collider,nLo1,lLo1,lHi1,sLo,nelem,
phycon.
te,
 
  745                                                 CS_l_mixing_PS64(nelem,tauLo,nelem+1.-ipISO1,nLo1,lLo1,gHi,lHi1,deltaE_eV,Collider));
 
  746                                 double rate_t1, rate_t2, rate_t;
 
  747                                 double oHi=1./(double)gHi;
 
  748                                 double ogLo=1./(double)gLo;
 
  751                                 double ratef = 
powpq(ELECTRON_MASS/reduced_mass_collider_system,3,2) * COLL_CONST/
phycon.
sqrte;
 
  753                                 rate_t1 = cs1*ratef*oHi;
 
  754                                 rate_t2 = cs2*ratef*ogLo;
 
  755                                 rate_t = rate_t1+rate_t2;
 
  756                                 fprintf(
ioQQQ,
"Rates for H %ld %ld %ld %ld %ld %ld %ld %ld %g: %g %g \n",
 
  757                                                 nLo1,lLo1,lHi1,sLo,sHi,jLo,jHi,nelem,
phycon.
te,rate_t, 
dense.
eden);
 
  814         else if( nHi != nLo )
 
  824                                 fixit( 
"This should not be set here!" );
 
  843                                 double x = log10(
MAX2(34.7,EnerWN));
 
  871                                 if( EnerWN < 25119.f )
 
  887                         fixit( 
"Use Percival and Richards here." );
 
  912                 enum {DEBUG_LOC=
false};
 
  915                 if( DEBUG_LOC &&   (cs > 0.f) ) 
 
  917                         fprintf(
ioQQQ,
"DEBUGGG HeCSInterp %li\t%li\t%li\t%li\t-\t%li\t%li\t%li\t%e\t%s\n",
 
  930                         long nHi, 
long lHi, 
long sHi, 
long jHi, 
 
  931                         long nLo, 
long lLo, 
long sLo, 
long jLo )
 
  943                 fixit( 
"HeCS allocation must be changed in order to remove this and do collapsed levels here." );
 
  947         else if( lLo < 0 || lHi < 0 )
 
  955         if( nLo==2 && lLo==1 && sLo==3 )
 
  957                 ASSERT( jLo>=0 && jLo<=2 );
 
  960         if( nHi==2 && lHi==1 && sHi==3 )
 
  962                 ASSERT( jHi>=0 && jHi<=2 );
 
  969         if( HeCS[ipHi][ipLo][0] < 0.f )
 
  979                 cs = HeCS[ipHi][ipLo][0];
 
  983                 cs = HeCS[ipHi][ipLo][
CSTemp.size()-1];
 
  994                 ASSERT( (flow >= 0.) && (flow <= 1.) );
 
  996                 cs = HeCS[ipHi][ipLo][ipArray] * (1.-flow) +
 
  997                         HeCS[ipHi][ipLo][ipArray+1] * flow;
 
 1009                 deltaE(deltaE), osc_strength(osc_strength), temp(temp), I_energy_eV(I_energy_eV)
 
 1011         void operator() (
const double proj_energy_overKT[], 
double res[], 
long n) 
const;
 
 1016 STATIC double CS_l_mixing_S62( 
double deltaE_eV, 
double IP_Ryd_ground, 
long gLo, 
double Aul, 
long nelem, 
long Collider, 
double temp )
 
 1026         ASSERT( TRANS_PROB_CONST*
POW2(deltaE_eV/WAVNRYD/EVRYD) > 0. );
 
 1028         double osc_strength = Aul / (TRANS_PROB_CONST*
POW2(deltaE_eV/WAVNRYD/EVRYD));
 
 1029         double I_energy_eV = EVRYD * IP_Ryd_ground;
 
 1045         double elow = 0., emid = 1.*energy_factor, ehigh = 10.*energy_factor;
 
 1048         double coll_str = S62.
sum( elow, emid );
 
 1049         coll_str += S62.
sum( emid, ehigh );
 
 1051         coll_str /= energy_factor;
 
 1055         coll_str = 
ConvCrossSect2CollStr(coll_str*PI*BOHR_RADIUS_CM*BOHR_RADIUS_CM, (
double)gLo, 1.0, reduced_mass);
 
 1064         if( zOverB2 > 100. )
 
 1066                 betaone = sqrt( 1./zOverB2 );
 
 1068         else if( zOverB2 < 0.54 )
 
 1071                 double logz = log(zOverB2/PI);
 
 1072                 betaone = (1./3.)*(1.28-logz);
 
 1073                 if( betaone > 2.38 )
 
 1076                         betaone += -0.5*logz;
 
 1082                 long ip_zOverB2 = 0;
 
 1083                 static const double zetaOVERbeta2[101] = {
 
 1084                         1.030E+02,9.840E+01,9.402E+01,8.983E+01,8.583E+01,8.200E+01,7.835E+01,7.485E+01,
 
 1085                         7.151E+01,6.832E+01,6.527E+01,6.236E+01,5.957E+01,5.691E+01,5.436E+01,5.193E+01,
 
 1086                         4.961E+01,4.738E+01,4.526E+01,4.323E+01,4.129E+01,3.943E+01,3.766E+01,3.596E+01,
 
 1087                         3.434E+01,3.279E+01,3.131E+01,2.989E+01,2.854E+01,2.724E+01,2.601E+01,2.482E+01,
 
 1088                         2.369E+01,2.261E+01,2.158E+01,2.059E+01,1.964E+01,1.874E+01,1.787E+01,1.705E+01,
 
 1089                         1.626E+01,1.550E+01,1.478E+01,1.409E+01,1.343E+01,1.280E+01,1.219E+01,1.162E+01,
 
 1090                         1.107E+01,1.054E+01,1.004E+01,9.554E+00,9.094E+00,8.655E+00,8.234E+00,7.833E+00,
 
 1091                         7.449E+00,7.082E+00,6.732E+00,6.397E+00,6.078E+00,5.772E+00,5.481E+00,5.202E+00,
 
 1092                         4.937E+00,4.683E+00,4.441E+00,4.210E+00,3.989E+00,3.779E+00,3.578E+00,3.387E+00,
 
 1093                         3.204E+00,3.031E+00,2.865E+00,2.707E+00,2.557E+00,2.414E+00,2.277E+00,2.148E+00,
 
 1094                         2.024E+00,1.907E+00,1.795E+00,1.689E+00,1.589E+00,1.493E+00,1.402E+00,1.316E+00,
 
 1095                         1.235E+00,1.157E+00,1.084E+00,1.015E+00,9.491E-01,8.870E-01,8.283E-01,7.729E-01,
 
 1096                         7.206E-01,6.712E-01,6.247E-01,5.808E-01,5.396E-01};
 
 1098                 ASSERT( zOverB2 >= zetaOVERbeta2[100] );
 
 1101                 long ilo=0, ihi = 100;
 
 1104                         long imid = (ilo+ihi)/2.;
 
 1105                         if ( zetaOVERbeta2[imid] > zOverB2 )
 
 1112                 ASSERT( ( zOverB2 < zetaOVERbeta2[ilo] ) && ( zOverB2 >= zetaOVERbeta2[ilo+1] ) );
 
 1116                 ASSERT( (ip_zOverB2 >=0) && (ip_zOverB2 < 100) );
 
 1118                 const double fp = 1.023292992280754131; 
 
 1119                 betaone = 
exp10( (
double)ip_zOverB2/100. - 1.)*
 
 1120                         ( (zOverB2 - zetaOVERbeta2[ip_zOverB2]) * fp 
 
 1121                          -zOverB2 + zetaOVERbeta2[ip_zOverB2+1] )/ 
 
 1122                          (zetaOVERbeta2[ip_zOverB2+1] - zetaOVERbeta2[ip_zOverB2]);
 
 1136         for( 
long i=0; i < n; ++i )
 
 1137                 x[i] = -proj_energy[i]*EVDEGK/
temp;
 
 1140         for( 
long i=0; i < n; ++i )
 
 1146                 double Dubya = proj_energy[i] + 0.5*
deltaE;
 
 1164                 double zeta_of_betaone = zOverB2 * 
POW2(betaone);
 
 1168                 double k0val, k1val;
 
 1170                 double cs2 = 0.5*zeta_of_betaone + betaone * k0val * k1val;
 
 1180                 res[i] = val[i] * (proj_energy[i]+
deltaE)/EVRYD * cross_section;
 
 1192                 double target_charge,
 
 1201         double RD,R12,Sij,Plowb,RC,RC1,EC,ED,
 
 1202         reduced_mass, reduced_mass_2_emass,bracket,contr, rate;
 
 1204         double eEm,eED,eEC,eEmt1Em;
 
 1210         const double tau_zero = 2.41889e-17;
 
 1211         long lmax = 
MAX2(l,lp);
 
 1212         double n2 = (double)n*(
double)n;
 
 1213         double lmax2 = (double)lmax*(
double)lmax;
 
 1215         reduced_mass_2_emass = reduced_mass / ELECTRON_MASS;
 
 1222         double vred = sqrt(tempryd/reduced_mass_2_emass);
 
 1224         double tau_ua = tau/tau_zero;
 
 1230         Sij = 9.*n2*lmax*(n2-lmax2)/(2.*target_charge*target_charge);
 
 1234         R12 = 2. * 
pow2(ChargIncoming)/(3.*Plowb*vred*vred*(2.*l+1));
 
 1240         RD = sqrt(tempryd/(8.*PI*dens_au));
 
 1243         RC1 = 0.72*tau_ua*vred;
 
 1249                 double PS_crit = deltaE_eV*tau/HBAReV;
 
 1253                                                                 / (PI2*ELEM_CHARGE_ESU);
 
 1258                         meanb = 
MIN2(meanb,bmax);
 
 1262                 double v = sqrt(2.*BOLTZMANN*
phycon.
te/reduced_mass);
 
 1263                 double beta_brock= meanb*abs(deltaE_eV)/(HBAReV*4.*PI*v);
 
 1269                         RC1 = 1.12*HBAReV*vred/deltaE_eV/tau_zero;
 
 1273                         RC1 = 1.12*HBAReV*vred/deltaE_eV/tau_zero;
 
 1290         double Emin = R12/(RC*RC);
 
 1303         double Dnl = 2. * 
pow2(ChargIncoming)*Sij/(3.*(2.*l+1.));
 
 1308         EC = RD*RD/(RC1*RC1);
 
 1310         eEm = exp(-1.*Emin);
 
 1313         eEmt1Em = eEm*(1.+Emin);
 
 1318         if ( fb1 == 1 && fb2 == 1)
 
 1319                 bracket = eEm + 
e1(Emin);
 
 1323                         bracket = fb1*eEm+ fb2*
e1(Emin); 
 
 1327                                 bracket = fb1*eEm + 2.*
e1(Emin) - 
e1(EC);
 
 1329                                 bracket = fb1*eED + 
e1(ED);
 
 1338                         contr = (1.-eEmt1Em)/Emin;
 
 1343                                 contr = 2.*( 1. -eEmt1Em)/
pow2(Emin);
 
 1348                                 contr = ( 2. -eEC*(2.+EC))/
pow2(Emin);
 
 1349                                 contr -= eEm*(1.+1./ED);
 
 1366         double units = 2.*
pow(BOHR_RADIUS_CM,3)*sqrt(PI)/vred/tau_zero;
 
 1368         rate = units * Dnl* bracket;
 
 1373         cs = rate / ( COLL_CONST * 
powpq(reduced_mass_2_emass, -3, 2) ) * 
phycon.
sqrte * g;
 
 1385         double target_charge,
 
 1396                 TwoLogDebye, TwoLogRc1, 
 
 1398                 bestfactor,     factorpart,
 
 1399                 reduced_mass, reduced_mass_2_emass,
 
 1413         reduced_mass_2_emass = reduced_mass / ELECTRON_MASS;
 
 1426         TwoLogRc1 = 10.95 + log10( 
phycon.
te * tau * tau / reduced_mass_2_emass );
 
 1432                 double PS_crit = deltaE_eV*tau/HBAReV;
 
 1436                                                                 / (2*ELEM_CHARGE_ESU);
 
 1437                 double vred = sqrt(2.*BOLTZMANN*
phycon.
te/reduced_mass);
 
 1443                 meanb = 
MIN2(meanb,bmax);
 
 1448                 double beta_brock= meanb*abs(deltaE_eV)/(HBAReV*4.*PI*vred);
 
 1449                 double deltaE_cm = deltaE_eV*EN1EV/ERG1CM;
 
 1459                         TwoLogRc1 = log10(
phycon.
te*ELECTRON_MASS/
pow2(deltaE_cm)/reduced_mass)-11.22;
 
 1466                         TwoLogRc1 = log10(
phycon.
te*ELECTRON_MASS/
pow2(deltaE_cm)/reduced_mass)-11.22;
 
 1473         double Dnl = 
POW2( ChargIncoming / target_charge) * 6. * 
POW2( (
double)n) *
 
 1474                 ( 
POW2((
double)n) - 
POW2((
double)l) - l - 1);
 
 1491         long lmax = 
MAX2(l,lp);
 
 1495         double Dnlup = 
POW2( ChargIncoming / target_charge) * 6. * 
POW2( (
double)n) * lmax * (n*n-lmax*lmax)  / 
double( 2*l+1 );
 
 1506         factorpart = (11.54 + log10( 
phycon.
te  / Dnl / reduced_mass_2_emass ) );
 
 1508         if( (factor1 = factorpart + TwoLogDebye) <= 0.)
 
 1511         if( (factor2 = factorpart + TwoLogRc1) <= 0.)
 
 1515         bestfactor = 
MIN2(factor1,factor2);
 
 1517         ASSERT( bestfactor > 0. );
 
 1520         if( bestfactor > 100. )
 
 1526         rate = 9.93e-6 * sqrt( reduced_mass_2_emass  ) * Dnlup / 
phycon.
sqrte * bestfactor;
 
 1531         cs = rate / ( COLL_CONST * 
powpq(reduced_mass_2_emass, -3, 2) ) *
 
 1564         integType func(ipISO,nelem,n,l,lp,s,gLo,tauLo,IP_Ryd_Hi,IP_Ryd_Lo,Collider,temp);
 
 1578                 coll_str = func(1.0)*exp(1.0);
 
 1587                         coll_str = VF01_E.
sum( 0.0, 1.0 );
 
 1588                         coll_str += VF01_E.
sum( 1.0, 10.0 );
 
 1592                         double xn=0., xl = 10.;
 
 1595                                 while (xl < 100. && func(xl/2.) == 0.)
 
 1603                                 VF01_ER(integrate::Midpoint<integType>(func,xn,xl));
 
 1605                         coll_str = VF01_ER.
sum();
 
 1612                                         integLogType funcl(ipISO,nelem,n,l,lp,s,gLo,tauLo,IP_Ryd_Hi,IP_Ryd_Lo,Collider,temp);
 
 1613                                         double x1n = 0.0, x1x = 1.0;
 
 1615                                                 double x1m = 0.5*(x1n+x1x);
 
 1616                                                 if (funcl(x1m) > 0.)
 
 1620                                         } 
while ((x1x-x1n) > 0.001);
 
 1622                                                 VF01_ESL(integrate::Midpoint<integLogType>(funcl,0.0,x1x));
 
 1625                                         Integrator<integType, Gaussian32> VF01_E(func);
 
 1626                                         double coll_strg = VF01_E.
sum( 0.0, 1.0 );
 
 1627                                         coll_strg += VF01_E.
sum( 1.0, 10.0 );
 
 1630                                                 VF01_ERL(integrate::Midpoint<integLogType>(funcl,0.0,x1x));
 
 1632                                         fprintf(ioQQQ,"Int %ld %ld->%ld ER %g(%g) %ld ESL %g(%g) %ld ERL %g(%g) %ld G %g 
S %g\n",
 
 1645                                                           coll_str,VF01_ER.error(),VF01_ER.evals()
 
 1670                 return CS_l_mixing<StarkCollTransProb_VF01>(ipISO,nelem,n,l,lp,s,gLo,tauLo,
 
 1671                                 IP_Ryd_Hi,IP_Ryd_Lo,temp,Collider);
 
 1688                 return CS_l_mixing<StarkCollTransProb_VOS12QM>(ipISO,nelem,n,l,lp,s,gLo,
 
 1689                                 tauLo,IP_Ryd_Hi,IP_Ryd_Lo,temp,Collider);
 
 1696                 double m_alpha, m_alphamin, m_sinfac;
 
 1698                 Chi_VF01(
double alpha, 
double alphamin) : m_alpha(alpha), m_alphamin(alphamin) 
 
 1708                                 double deltaPhi = -PI;
 
 1709                                 m_sinfac = 
pow2(sin(0.5*deltaPhi*sqrt(1+m_alpha*m_alpha)));
 
 1711                 double sinChiOver2sq()
 const 
 1714                                 if( m_alpha <= m_alphamin)
 
 1718                                 double denom = (1.+m_alpha*m_alpha), ratio = m_alpha/denom;
 
 1719                                 return 4.*ratio*ratio*m_sinfac*(denom-m_alpha*m_alpha*m_sinfac);
 
 1721                 double cosChi()
 const 
 1723                                 double alphasq = 
pow2(m_alpha);
 
 1724                                 return 1.-2.*alphasq*m_sinfac/(1.+alphasq);
 
 1728         class StarkCollTransProb_VF01
 
 1731                 double cosU1, cosU2, sinU1sinU2;                
 
 1733                 StarkCollTransProb_VF01( 
long int n1, 
long int l1, 
long int lp1) : n(n1), l(l1), lp(lp1)
 
 1736                                 cosU1 = 2.*
POW2((
double)l/(
double)n) - 1.;
 
 1737                                 cosU2 = 2.*
POW2((
double)lp/(
double)n) - 1.;
 
 1738                                 sinU1sinU2 = sqrt( ( 1. - cosU1*cosU1 )*( 1. - cosU2*cosU2 ) );
 
 1740                 double operator()(
double alpha, 
double alphamin) 
const;
 
 1741                 double bfun(
double alpha, 
double alphamin)
 const 
 1743                                 double sinChiOver2sq = Chi_VF01(alpha, alphamin).sinChiOver2sq();
 
 1744                                 double cosChi = 1. - 2*sinChiOver2sq;
 
 1745                                 return (cosU1*cosU2 + sinU1sinU2 - cosChi);
 
 1749         double StarkCollTransProb_VF01::operator() (
double alpha, 
double alphamin)
 const 
 1751                 DEBUG_ENTRY( 
"StarkCollTransProb_VF01::operator()()" );
 
 1753                 ASSERT( alpha >= 1e-30 );
 
 1755                 double sinChiOver2sq = Chi_VF01(alpha, alphamin).sinChiOver2sq();
 
 1762                 if( l == 0 || lp == 0 )
 
 1764                         long lf = 
max(l,lp);
 
 1765                         if( n*n*sinChiOver2sq  <= lf*lf ) 
 
 1777                                 probability = (lf+0.5) / sqrt( n*n*sinChiOver2sq * (n*n*sinChiOver2sq - lf*lf) );
 
 1782                                 probability /= (2.*l+1);
 
 1789                         if( OneMinusCosChi == 0. )
 
 1791                                 double hold = sin( deltaPhi / 2. );
 
 1793                                 OneMinusCosChi = 8. * alpha * alpha * 
POW2( hold );
 
 1797                         if( sinChiOver2sq == 0. )
 
 1803                                 double cosChi = 1. - 2*sinChiOver2sq;
 
 1805                                 double A = (cosU1*cosU2 - sinU1sinU2 - cosChi);
 
 1806                                 double B = (cosU1*cosU2 + sinU1sinU2 - cosChi);
 
 1815                                         ASSERT( sinChiOver2sq > 0. );
 
 1817                                         probability = 2.*lp/(PI*  n*n* sinChiOver2sq );
 
 1827                                                 probability *= 
ellpk( -A/(B-A) ) * sqrt( 2*sinChiOver2sq / (B - A) );
 
 1831                                                 probability *= 
ellpk( A/B ) * sqrt( 2*sinChiOver2sq / B );
 
 1841         class my_Integrand_VF01_alpha : 
public D_fp 
 1846                 my_Integrand_VF01_alpha(
long int n, 
long int l, 
long int lp, 
double alphamin) : 
 
 1847                         s( n, l, lp), alphamin(alphamin) {}
 
 1851                                 ASSERT( alpha >= 1.e-30 );
 
 1853                                 return s( alpha, alphamin )/(alpha*alpha*alpha);
 
 1855                 double bfun (
double alpha)
 const 
 1857                                 return s.bfun(alpha,alphamin);
 
 1862         class my_Integrand_VF01_beta : 
public D_fp 
 1869                 my_Integrand_VF01_beta(
long int n, 
long int l, 
long int lp, 
double alphamin) : 
 
 1870                         s( n, l, lp), alphamin(alphamin) {}
 
 1874                                 double alpha = exp(beta);
 
 1875                                 ASSERT( alpha >= 1.e-30 );
 
 1877                                 return s( alpha, alphamin )/(alpha*alpha);
 
 1879                 double bfun (
double alpha)
 const 
 1881                                 return s.bfun(alpha,alphamin);
 
 1885         class StarkCollTransProb_VOS12QM
 
 1888                 double cosU1, cosU2, sinU1sinU2;
 
 1889                 vector<double> common;
 
 1891                 StarkCollTransProb_VOS12QM( 
long int n1, 
long int l1, 
long int lp1) : n(n1), l(l1), lp(lp1), common(n)
 
 1894                         cosU1 = 2.*
POW2((
double)l/(
double)n) - 1.;
 
 1895                         cosU2 = 2.*
POW2((
double)lp/(
double)n) - 1.;
 
 1897                         sinU1sinU2 = sqrt( ( 1. - cosU1*cosU1 )*( 1. - cosU2*cosU2 ) );
 
 1898                         long Lmax = 
MIN2(n-1,lp+l), Lmin = abs(lp-l);
 
 1899                         double ffac = 1./sqrt(
double(n));
 
 1901                         for (
long L=1; L < Lmin; ++L)
 
 1903                                 ffac *= L/sqrt(
double(nsq-L*L));
 
 1907                                 fprintf(
ioQQQ,
" PROBLEM: Catastrophic underflow in VOS12 QM transition probability\n" 
 1908                                                   " Try reducing resolved levels\n");
 
 1912                         const int sjtyp = 1;
 
 1915                                 double l1min,l1max,lmatch;
 
 1917                                 rec6j(
get_ptr(common)+Lmin,lp,l,0.5*(n-1),0.5*(n-1),0.5*(n-1),
 
 1918                                                 &l1min,&l1max,&lmatch,n-Lmin,&ier);
 
 1919                                 ASSERT(Lmin == 
int(l1min) && ier >= 0);
 
 1921                         for (
long L=Lmin; L <= Lmax; ++L)
 
 1924                                         ffac *= L/sqrt(
double(nsq-L*L));
 
 1934                                         sixj1 = 
sjs(2*lp,2*l,2*L,n-1,n-1,n-1);
 
 1935                                 else if (sjtyp == 2)
 
 1936                                         sixj1 = 
SixJFull(2*lp,2*l,2*L,n-1,n-1,n-1);
 
 1939                                 common[L] = sixj1*ffac*sqrt(2.*
double(L)+1.);
 
 1942                 double operator()(
double alpha, 
double alphamin) 
const;
 
 1943                 double bfun (
double, 
double )
 const 
 1949         double StarkCollTransProb_VOS12QM::operator() (
double alpha, 
double alphamin)
 const 
 1951                 DEBUG_ENTRY( 
"StarkCollTransProb_VOS12QM::operator()()" );
 
 1952                 ASSERT( alpha >= 1e-30 );
 
 1954                 Chi_VF01 chi(alpha, alphamin);
 
 1955                 double sinChiOver2sq = chi.sinChiOver2sq();
 
 1963                 double cosChiVOS12QM = chi.cosChi();
 
 1964                 ASSERT( cosChiVOS12QM <= 1);
 
 1966                 long Lmax = 
MIN2(n-1,lp+l);
 
 1968                 for (
long L=n-1; L > Lmax; --L)
 
 1972                 double frac = 4*sinChiOver2sq;
 
 1974                 for (
long L=Lmax; L >= abs(lp-l); --L)
 
 1976                         double gegen = u.val();
 
 1982                                 double gegen1 = 
gegenbauer(n-L-1,L+1,cosChiVOS12QM);
 
 1984                                                                                  1000*DBL_EPSILON+1e-10*fabs(gegen1)))
 
 1985                                         fprintf(
ioQQQ,
"DEBUG %ld %ld %g: %g %g %g\n",n,L,cosChiVOS12QM,
 
 1986                                                           gegen1,gegen,gegen/gegen1-1.);
 
 1989                         double fac = common[L]*gegen;
 
 1992                 pqm *= 
powi(frac,abs(lp-l))*(2*lp+1);
 
 1998         void compare_VOS12()
 
 2004                         long n=30, l = 4, lp = 3, npt = 1000;
 
 2006                         StarkCollTransProb_VOS12QM qm( n, l, lp);
 
 2007                         StarkCollTransProb_VF01 cl( n, l, lp);
 
 2009                         for (
long i=0; i<npt; ++i)
 
 2011                                 double ban = 900*(i+0.5)/double(npt);
 
 2012                                 double alpha = 1.5/(ban*v);
 
 2014                                                   cl(alpha,alphamin),qm(alpha,alphamin));
 
 2020                         long n=28, l = 5, lp = 13, npt = 1000;
 
 2022                         StarkCollTransProb_VOS12QM qm( n, l, lp);
 
 2023                         StarkCollTransProb_VF01 cl( n, l, lp);
 
 2024                         for (
long i=0; i<npt; ++i)
 
 2026                                 double alpha = (i+0.5)/double(npt);
 
 2028                                                   cl(alpha,alphamin),qm(alpha,alphamin));
 
 2034                         long n=8, l = 5, lp = 6, npt = 1000;
 
 2036                         vector<StarkCollTransProb_VOS12QM> qm;
 
 2037                         for (
long i=0; i<4; ++i)
 
 2040                                 qm.push_back(StarkCollTransProb_VOS12QM( 
 
 2041                                                                          scale*n, scale*l, scale*lp));
 
 2043                         StarkCollTransProb_VF01 cl( n, l, lp);
 
 2044                         for (
long i=0; i<npt; ++i)
 
 2046                                 double alpha = (i+0.5)/double(npt);
 
 2049                                 for (vector<StarkCollTransProb_VOS12QM>::iterator it=qm.begin();
 
 2050                                           it != qm.end(); ++it)
 
 2061                         long n=30, l = 29, npt = 10000;
 
 2063                         vector<StarkCollTransProb_VOS12QM> qm;
 
 2064                         for (
long lp=0; lp<n; ++lp)
 
 2065                                 qm.push_back(StarkCollTransProb_VOS12QM( n, l, lp));
 
 2067                         for (
long i=0; i<npt; ++i)
 
 2069                                 double ban = 400*(i+0.5)/double(npt);
 
 2070                                 double alpha = 1.5/(ban*v);
 
 2072                                 for (
long lp=0; lp<n; ++lp)
 
 2074                                                           qm[lp](alpha,alphamin));
 
 2085                                                                  long nelem, 
double gLo, 
long Ztarget, 
long Collider, 
double sqrte)
 
 2088         long lmin = (lp < l) ? lp : l, dl = abs(l-lp);
 
 2089         double nlfac = double(n*n*(n*n*(l+lp)-lmin*lmin*(l+lp+2*dl)))/
 
 2092         double massratio = 
reduced_amu(nelem,Collider)/ELECTRON_MASS;
 
 2093         double rate = 1.294e-5*sqrt(massratio)*Z*Z/(Ztarget*Ztarget*sqrte) * nlfac;
 
 2094         double cs = rate / ( COLL_CONST * 
powpq(massratio, -3, 2) ) * sqrte * gLo;
 
 2100                                                                                                  double alphamin_int, 
double alphamax_int)
 
 2102         if (alphamin_int >= alphamax_int)
 
 2104         double CSIntegral = 0.;
 
 2106         double step = (alphamax_int - alphamin_int)/5.;
 
 2107         double alpha1 = alphamin_int;
 
 2108         CSIntegral += VF01_alpha.
sum( alpha1, alpha1+step );
 
 2109         CSIntegral += VF01_alpha.
sum( alpha1+step, alpha1+4.*step );
 
 2115                                                                                                          double alphamin_int, 
double alphamax_int, 
double eps)
 
 2117         if (alphamin_int >= alphamax_int)
 
 2122         double alphalo = alphamin_int;
 
 2125                 double alphahi = alphamax_int;
 
 2126                 while (alphahi-alphalo > 0.5*eps*(alphahi+alphalo))
 
 2128                         double alphamid = 0.5*(alphahi+alphalo);
 
 2129                         if (func.bfun(alphamid) <= 0.)
 
 2138                 VF01_alphaR(integrate::Midpoint<my_Integrand_VF01_beta<P> >(func,log(alphalo),log(alphamax_int)));
 
 2140         return VF01_alphaR.
sum();
 
 2145                                                                                                          double alphamin_int, double alphamax_int, double eps)
 
 2147         if (alphamin_int >= alphamax_int)
 
 2151         double alphalo = alphamin_int;
 
 2154                 double alphahi = alphamax_int;
 
 2155                 while (alphahi-alphalo > 0.5*eps*(alphahi+alphalo))
 
 2157                         double alphamid = 0.5*(alphahi+alphalo);
 
 2158                         if (func.bfun(alphamid) <= 0.)
 
 2167                 VF01_alphaR(integrate::Midpoint<my_Integrand_VF01_alpha<P> >(func,alphalo,alphamax_int));
 
 2169         return VF01_alphaR.
sum();
 
 2174                                                                                                         const my_Integrand_VF01_E<P>& vf)
 
 2179         double reduced_b_max1;
 
 2182         double reduced_vel = sqrt( 2.*E_Proj_Ryd*EN1RYD/vf.reduced_mass )/vf.RMSv;
 
 2185         ASSERT( reduced_vel > 1.e-10 );
 
 2186         ASSERT( reduced_vel < 1.e10 );
 
 2194         double alphamax = 15000./
pow2(vf.n);
 
 2209         double reduced_b_min = 1.5 * vf.ColliderCharge /reduced_vel/alphamax;
 
 2210         ASSERT( reduced_b_min > 1.e-10 );
 
 2211         ASSERT( reduced_b_min < 1.e10 );
 
 2215         double reduced_debye = sqrt( BOLTZMANN*vf.temp/vf.ColliderCharge/
dense.
eden/PI )
 
 2216                                                                                         / (2.*ELEM_CHARGE_ESU)/vf.aveRadius;
 
 2218                 reduced_b_max1 = vf.reduced_b_max*sqrt(E_Proj_Ryd*EN1RYD/BOLTZMANN/vf.temp);
 
 2220                 reduced_b_max1 = vf.reduced_b_max;
 
 2224         if (reduced_b_max1 <= reduced_b_min)
 
 2227         reduced_b_max1 = 
MAX2( reduced_b_max1, reduced_b_min );
 
 2228         ASSERT( reduced_b_max1 > 0. );
 
 2230         double alphamin = 1.5*vf.ColliderCharge/(reduced_vel * reduced_b_max1);
 
 2236         double alphamin_int = 
MAX2( alphamin, 1.e-30 );
 
 2237         double alphamax_int = 
MAX2( alphamax, 1.e-20 );
 
 2239         double CSIntegral = 0.;
 
 2243                 my_Integrand_VF01_alpha<P> func(vf.n, vf.l, vf.lp, alphamin);
 
 2248                 my_Integrand_VF01_beta<P> funcb(vf.n, vf.l, vf.lp, alphamin);
 
 2255                         double epsabs=0., epsrel=1e-5, abserr, qqq;
 
 2256                         const long limit=25, lenw=4*limit;
 
 2257                         long neval, ier,last, iwork[limit];
 
 2259                         double lalphamin_int = log(alphamin_int),
 
 2260                                 lalphamax_int = log(alphamax_int);
 
 2261                         dqags_(funcb,&lalphamin_int,&lalphamax_int,&epsabs,&epsrel,&qqq,
 
 2262                                          &abserr,&neval,&ier,&limit,&lenw,&last,iwork,work);
 
 2269                         my_Integrand_VF01_alpha<P> func(vf.n, vf.l, vf.lp, alphamin);
 
 2284                                 double epsabs=0., epsrel=1e-5, abserr;
 
 2285                                 const long limit=25, lenw=4*limit;
 
 2286                                 long neval, ier,last, iwork[limit];
 
 2288                                 double lalphamin_int = log(alphamin_int),
 
 2289                                         lalphamax_int = log(alphamax_int);
 
 2290                                 dqags_(funcb,&lalphamin_int,&lalphamax_int,&epsabs,&epsrel,&qqq,
 
 2291                                                 &abserr,&neval,&ier,&limit,&lenw,&last,iwork,work);
 
 2292                                 fprintf(
ioQQQ,
"Check VF QAGS1 err=%g neval=%ld ier=%ld\n",abserr,neval,ier);
 
 2294                         if (CSIntegral > 0. || qqq > 0.)
 
 2296                                 fprintf(
ioQQQ,
"Check VF[%ld %ld->%ld %g %g]: %s %g var %g err=%g\n",
 
 2297                                                   vf.n,vf.l,vf.lp,E_Proj_Ryd,alphamin,
 
 2298                                                   ccc,qqq,CSIntegral,(qqq-CSIntegral)/
SDIV(CSIntegral));
 
 2305         double ConstantFactors = 4.5*PI*
POW2(vf.ColliderCharge*vf.aveRadius/reduced_vel);
 
double operator()(double EOverKT) const 
virtual double operator()(double) const =0
FILE * open_data(const char *fname, const char *mode, access_scheme scheme)
realnum EnergyErg() const 
bool lgCS_PSClassic[NISO]
NORETURN void TotalInsanity(void)
my_Integrand_S62(double deltaE, double osc_strength, double temp, double I_energy_eV)
STATIC double CS_l_mixing_S62(double deltaE_eV, double IP_Ryd_ground, long gLo, double Aul, long nelem, long Collider, double temp)
bool lgCS_therm_ave[NISO]
double CS_l_mixing_VF01(long ipISO, long nelem, long n, long l, long lp, long s, long gLo, double tauLo, double IP_Ryd_Hi, double IP_Ryd_Lo, double temp, long Collider)
double SixJFull(long j1, long j2, long j3, long j4, long j5, long j6)
STATIC double CSIntegral_Romberg(long ipISO, const my_Integrand_VF01_beta< P > &func, double alphamin_int, double alphamax_int, double eps)
bool fp_equal_tol(sys_float x, sys_float y, sys_float tol)
double CS_l_mixing_PS64(long nelem, double tau, double target_charge, long n, long l, double gLo, long lp, double deltaE_eV, long Collider)
bool lgColl_l_mixing[NISO]
double sjs(long j1, long j2, long j3, long l1, long l2, long l3)
multi_arr< realnum, 3 > HeCS
bool lgCS_Vrinceanu[NISO]
realnum HeCSInterp(long nelem, long ipHi, long ipLo, long Collider)
void bessel_k0_k1(double x, double *k0val, double *k1val)
t_iso_sp iso_sp[NISO][LIMELM]
void vexp(const double x[], double y[], long nlo, long nhi)
double reduced_amu(long nelem, long Collider)
double xIonDense[LIMELM][LIMELM+1]
double operator()(double y) const 
ColliderList colliders(dense)
double CS_l_mixing_VOS12(long n, long l, long lp, long nelem, double gLo, long Ztarget, long Collider, double sqrte)
double CS_VS80(long nHi, long gHi, double IP_Ryd_Hi, long nLo, long gLo, double IP_Ryd_Lo, double Aul, long nelem, long Collider, double temp)
my_Integrand_VF01_E_log(long ipISO_1, long nelem_1, long n_1, long l_1, long lp_1, long s, long gLo_1, double tauLo_1, double IP_Ryd_Hi_1, double IP_Ryd_Lo_1, long Collider_1, double temp_1)
realnum & EnergyWN() const 
double sum(double min, double max) const 
STATIC double collision_strength_VF01(long ipISO, double velOrEner, const my_Integrand_VF01_E< P > &vf)
EmissionList::reference Emis() const 
void dqags_(const D_fp &f, const double *a, const double *b, const double *epsabs, const double *epsrel, double *result, double *abserr, long *neval, long *ier, const long *limit, const long *lenw, long *last, long *iwork, double *work)
my_Integrand_VF01_E< P > data
double powi(double, long int)
const char * strchr_s(const char *s, int c)
STATIC double S62BesselInvert(double zOverB2)
double sum(double min, double max) const 
multi_arr< long, 3 > QuantumNumbers2Index
TransitionProxy trans(const long ipHi, const long ipLo)
realnum AtomicWeight[LIMELM]
double CS_l_mixing_VOS12QM(long ipISO, long nelem, long n, long l, long lp, long s, long gLo, double tauLo, double IP_Ryd_Hi, double IP_Ryd_Lo, double temp, long Collider)
void reserve(size_type i1)
vector< t_collider > list
void operator()(const double proj_energy_overKT[], double res[], long n) const 
#define DEBUG_ENTRY(funcname)
double powpq(double x, int p, int q)
static const double ColliderCharge[4]
STATIC double cross_section(double EgammaRyd, double EthRyd, long nelem, long n, long l, long s)
double ConvCrossSect2CollStr(double CrsSectCM2, double gLo, double E_ProjectileRyd, double reduced_mass_grams)
void rec6j(double *sixcof, double l2, double l3, double l4, double l5, double l6, double *l1min, double *l1max, double *lmatch, long ndim, long *ier)
int fprintf(const Output &stream, const char *format,...)
my_Integrand_VF01_E(long ipISO_1, long nelem_1, long n_1, long l_1, long lp_1, long s, long gLo_1, double tauLo_1, double IP_Ryd_Hi_1, double IP_Ryd_Lo_1, long Collider_1, double temp_1)
sys_float SDIV(sys_float x)
double pow(double x, int i)
char * read_whole_line(char *chLine, int nChar, FILE *ioIN)
STATIC double CSIntegral_Romberg_alpha(long ipISO, const my_Integrand_VF01_alpha< P > &func, double alphamin_int, double alphamax_int, double eps)
STATIC realnum HeCSTableInterp(long nelem, long Collider, long nHi, long lHi, long sHi, long jHi, long nLo, long lLo, long sLo, long jLo)
double gegenbauer(long n, double al, double x)
double CS_l_mixing_PS64_expI(long nelem, double tau, double target_charge, long n, long l, double g, long lp, double deltaE_eV, long Collider)
STATIC double CSIntegral_QG32(const my_Integrand_VF01_alpha< P > &func, double alphamin_int, double alphamax_int)
double CS_l_mixing(long ipISO, long nelem, long n, long l, long lp, long s, long gLo, double tauLo, double IP_Ryd_Hi, double IP_Ryd_Lo, double temp, long Collider)
realnum GetHelikeCollisionStrength(long nelem, long Collider, long nHi, long lHi, long sHi, long jHi, long gHi, double IP_Ryd_Hi, long nLo, long lLo, long sLo, long jLo, long gLo, double IP_Ryd_Lo, double Aul, double tauLo, double EnerWN, double EnerErg)
double FFmtRead(const char *chCard, long int *ipnt, long int last, bool *lgEOL)