32 STATIC double ritoa( 
long li, 
long lf, 
long nelem, 
double k, 
double RI2 );
 
   51                 d2 = 
zJint * sin(theta),
 
   68         double g1=tgamma(1+0.5*vv), g2=tgamma(1-0.5*vv),
 
   69                 g3=tgamma(1.5+0.5*vv), g4=tgamma(1.5-0.5*vv);
 
   70         double y1 = 0., y2=0., zp = 1.;
 
   71         for (
long k=0; k<100; ++k)
 
   86         double cosfac=cos(0.5*PI*vv), sinfac=sin(0.5*PI*vv);
 
   87         return y1*cosfac+y2*sinfac;
 
   94         double rz=1./zz, akrz=1., bff=0., bgg=0., bfp=0.;
 
   95         for (
long k=0; k<100; ++k)
 
   97                 if (k > 0 && fabs(akrz) > fabs(bfp))
 
  101                 akrz *= (4*vv*vv-(4*k+1)*(4*k+1))/(8*(2*k+1)*zz);
 
  103                 akrz *= -(4*vv*vv-(4*k+3)*(4*k+3))/(8*(2*k+2)*zz);
 
  105         double omega = zz-(2*vv+1)*PI/4;
 
  106         return sqrt(2/PI*rz)*(cos(omega)*bff-sin(omega)*bgg);
 
  110         double ff = 0., gg=0., fk=1., gk=1., rz=1./zz, rzsq = rz*rz, 
 
  112         for (
long k=0; k<100; ++k)
 
  116                         fk *= (vv*vv-(2*k-1)*(2*k-1))*rzsq;
 
  117                         gk *= (vv*vv-4*k*k)*rzsq;
 
  125         return bessjnu(vv,zz)+sin(PI*vv)/(PI*zz)*(ff-(vv*rz)*gg);
 
  129         long int rep = 0, ddiv, divsor;
 
  138         if( (fabs(vv)) - (
int)(fabs(vv)) > 0.5 )
 
  139                 ddiv = (int)(fabs(vv)) + 1;
 
  141                 ddiv = (int)(fabs(vv));
 
  143         divsor  = ((ddiv == 0) ? 1 : ddiv);
 
  147         for( rep = 0; rep < divsor; rep++ )
 
  150                         rl = (((double) rep)/((double) divsor)),
 
  151                         ru = (((
double) (rep+1))/((double) divsor)),
 
  216                           double nstar, 
long int l,
 
  217                           double npstar, 
long int lp,
 
  221         double n_c = ((2.0 * nstar * npstar ) / ( nstar + npstar ));
 
  223         double D_n = (nstar - npstar);
 
  224         double D_l = (double) ( l - lp );
 
  225         double lg  = (double) ( (lp > l) ? lp : l);
 
  229         double f = ( 1.0 - g );
 
  230         double e = (( f >= 0.0) ? sqrt( f ) : 0.0 );
 
  232         double x  = (e * D_n);
 
  233         double z  = (-1.0 * x);
 
  234         double v1 = (D_n + 1.0);
 
  235         double v2 = (D_n - 1.0); 
 
  237         double d1,d2,d7,d8,d9,d34,d56,d6_1; 
 
  265         d2 = (n_c * n_c)/(2.0 * D_n);
 
  273                 double vv = v2, zz = z, y = 
AngerJ(vv,zz);
 
  275                 double vp = (zz > 0.) ? vv : -vv;
 
  276                 double ya = fabs(zz) < fabs(vv) ? 0. : 
AngerJ_asymp(vp,fabs(zz));
 
  277                 printf(
"ANGER %15.8g %15.8g: %15.8g %15.8g (%15.8g) asymp %15.8g\n",
 
  278                                  zz,vv,yt,y,fabs(yt-y)/(1e-37+fabs(yt)),ya);
 
  281         d34 = (1.0 - ((D_l * lg)/n_c)) * 
AngerJ( v1, z );
 
  283         d56 = (1.0 + ((D_l * lg)/n_c)) * 
AngerJ( v2, z );
 
  287         d7 = (2./PI) * sin( d6_1 ) * (1.0 - e);
 
  289         d8 = d1 * d2 * ( (d34) - (d56) + d7 );
 
  296         ASSERT( (l == lp + 1) || ( l == lp - 1) );
 
  319                         double ForbiddenHe[5] = { 1.272E-4, 1E-20, 1E-20, 177.58, 0.327 };
 
  321                         A = ForbiddenHe[ipHi - 1];
 
  336                                 A = (3.9061E-7) * 
pow( (
double)nelem+1., 10.419 );
 
  349                                         A = ( 11.431 * 
pow((
double)nelem, 9.091) );
 
  354                                         A = ( 383.42 * 
pow((
double)nelem, 7.8901) );
 
  362                                 A = ( 0.11012 * 
pow((
double)nelem, 7.6954) ); 
 
  381         else if( nelem>
ipHELIUM && 
L_(ipHi)==1 && 
S_(ipHi)==3 && 
 
  382                 L_(ipLo)==0 && 
S_(ipLo)==1 && 
N_(ipLo) < 
N_(ipHi) )
 
  384                 A = 8.0E-3 * exp(9.283/sqrt((
double)
N_(ipLo))) * 
pow((
double)nelem,9.091) /
 
  385                         pow((
double)
N_(ipHi),2.877);
 
  390         else if( nelem > 
ipHELIUM && 
L_(ipHi)==0 && 
S_(ipHi)==1 && 
 
  391                 L_(ipLo)==1 && 
S_(ipLo)==3 && 
N_(ipLo) < 
N_(ipHi) )
 
  393                 A = 2.416 * exp(-0.256*
N_(ipLo)) * 
pow((
double)nelem,9.159) / 
pow((
double)
N_(ipHi),3.111);
 
  399                         A *= (2.*(ipLo-3)+1.0)/3.0;
 
  406                 double As_3TripS_to_2TripS[9] = {
 
  407                         7.86E-9, 4.59E-6, 1.90E-4, 2.76E-3, 2.25E-2,
 
  408                         1.27E-1, 5.56E-1, 2.01E0, 6.26E0 };
 
  414                         A = As_3TripS_to_2TripS[nelem-1];
 
  423                         A= 7.22E-9*
pow((
double)nelem, 9.33);
 
  441                         A= 0.1834*
pow((
double)nelem, 6.5735);
 
  446         else if( nelem==
ipHELIUM && ipHi==4 && ipLo==3 )
 
  449                 fixit(
"find a transition probability for this 2^3P0 - 2^3P1 transition.");
 
  460         else if( nelem==
ipHELIUM && ipHi==5 && ipLo==4 )
 
  462                 fixit(
"find a transition probability for this 2^3P1 - 2^3P2 transition.");
 
  475                 A = 44.326 * (1./3.) + 0.1146547 * (5./9.);
 
  482                 A = 1.459495 * (1./3.) + 3.6558e-5 * (5./9.);
 
  489                 A = 2.2297e-3 * (1./3.);
 
  507         else if( ( ipLo==0 && 
L_(ipHi)==2 && 
S_(ipHi)==1 ) ||
 
  510                 ( 
N_(ipLo)==2 && 
L_(ipLo)==1 && 
S_(ipLo)==3 && 
N_(ipHi)>=3 && 
L_(ipHi)==1 && 
S_(ipHi)==3 ) ||
 
  515                 static const double f_params[5][4][3] = {
 
  517                  {9.360591E-007, -3.1937E-006,  3.5186E-006},
 
  518                  {4.631435E-007, -1.4973E-006,  1.4848E-006},
 
  519                  {2.493912E-007, -7.8658E-007,  7.3994E-007},
 
  520                  {1.476742E-007, -4.5953E-007,  4.1932E-007}},
 
  522                  {1.646733E-006, -2.0028E-006, -1.3552E-006},
 
  523                  {9.120593E-008,  3.1301E-007, -3.2190E-007},
 
  524                  {1.360965E-008,  1.1467E-007,  8.6977E-008},
 
  525                  {3.199421E-009,  4.5485E-008,  1.1016E-007}},
 
  527                  {1.646733E-006, -2.9720E-006,  1.5367E-006},
 
  528                  {9.120593E-008, -3.9037E-008,  3.9156E-008},
 
  529                  {1.360965E-008,  1.4671E-008,  1.5626E-008},
 
  530                  {3.199421E-009,  8.9806E-009,  1.2436E-008}},
 
  532                  {1.543812E-007, -2.8220E-007,  3.0261E-008},
 
  533                  {3.648237E-008, -6.6824E-008,  4.5879E-009},
 
  534                  {1.488556E-008, -2.7304E-008,  1.6628E-009},
 
  535                  {7.678610E-009, -1.4112E-008,  6.8453E-010}},
 
  537                  {1.543812E-007, -2.8546E-007,  4.6605E-008},
 
  538                  {3.648237E-008, -6.8422E-008,  1.7038E-008},
 
  539                  {1.488556E-008, -2.8170E-008,  8.5012E-009},
 
  540                  {7.678610E-009, -1.4578E-008,  4.6686E-009}}
 
  553                 long index_hi = 
MIN2( 
N_(ipHi), 6 ) - 3;
 
  554                 double f_lu = 
POW2(nelem+1) * ( 
 
  555                         f_params[index_lo][index_hi][0] + 
 
  556                         f_params[index_lo][index_hi][1]/(nelem+1) + 
 
  557                         f_params[index_lo][index_hi][2]/
POW2(nelem+1) );
 
  561                         f_lu *= 
pow3( 6. / 
N_(ipHi) );
 
  567                 A = 
eina( gLo * f_lu, eWN, gHi );
 
  586                 long nelem , 
double Enerwn ,
 
  588                 double Eff_nupper, 
long lHi, 
long sHi, 
long jHi,
 
  590                 double Eff_nlower, 
long lLo, 
long sLo, 
long jLo,
 
  596         long nHi, nLo, ipHi, ipLo;
 
  604         nHi = (int)(Eff_nupper + 0.4);
 
  605         nLo = (int)(Eff_nlower + 0.4);
 
  608         ASSERT( fabs(Eff_nupper-(
double)nHi) < 0.4 );
 
  609         ASSERT( fabs(Eff_nlower-(
double)nLo) < 0.4 );
 
  612         if( (nHi==2) && (lHi==1) && (sHi==3) )
 
  614                 ASSERT( (jHi>=0) && (jHi<=2) );
 
  619         if( (nLo==2) && (lLo==1) && (sLo==3) )
 
  621                 ASSERT( (jLo>=0) && (jLo<=2) );
 
  639         if( (sHi == sLo) && (abs((
int)(lHi - lLo)) == 1) )
 
  665                                 if( (nLo==2) && (lLo==1) && (sLo==3) )
 
  667                                         ASSERT( (jLo>=0) && (jLo<=2) );
 
  668                                         ipLoTemp -= (2 - jLo);
 
  670                                 ASSERT( ipLoTemp < ipHiTemp );
 
  685                                         ASSERT( (lHi == 1) && (sHi == 1) );
 
  688                                         Aul = (1.59208e10) / 
pow3(Eff_nupper);
 
  696                                 else if( lHi>=2 && lLo>=2 && nHi>nLo )
 
  709                                 else if( nHi>10 && nLo<=5 && lHi<=2 && lLo<=2 )
 
  712                                         double emisOscStr, x, a, b, c;
 
  713                                         static const double extrapol_Params[2][4][4][3] = {
 
  717                                                                 {       0.8267396       ,       1.4837624       ,       -0.4615955      },
 
  718                                                                 {       1.2738405       ,       1.5841806       ,       -0.3022984      },
 
  719                                                                 {       1.6128996       ,       1.6842538       ,       -0.2393057      },
 
  720                                                                 {       1.8855491       ,       1.7709125       ,       -0.2115213      }},
 
  722                                                                 {       -1.4293664      ,       2.3294080       ,       -0.0890470      },
 
  723                                                                 {       -0.3608082      ,       2.3337636       ,       -0.0712380      },
 
  724                                                                 {       0.3027974       ,       2.3326252       ,       -0.0579008      },
 
  725                                                                 {       0.7841193       ,       2.3320138       ,       -0.0497094      }},
 
  727                                                                 {       1.1341403       ,       3.1702435       ,       -0.2085843      },
 
  728                                                                 {       1.7915926       ,       2.4942946       ,       -0.2266493      },
 
  729                                                                 {       2.1979400       ,       2.2785377       ,       -0.1518743      },
 
  730                                                                 {       2.5018229       ,       2.1925720       ,       -0.1081966      }},
 
  732                                                                 {       0.0000000       ,       0.0000000       ,       0.0000000       },
 
  733                                                                 {       -2.6737396      ,       2.9379143       ,       -0.3805367      },
 
  734                                                                 {       -1.4380124      ,       2.7756396       ,       -0.2754625      },
 
  735                                                                 {       -0.6630196      ,       2.6887253       ,       -0.2216493      }},
 
  740                                                                 {       0.3075287       ,       0.9087130       ,       -1.0387207      },
 
  741                                                                 {       0.687069        ,       1.1485864       ,       -0.6627317      },
 
  742                                                                 {       0.9776064       ,       1.3382024       ,       -0.5331906      },
 
  743                                                                 {       1.2107725       ,       1.4943721       ,       -0.4779232      }},
 
  745                                                                 {       -1.3659605      ,       2.3262253       ,       -0.0306439      },
 
  746                                                                 {       -0.2899490      ,       2.3279391       ,       -0.0298695      },
 
  747                                                                 {       0.3678878       ,       2.3266603       ,       -0.0240021      },
 
  748                                                                 {       0.8427457       ,       2.3249540       ,       -0.0194091      }},
 
  750                                                                 {       1.3108281       ,       2.8446367       ,       -0.1649923      },
 
  751                                                                 {       1.8437692       ,       2.2399326       ,       -0.2583398      },
 
  752                                                                 {       2.1820792       ,       2.0693762       ,       -0.1864091      },
 
  753                                                                 {       2.4414052       ,       2.0168255       ,       -0.1426083      }},
 
  755                                                                 {       0.0000000       ,       0.0000000       ,       0.0000000       },
 
  756                                                                 {       -1.9219877      ,       2.7689624       ,       -0.2536072      },
 
  757                                                                 {       -0.7818065      ,       2.6595150       ,       -0.1895313      },
 
  758                                                                 {       -0.0665624      ,       2.5955623       ,       -0.1522616      }},
 
  766                                         else if( lLo==1 && lHi==0 )
 
  770                                         else if( lLo==1 && lHi==2 )
 
  780                                         ASSERT( (
int)((sHi-1)/2) == 0 || (
int)((sHi-1)/2) == 1 );
 
  781                                         a = extrapol_Params[(int)((sHi-1)/2)][paramSet][nLo-2][0];
 
  782                                         b = extrapol_Params[(int)((sHi-1)/2)][paramSet][nLo-2][1];
 
  783                                         c = extrapol_Params[(int)((sHi-1)/2)][paramSet][nLo-2][2];
 
  785                                         x = log( 
iso_sp[
ipHE_LIKE][nelem].fb[ipLo].xIsoLevNIonRyd*RYD_INF/Enerwn );
 
  787                                         emisOscStr = exp(a+b*x+c*x*x)/
pow3(Eff_nupper)*
 
  788                                                 (2.*lLo+1)/(2.*lHi+1);
 
  790                                         Aul = TRANS_PROB_CONST*Enerwn*Enerwn*emisOscStr;
 
  792                                         if( nLo==2 && lLo==1 && sLo==3 )
 
  795                                                 Aul *= (2.*jLo+1.0)/9.0;
 
  811                                         if( nLo==2 && lLo==1 && sLo==3 )
 
  814                                                 Aul *= (2.*jLo+1.0)/9.0;
 
  846                                 if( (nLo==2) && (lLo==1) && (sLo==3) )
 
  848                                         ASSERT( (jLo>=0) && (jLo<=2) );
 
  849                                         ipLoTemp -= (2 - jLo);
 
  851                                 ASSERT( ipLoTemp < ipHiTemp );
 
  864                                 if( nLo==nHi && lHi<=2 && lLo<=2 )
 
  868                                         if( nLo==2 && lLo==0 && sLo==3 )
 
  870                                                 ASSERT( nHi==2 && lHi==1 && sHi==3 );
 
  874                                                         Aul = 3.31E7 + 1.13E6 * 
pow((
double)nelem+1.,1.76);
 
  876                                                         Aul = 2.73E7 + 1.31E6 * 
pow((
double)nelem+1.,1.76);
 
  878                                                         Aul = 3.68E7 + 1.04E7 * exp(((
double)nelem+1.)/5.29);
 
  881                                                         fprintf(
ioQQQ,
" PROBLEM Impossible value for jHi in he_1trans.\n");
 
  887                                         else if( ( nLo==2 && lLo==0 && sLo==1 ) && ( nHi==2 && lHi==1 && sHi==1 ) )
 
  889                                                 Aul = 5.53E6 * exp( 0.171*(nelem+1.) );
 
  898                                                 if( (lHi == 1) && (sHi == 3) && (lLo == 0) && (sLo == 3))
 
  900                                                         Aul = 0.4 * 3.85E8 * 
pow((
double)nelem,1.6)/
pow((
double)nHi,5.328);
 
  903                                                 else if( (lHi == 1) && (sHi == 1) && (lLo == 2) && (sLo == 1))
 
  905                                                         Aul = 1.95E4 * 
pow((
double)nelem,1.6) / 
pow((
double)nHi, 4.269);
 
  908                                                 else if( (lHi == 1) && (sHi == 1) && (lLo == 0) )
 
  910                                                         Aul = 6.646E7 * 
powpq((
double)nelem,3,2) / 
pow((
double)nHi, 5.077);
 
  914                                                         ASSERT( (lHi == 2) && (sHi == 3)  && (lLo == 1) );
 
  915                                                         Aul = 3.9E6 * 
pow((
double)nelem,1.6) / 
pow((
double)nHi, 4.9);
 
  916                                                         if( (lHi >2) || (lLo > 2) )
 
  926                                 else if( (nHi > nLo) && ((lHi > 2) || (lLo > 2)) )
 
  936                                 else if( ( nLo==1 ) || ( nLo==2 && lLo==0 ) ||
 
  937                                         ( nLo==3 && lLo==0 && sLo==3 ) ||
 
  938                                         ( nLo==4 && lLo==0 && sLo==3 ) )
 
  943                                                 ASSERT( (lHi == 1) && (sHi == 1) );
 
  950                                                 Aul = 1.375E10 * 
pow((
double)nelem, 3.9) / 
pow((
double)nHi,3.1);
 
  954                                         else if( nLo==2 && lLo==0 && sLo==1 )
 
  956                                                 ASSERT( (lHi == 1) && (sHi == 1) );
 
  959                                                 Aul = 5.0e8 * 
pow4((
double)nelem) / 
pow((
double)nHi, 2.889);
 
  965                                                 ASSERT( (lLo==0) && (sLo==3) );
 
  966                                                 ASSERT( (lHi==1) && (sHi==3) );
 
  970                                                         Aul = 1.5 * 3.405E8 * 
pow4((
double)nelem) / 
pow((
double)nHi, 2.883);
 
  972                                                         Aul = 2.5 * 4.613E7 * 
pow4((
double)nelem) / 
pow((
double)nHi, 2.672);
 
  974                                                         Aul = 3.0 * 1.436E7 * 
pow4((
double)nelem) / 
pow((
double)nHi, 2.617);
 
  984                                         RI2 = 
scqdri(Eff_nupper,lHi,Eff_nlower,lLo,(
double)(nelem));
 
  986                                         Aul = 
ritoa(lHi,lLo,nelem,Enerwn,RI2);
 
  992                                                 Aul *= (2.*jLo+1.0)/9.0;
 
 1011                 ASSERT( (sHi != sLo) || (abs((
int)(lHi - lLo)) != 1) );
 
 1023                 fprintf( 
ioQQQ,
" he_1trans hit negative energy, nelem=%li, val was %f \n", nelem ,Enerwn );
 
 1031         DEBUG_ENTRY( 
"helike_transprob_collapsed_to_collapsed()" );
 
 1037         for( 
long lLo=0; lLo < nLo; ++lLo )
 
 1041                 Aul += Aul_sing + Aul_trip;
 
 1049         DEBUG_ENTRY( 
"helike_transprob_collapsed_to_resolved()" );
 
 1060         if( nLo==2 && lLo==1 && sLo==3 )
 
 1062                 ASSERT( jLo>=0 && jLo<=2 );
 
 1063                 ipLoRes -= (2 - jLo);
 
 1070                         n_eff_hi, lLo+1, sLo, -1, n_eff_lo, lLo, sLo, jLo,
 
 1075         Aul *= (2.*(lLo+1.)+1.) * sLo / (4.*(double)nHi*(
double)nHi);
 
 1081                                 n_eff_hi, lLo-1, sLo, -1, n_eff_lo, lLo, sLo, jLo,
 
 1087                 Aul += Aul1*(2.*(lLo-1.)+1.) * sLo / (4.*(double)nHi*(
double)nHi);
 
 1090                 sp->
CachedAs[ nHi-nResMax-1 ][ ipLoRes ][1] = 0.f;
 
 1106         long int nHi, lHi, sHi, nLo, lLo, sLo, ipHiTrip, ipLoTrip;
 
 1107         double Ass, Att, Ast, Ats;
 
 1108         double SinHi, SinLo, CosHi, CosLo;
 
 1109         double HiMixingAngle, LoMixingAngle , error;
 
 1110         double Kss, Ktt, Kts, Kst, fss, ftt, fssNew, fttNew, ftsNew, fstNew, temp;
 
 1121         if( ( sHi == 3 || sLo == 3 ) ||
 
 1122             ( abs(lHi - lLo) != 1 ) ||
 
 1124             ( lHi <= 1 || lLo <= 1 ) ||
 
 1125             ( nHi == nLo && lHi == 1 && lLo == 2 ) ||
 
 1126             ( nHi > nLo && lHi != 1 && lLo != 1 ) )
 
 1139                 HiMixingAngle = 0.01;
 
 1143                 HiMixingAngle = 0.5;
 
 1147                 HiMixingAngle = PI/4.;
 
 1152                 LoMixingAngle = 0.01;
 
 1156                 LoMixingAngle = 0.5;
 
 1160                 LoMixingAngle = PI/4.;
 
 1164         ASSERT( ipHiTrip > ipLoTrip );
 
 1165         ASSERT( ipHiTrip > ipLoSing );
 
 1166         ASSERT( ipHiSing > ipLoTrip );
 
 1167         ASSERT( ipHiSing > ipLoSing );
 
 1169         SinHi = sin( HiMixingAngle );
 
 1170         SinLo = sin( LoMixingAngle );
 
 1171         CosHi = cos( HiMixingAngle );
 
 1172         CosLo = cos( LoMixingAngle );
 
 1185         temp = sqrt(fss/Kss)*CosHi*CosLo + sqrt(ftt/Ktt)*SinHi*SinLo;
 
 1186         fssNew = Kss*
POW2( temp );
 
 1187         temp = sqrt(fss/Kss)*SinHi*SinLo + sqrt(ftt/Ktt)*CosHi*CosLo;
 
 1188         fttNew = Ktt*
POW2( temp );
 
 1189         temp = sqrt(fss/Kss)*CosHi*SinLo - sqrt(ftt/Ktt)*SinHi*CosLo;
 
 1190         fstNew = Kst*
POW2( temp );
 
 1191         temp = sqrt(fss/Kss)*SinHi*CosLo - sqrt(ftt/Ktt)*CosHi*SinLo;
 
 1192         ftsNew = Kts*
POW2( temp );
 
 1206         error = fabs( ( 
iso_sp[
ipHE_LIKE][nelem].trans(ipHiSing,ipLoSing).Emis().Aul()+
 
 1208                 (Ass+Ast+Ats+Att) - 1.f );
 
 1212                 fprintf( 
ioQQQ, 
"FSM error: %e\t Element: %ld\t States: LS %li HS %li LT %li HT %li\t New values: Ass %e Att %e Ast %e Ats %e\n", error,
 
 1213                         nelem, ipLoSing, ipHiSing, ipLoTrip, ipHiTrip, Ass, Att, Ast, Ats );
 
 1251 STATIC double ritoa(
long li, 
long lf, 
long nelem, 
double k, 
double RI2)
 
 1262         double fmean,mu,EinsteinA,w,RI2_cm;
 
 1266         mu = ELECTRON_MASS/(1+ELECTRON_MASS/(
dense.
AtomicWeight[nelem]*ATOMIC_MASS_UNIT));
 
 1268         w = 2. * PI * k * SPEEDLIGHT;
 
 1270         RI2_cm = RI2 * BOHR_RADIUS_CM * BOHR_RADIUS_CM;
 
 1274         fmean = 2.0*mu*w*lg*RI2_cm/((3.0*H_BAR) * (2.0*li+1.0));
 
 1276         EinsteinA = TRANS_PROB_CONST*k*k*fmean;
 
 1286         double Enerwn, n_eff_hi, n_eff_lo;
 
 1295         if( ipHi >= 
iso_sp[ipISO][nelem].numLevels_max-
iso_sp[ipISO][nelem].nCollapsed_max )
 
 1297                 if( ipLo >= 
iso_sp[ipISO][nelem].numLevels_max-
iso_sp[ipISO][nelem].nCollapsed_max )
 
 1318                         Aul = 
he_1trans( nelem, -1.*Enerwn,  n_eff_lo,
 
 1319                                 L_(ipLo), 
S_(ipLo), ipLo-3, n_eff_hi, 
L_(ipHi), 
S_(ipHi), ipHi-3, &error1, &error2);
 
 1323                         Aul = 
he_1trans( nelem, Enerwn,  n_eff_hi,
 
 1324                                 L_(ipHi), 
S_(ipHi), ipHi-3, n_eff_lo, 
L_(ipLo), 
S_(ipLo), ipLo-3, &error1, &error2);
 
 1342         long nelem, ipLo, ipHi, i, i1, i2, i3;
 
 1362                 fprintf( 
ioQQQ,
" HelikeTransProbSetup opening he_transprob.dat:");
 
 1364         ioDATA = 
open_data( 
"he_transprob.dat", 
"r" );
 
 1367         if( 
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) == NULL )
 
 1369                 fprintf( 
ioQQQ, 
" HelikeTransProbSetup could not read first line of he_transprob.dat.\n");
 
 1373         i1 = (long)
FFmtRead(chLine,&i,
sizeof(chLine),&lgEOL);
 
 1374         i2 = (long)
FFmtRead(chLine,&i,
sizeof(chLine),&lgEOL);
 
 1378                          " HelikeTransProbSetup: the version of he_transprob.dat is not the current version.\n" );
 
 1380                          " HelikeTransProbSetup: I expected to find the number %i %i and got %li %li instead.\n" ,
 
 1382                 fprintf( 
ioQQQ, 
"Here is the line image:\n==%s==\n", chLine );
 
 1403                 if( 
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) == NULL )
 
 1406                 while( chLine[0]==
'#' )
 
 1408                         if( 
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) == NULL )
 
 1413                 i1 = (long)
FFmtRead(chLine,&i3,
sizeof(chLine),&lgEOL);
 
 1414                 i2 = (long)
FFmtRead(chLine,&i3,
sizeof(chLine),&lgEOL);
 
 1416                 if( i1<0 || i2<=i1 )
 
 1418                         fprintf( 
ioQQQ, 
" HelikeTransProbSetup detected insanity in he_transprob.dat.\n");
 
 1425                 for( i=0; i<1; ++i )
 
 1427                         if( (chTemp = 
strchr_s( chTemp, 
'\t' )) == NULL )
 
 1429                                 fprintf( 
ioQQQ, 
" HelikeTransProbSetup could not init he_transprob\n" );
 
 1438                         if( (chTemp = 
strchr_s( chTemp, 
'\t' )) == NULL )
 
 1440                                 fprintf( 
ioQQQ, 
" HelikeTransProbSetup could not scan he_transprob\n" );
 
 1445                         sscanf( chTemp , 
"%le" , &
TransProbs[nelem][i2][i1] );
 
 1450                                 fprintf( 
ioQQQ, 
" HelikeTransProbSetup detected insanity in he_transprob.dat.\n");
 
 1457         if( 
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) == NULL )
 
 1459                 fprintf( 
ioQQQ, 
" HelikeTransProbSetup could not read last line of he_transprob.dat.\n");
 
 1463         i1 = (long)
FFmtRead(chLine,&i,
sizeof(chLine),&lgEOL);
 
 1464         i2 = (long)
FFmtRead(chLine,&i,
sizeof(chLine),&lgEOL);
 
 1468                          " HelikeTransProbSetup: the version of he_transprob.dat is not the current version.\n" );
 
 1470                          " HelikeTransProbSetup: I expected to find the number %i %i and got %li %li instead.\n" ,
 
 1472                 fprintf( 
ioQQQ, 
"Here is the line image:\n==%s==\n", chLine );
 
STATIC double ForbiddenAuls(long ipHi, long ipLo, long nelem)
STATIC double Jint(double theta)
FILE * open_data(const char *fname, const char *mode, access_scheme scheme)
STATIC double bessjnu(double vv, double zz)
NORETURN void TotalInsanity(void)
multi_arr< realnum, 3 > CachedAs
double eina(double gf, double enercm, double gup)
STATIC double helike_transprob_collapsed_to_resolved(long nelem, long nHi, long nLo, long lLo, long sLo, long jLo, double Enerwn)
void iso_put_error(long ipISO, long nelem, long ipHi, long ipLo, long whichData, realnum errorOpt, realnum errorPess)
STATIC double AngerJ(double vv, double zz)
multi_arr< long, 3 > IndexIfAllResolved
t_iso_sp iso_sp[NISO][LIMELM]
double he_1trans(long nelem, double Enerwn, double Eff_nupper, long lHi, long sHi, long jHi, double Eff_nlower, long lLo, long sLo, long jLo, realnum *error1, realnum *error2)
long int n_HighestResolved_max
realnum & EnergyWN() const 
double helike_quantum_defect(long nelem, long n, long lqn, long S, long j)
EmissionList::reference Emis() const 
STATIC double scqdri(double nstar, long int l, double npstar, long int lp, double iz)
qList::iterator Hi() const 
realnum helike_transprob(long nelem, long ipHi, long ipLo)
const char * strchr_s(const char *s, int c)
multi_arr< long, 3 > QuantumNumbers2Index
TransitionProxy trans(const long ipHi, const long ipLo)
STATIC double helike_transprob_collapsed_to_collapsed(long nelem, long nHi, long nLo, double Enerwn)
realnum AtomicWeight[LIMELM]
qList::iterator Lo() const 
void DoFSMixing(long nelem, long ipLoSing, long ipHiSing)
double qg32(double, double, double(*)(double))
#define DEBUG_ENTRY(funcname)
double powpq(double x, int p, int q)
void iso_setRedisFun(long ipISO, long nelem, long ipLo, long ipHi)
STATIC double AngerJ_mac(double vv, double zz)
int fprintf(const Output &stream, const char *format,...)
STATIC double ritoa(long li, long lf, long nelem, double k, double RI2)
double pow(double x, int i)
char * read_whole_line(char *chLine, int nChar, FILE *ioIN)
void HelikeTransProbSetup(void)
void iso_setOpacity(long ipISO, long nelem, long ipLo, long ipHi)
double H_Einstein_A(long int n, long int l, long int np, long int lp, long int iz)
STATIC double AngerJ_asymp(double vv, double zz)
NORETURN void BadRead(void)
void AddLine2Stack() const 
double FFmtRead(const char *chCard, long int *ipnt, long int last, bool *lgEOL)
static double *** TransProbs