65 const long magicExp );
67 const long yearExp,
const long monthExp,
const long dayExp );
72 inline int irsl2ind(vector<t_BadnellLevel>& level,
int irsl);
80 static bool lgFirstCall =
true;
88 bool lgTooBig =
false;
96 fprintf(
ioQQQ,
" This is the second or later calculation in a grid.\n");
97 fprintf(
ioQQQ,
" The number of zones has been increased beyond what it was on the first calculation.\n");
98 fprintf(
ioQQQ,
" This can\'t be done since space has already been allocated.\n");
99 fprintf(
ioQQQ,
" Have the first calculation do the largest number of zones so that an increase is not needed.\n");
173 for(
long nelem=0; nelem <
LIMELM; nelem++ )
174 for(
long ion=0; ion <
LIMELM; ion++ )
181 for(
long nelem=2; nelem < LIMELM; nelem++ )
184 for(
long ion=0; ion <= nelem; ion++ )
187 long nelec = nelem - ion + 1;
200 ASSERT( imax > 0 && imax <= 10 );
335 for(
long ipZ=0; ipZ<
LIMELM;++ipZ )
352 for(
long ion=0; ion<nelem+1; ion++ )
354 long ipISO = nelem-ion;
361 fixit(
"for now, point non-iso ions to NULL");
421 FILE *ioDATA =
open_data(
"level2.dat",
"r" );
434 fprintf(
ioQQQ,
" level2.dat error getting line %li\n", i );
438 }
while ( chLine[0]==
'#' );
441 double tt[7] = { 0 };
443 sscanf( chLine ,
"%lf %lf %lf %lf %lf %lf %lf " ,
453 (*
TauLine2[i].Hi()).nelem() = (int)tt[0];
454 (*
TauLine2[i].Hi()).IonStg() = (int)tt[1];
465 fprintf(
ioQQQ,
" level2.dat error getting last magic number\n" );
469 sscanf( chLine ,
"%ld" , &magic );
472 fprintf(
ioQQQ,
" level2.dat ends will wrong magic number=%ld \n",
486 fprintf(
ioQQQ,
" atmdat_readin reading mewe_gbar.dat\n");
488 FILE *ioDATA =
open_data(
"mewe_gbar.dat",
"r" );
495 for(
long i=1; i < 210; i++ )
499 fprintf(
ioQQQ,
" mewe_gbar.dat error getting line %li\n", i );
504 sscanf( chLine,
"%lf %lf %lf %lf ", &help[0], &help[1], &help[2], &help[3] );
505 for(
int l=0; l < 4; ++l )
512 fprintf(
ioQQQ,
" mewe_gbar.dat error getting last magic number\n" );
517 sscanf( chLine ,
"%ld" , &magic );
521 fprintf(
ioQQQ,
" mewe_gbar.dat ends will wrong magic number=%ld \n",
539 for(
long ipZ=0; ipZ<
HS_NZ; ++ipZ )
542 if( ipZ>1 && ipZ<5 )
continue;
544 for(
long iCase=0; iCase<2; ++iCase )
553 sprintf( chFilename,
"HS_e%ld%c.dat", ipZ+1, ( iCase == 0 ) ?
'a' :
'b' );
556 fprintf(
ioQQQ,
" atmdat_readin reading Hummer Storey emission file %s\n",chFilename );
559 FILE *ioDATA =
open_data( chFilename,
"r" );
563 int nread = fscanf( ioDATA,
"%li %li ",
568 fprintf(
ioQQQ,
"atmdat_readin: bad input file format\n");
579 for(
long ipTemp=0; ipTemp <
atmdat.
ntemp[iCase][ipZ]; ipTemp++ )
581 for(
long ipDens=0; ipDens <
atmdat.
nDensity[iCase][ipZ]; ipDens++ )
584 long int junk, junk2;
586 int nread = fscanf( ioDATA,
" %lf %li %lf %c %li %ld ",
594 fprintf(
ioQQQ,
"atmdat_readin: bad input file format\n");
601 for(
long j=0; j < ne; j++ )
603 int nread = fscanf( ioDATA,
"%lf ",
608 fprintf(
ioQQQ,
"atmdat_readin: bad input file format\n");
627 for( ipTemp=0; ipTemp<
atmdat.
ntemp[iCase][ipZ]; ipTemp++ )
648 const int ipNUM_FILES = 10;
650 char chFileNames[ipNUM_FILES][10] = {
669 for(
long in = 1; in<=25; in++ )
674 for(
long il = 0; il<
MIN2(5,in); il++ )
687 strcpy( chDirectory,
"sh98_he1\\pi\\" );
689 strcpy( chDirectory,
"sh98_he1/pi/" );
694 for(
long ipFile=0; ipFile<ipNUM_FILES; ipFile++ )
696 long S, L, index,
N=0;
699 strcpy( chPath, chDirectory );
700 strcat( chPath, chFileNames[ipFile] );
703 while(
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) != NULL )
710 i1 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
711 i2 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
712 i3 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
713 if( i1==0 && i2==0 && i3==0 )
723 S = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
724 L = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
725 P = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
726 index = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
753 FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
754 numDataPoints = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
794 char chFileName[23] =
"helike_pcs_topbase.dat";
822 for(
long in = 1; in<=MaxN; in++ )
828 for(
long il = 0; il<in; il++ )
854 for(
long i=0; i<3; i++)
858 fprintf(
ioQQQ,
"PROBLEM corruption in TOPbase Helike pcs datafile.\nSorry\n" );
863 while(
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) != NULL )
867 long i1, i2, i3, i4, i5, i7;
870 i1 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
871 i2 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
872 i3 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
873 i4 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
874 i5 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
875 i6 = (double)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
876 i7 = (long)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
880 fprintf(
ioQQQ,
"PROBLEM corruption in TOPbase Helike pcs datafile.\nSorry\n" );
885 if( i1==i2 && i1==i3 && i1==i4 && i1==i5 && i1==i7 && i1==-1 )
890 if( ! ( i1 > 0 && i1 == (last_i1 + 1) && i1 <= 795 ) )
892 fprintf(
ioQQQ,
"syntax error found in %s\n", chFileName );
901 ASSERT( i4>=100 && i4<400 );
906 l = (i4 - (2*s+1)*100)/10;
910 ASSERT( i5>=1 && i5<=10 );
920 fprintf(
ioQQQ,
"invalid threshold energy in %s\n", chFileName );
936 for(
long k=0; k<i7; k++ )
951 FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
970 for(
int ns=0; ns < 7; ns++ )
973 for(
int nelec=0; nelec < 10; nelec++ )
987 const char* chFilename;
1016 chFilename =
"mewe_nelectron.dat";
1019 fprintf(
ioQQQ,
" init_yield reading %s\n", chFilename );
1039 while( ch1 ==
'#' || ch1 ==
'*' )
1043 fprintf(
ioQQQ,
" %s error getting line %i\n", chFilename, ns );
1049 if( sscanf( chLine,
"%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",
1050 &temp[0], &temp[1], &temp[2], &temp[3], &temp[4],
1051 &temp[5], &temp[6], &temp[7], &temp[8], &temp[9],
1052 &temp[10],&temp[11],&temp[12],&temp[13] ) != 14 )
1054 fprintf(
ioQQQ,
"failed to read correct number of arguments in %s\n",
1063 for(
int j=0; j < 10; j++ )
1086 chFilename =
"mewe_fluor.dat";
1089 fprintf(
ioQQQ,
" init_yield reading %s\n", chFilename );
1101 fprintf(
ioQQQ,
" %s error getting line %i\n", chFilename, 0 );
1105 while( chLine[0] ==
'#' );
1113 int nDima[NKM] = { 0, 1, 2, 2, 3, 4, 4, 5, 5, 6 };
1120 sscanf( chLine,
"%lf %lf %lf %lf %lf %lf %lf",
1121 &temp[0], &temp[1], &temp[2], &temp[3], &temp[4],
1122 &temp[5], &temp[6] );
1139 nAuger = (int)temp[3];
1164 while( chLine[0]==
'#' && !lgEOL );
1178 bitset<IS_TOP> Skip)
1183 fprintf(
ioQQQ,
" ReadBadnellAIData reading %s\n", fnam.c_str() );
1189 getline( ioDATA, line );
1190 ASSERT( line.substr(0,4) ==
"SEQ=" );
1191 getline( ioDATA, line );
1192 getline( ioDATA, line );
1194 ASSERT( line.substr(3,21) ==
"PARENT LEVEL INDEXING" );
1196 istringstream iss( line.substr(65,4) );
1199 int nMulti = (nParent+5)/6;
1200 for(
int i=0; i < nParent+5; ++i )
1201 getline( ioDATA, line );
1204 ASSERT( line.substr(3,26) ==
"IC RESOLVED LEVEL INDEXING" );
1206 istringstream iss2( line.substr(63,6) );
1209 for(
int i=0; i < 3; ++i )
1210 getline( ioDATA, line );
1213 vector<t_BadnellLevel> level( nLevel );
1214 for(
int i=0; i < nLevel; ++i )
1216 getline( ioDATA, line );
1217 istringstream iss3( line );
1219 iss3 >> indx >> irsl;
1220 level[indx-1].irsl = irsl;
1221 level[indx-1].config = line.substr(16,20);
1222 istringstream iss4( line.substr(37,1) );
1223 iss4 >> level[indx-1].S;
1224 istringstream iss5( line.substr(39,1) );
1225 iss5 >> level[indx-1].L;
1226 istringstream iss6( line.substr(41,4) );
1229 level[indx-1].g =
nint(2.*J + 1.);
1230 istringstream iss7( line.substr(46,11) );
1231 iss7 >> level[indx-1].energy;
1234 level[indx-1].lgAutoIonizing = ( line[57] ==
'*' );
1235 if( level[indx-1].lgAutoIonizing )
1237 if( level[indx-1].config.find(
"1S1" ) != string::npos )
1239 else if( level[indx-1].config.find(
"2S1" ) != string::npos )
1241 else if( level[indx-1].config.find(
"2P5" ) != string::npos )
1248 level[indx-1].WhichShell =
IS_NONE;
1254 while( getline( ioDATA, line ) )
1256 if( line.find(
"IRSL IRSL" ) != string::npos )
1260 for(
int i=0; i < nMulti-1; ++i )
1261 getline( ioDATA, line );
1264 qList BlankStates(
"BlankStates",1);
1267 (*BlankLine).Junk();
1270 while( getline( ioDATA, line ) )
1273 if( line.size() < 10 )
1278 if( line.size() < 50 )
1284 int irsl_lo, irsl_hi, dum;
1285 double edif, Bij, Rji, Aai;
1286 istringstream iss8( line );
1293 iss8 >> irsl_lo >> irsl_hi >> dum >> dum >> edif >> Bij >> Rji >> Aai;
1295 int ind_lo =
irsl2ind( level, irsl_lo );
1296 int ind_hi =
irsl2ind( level, irsl_hi );
1297 ASSERT( level[ind_hi].lgAutoIonizing );
1299 for(
int i=0; i < nMulti-1; ++i )
1300 getline( ioDATA, line );
1303 if( ind_lo == 0 && !Skip[level[ind_hi].WhichShell] )
1309 (*UTA.
back().
Hi()).nelem() = nelem+1;
1310 (*UTA.
back().
Hi()).IonStg() = ion+1;
1315 double WavNum = edif*RYD_INF;
1322 double frac_ioniz = Aai/(Rji + Aai);
1323 ASSERT( frac_ioniz >= 0. && frac_ioniz <= 1. );
1347 getline( ioDATA, line );
1348 ASSERT( line.substr(3,7) ==
"NRSLMX=" );
1363 inline int irsl2ind(vector<t_BadnellLevel>& level,
int irsl)
1365 for(
unsigned int i=0; i < level.size(); ++i )
1367 if( level[i].irsl == irsl )
1379 while(
read_whole_line( chLine , (
int)
sizeof(chLine) , ioFile ) != NULL )
1382 if( chLine[0] !=
'#')
1387 sscanf( chLine,
"%ld", &magic );
1389 if( magic != magicExp )
1392 " atmdat_readin: the version of '%s' is not the current version.\n",
1395 " I expected to find the number %ld and got %ld instead.\n" ,
1397 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
1403 const long yearExp,
const long monthExp,
const long dayExp )
1412 while(
read_whole_line( chLine , (
int)
sizeof(chLine) , ioFile ) != NULL )
1415 if( chLine[0] !=
'#')
1419 sscanf( chLine,
"%ld %ld %ld", &year, &month, &day );
1421 if( year != yearExp || month != monthExp || day != dayExp )
1424 " atmdat_readin: the version of '%s' is not the current version.\n",
1427 " I expected to find the number %ld %ld %ld and got %ld %ld %ld instead.\n" ,
1428 yearExp, monthExp, dayExp, year, month, day );
1429 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
1443 const char* chElmSymLC[] =
1444 {
"h",
"he",
"li",
"be",
"b",
"c",
"n",
"o",
"f",
"ne",
"na",
"mg",
"al",
"si",
"p",
1445 "s",
"cl",
"ar",
"k",
"ca",
"sc",
"ti",
"v",
"cr",
"mn",
"fe",
"co",
"ni",
"cu",
"zn" };
1449 for(
long nelem=0; nelem <
LIMELM; ++nelem )
1450 for(
long ion=0; ion <= nelem; ++ion )
1451 strcpy( chUTA_ref[nelem][ion] ,
"" );
1456 for(
long nelem=ipISO; nelem <
LIMELM; ++nelem )
1459 long ion = nelem - ipISO;
1460 strcpy( chUTA_ref[nelem][ion] ,
"B" );
1462 bitset<IS_TOP> Skip;
1468 oss <<
"UTA/nrb00_" << chElmSymLC[ipISO-1] <<
"_";
1470 oss << chElmSymLC[nelem] << ion+1 <<
"ic1-2.dat";
1479 oss <<
"UTA/nrb00_" << chElmSymLC[ipISO-1] <<
"_";
1480 oss << chElmSymLC[nelem] << ion+1 <<
"ic1-3.dat";
1485 ipISO >=
ipNA_LIKE && ipISO <= ipAL_LIKE )
1492 oss2 <<
"UTA/nrb00_" << chElmSymLC[ipISO-1] <<
"_";
1493 oss2 << chElmSymLC[nelem] << ion+1 <<
"ic2-3.dat";
1500 const realnum StatWeightGroundLevelIron[] =
1501 { 9.f, 10.f, 9.f, 6.f, 1.f, 4.f, 5.f, 4.f, 1.f, 4.f, 5.f, 4.f, 1.f,
1502 2.f, 1.f, 2.f, 1.f, 4.f, 5.f, 4.f, 1.f, 2.f, 1.f, 2.f, 1.f, 2.f };
1505 qList BlankStates(
"BlankStates",1);
1508 (*BlankLine).Junk();
1515 fprintf(
ioQQQ,
" atmdat_readin reading UTA_Gu06.dat\n");
1517 FILE *ioGU06 =
open_data(
"UTA/UTA_Gu06.dat",
"r" );
1521 int nelemGu =-1, ionGu=-1;
1524 while(
read_whole_line( chLine, (
int)
sizeof(chLine), ioGU06 ) != NULL )
1526 if( chLine[0] !=
'#' )
1530 double EnergyAng, Aul, oscill, Aauto;
1532 sscanf( chLine,
"%4li%5li%8lf%13lf%12lf",
1533 &ion, &i2, &EnergyAng, &Aul, &Aauto );
1534 sscanf( &chLine[54],
"%13lf", &oscill );
1539 int ipISO =
ipIRON - ion + 1;
1541 if( ipISO <= ipThres )
1555 if(
ipIRON!=nelemGu || ion!=ionGu )
1560 strcpy( chUTA_ref[
ipIRON][ion-1] ,
"G" );
1565 if(
strstr_s( chLine,
"(J=1/2)" ) != NULL )
1567 else if(
strstr_s( chLine,
"(J=1)" ) != NULL )
1569 else if(
strstr_s( chLine,
"(J=3/2)" ) != NULL )
1571 else if(
strstr_s( chLine,
"(J=2)" ) != NULL )
1573 else if(
strstr_s( chLine,
"(J=5/2)" ) != NULL )
1575 else if(
strstr_s( chLine,
"(J=3)" ) != NULL )
1577 else if(
strstr_s( chLine,
"(J=7/2)" ) != NULL )
1579 else if(
strstr_s( chLine,
"(J=4)" ) != NULL )
1581 else if(
strstr_s( chLine,
"(J=9/2)" ) != NULL )
1583 else if(
strstr_s( chLine,
"(J=5)" ) != NULL )
1585 else if(
strstr_s( chLine,
"(J=11/2)" ) != NULL )
1592 double fenergyWN = 1e8/EnergyAng;
1597 double frac_ioniz = Aauto/(Aul + Aauto);
1598 ASSERT( frac_ioniz >= 0. && frac_ioniz <= 1. );
1636 fprintf(
ioQQQ,
" atmdat_readin reading UTA_Kisielius.dat\n");
1638 FILE *ioROMAS =
open_data(
"UTA/UTA_Kisielius.dat",
"r" );
1642 long int nRomasUsed = 0 , nRomasTotal = 0;
1643 int nelemRomas=-1 , ionRomas=-1;
1644 FILE *ioROMASused=NULL;
1645 bool lgSaveRomasUsed =
false;
1646 if( lgSaveRomasUsed )
1648 if( (ioROMASused =
open_data(
"RomasUsed.txt",
"w")) == NULL )
1657 while(
read_whole_line( chLine, (
int)
sizeof(chLine), ioROMAS ) != NULL )
1660 if( chLine[0] !=
'#' )
1662 long int i1, i2, i3;
1663 double f1, f2, oscill;
1667 sscanf( chLine,
"%li\t%li\t%li\t%lf\t%lf\t%lf\t%lf",
1668 &i1,&i2,&i3,&f1,&f2,&frac_relax,&oscill );
1676 if( lgSaveRomasUsed )
1677 fprintf(ioROMASused ,
"%s" , chLine);
1683 const bool lgAllowSplitFe14 =
false;
1684 if( lgAllowSplitFe14 || i2 == StatWeightGroundLevelIron[i1] )
1704 if( lgAllowSplitFe14 )
1706 if( i2 == StatWeightGroundLevelIron[i1] )
1713 if( i2 == StatWeightGroundLevelIron[i1] )
1719 if(
ipIRON!=nelemRomas || i1!=ionRomas )
1724 strcpy( chUTA_ref[
ipIRON][i1] ,
"K" );
1735 if( i1==13 && f1>15.35 && f1<15.55)
1737 fprintf(
ioQQQ,
"DEBUG %li\t%.5f\t%.3e\n",i2, f1 , oscill * facpop);
1752 ASSERT( frac_relax >= 0.f && frac_relax <= 1.f );
1767 if( lgSaveRomasUsed )
1768 fclose( ioROMASused );
1771 fprintf(
ioQQQ,
" reading UTA_Kisielius.dat OK,used %li lines from a total of %li\n" , nRomasUsed , nRomasTotal );
1777 FILE *ioUTA =
ioQQQ;
1781 fprintf(ioUTA,
"##################################################\n");
1782 fprintf(ioUTA,
"UTA data sources; B=Badnell 05; G==Gu 06, K=Kisielius 03, 13\n");
1784 for(
long ion=0; ion<=
LIMELM; ++ion )
1787 for(
long nelem=0; nelem<
LIMELM; ++nelem )
1790 for(
long ion=0; ion<=nelem; ++ion )
1792 fprintf(ioUTA,
"%4s",chUTA_ref[nelem][ion] );
1797 for(
long ion=0; ion<=
LIMELM; ++ion )
1800 fprintf(ioUTA,
"Badnell 05=2005MNRAS.360..458B; Gu 06=2006ApJ...641.1227G; Kisielius 03, 13= 2003MNRAS.344..696K, 2013ApJ...767..123F\n");
1801 fprintf(ioUTA,
"##################################################\n\n");
1809 dprintf(
ioQQQ,
"%5ld %s wavl %7.3f glo %2g gup %2g Aul %.2e gf %.2e ai branch %.3f\n",
realnum fl_energy[MEWE_FLUOR]
t_mole_global mole_global
STATIC void read_UTA_lines()
FILE * open_data(const char *fname, const char *mode, access_scheme scheme)
realnum fl_yield[MEWE_FLUOR]
string chIonLbl(const TransitionProxy &t)
STATIC void read_level2_lines()
TransitionList UTALines("UTALines",&AnonStates)
const int FILENAME_PATH_LENGTH_2
NORETURN void TotalInsanity(void)
int irsl2ind(vector< t_BadnellLevel > &level, int irsl)
void DynaCreateArrays(void)
int nfl_nshell[MEWE_FLUOR]
double eina(double gf, double enercm, double gup)
void reserve(size_t newsize)
bool fp_equal_tol(sys_float x, sys_float y, sys_float tol)
const char * strstr_s(const char *haystack, const char *needle)
double RefIndex(double EnergyWN)
STATIC void validate_magic_number_1arg(const char *chFilename, FILE *ioFile, const long magicExp)
TransitionList TauLine2("TauLine2",&AnonStates)
void HyperfineCreate(void)
t_elementnames elementnames
t_iso_sp iso_sp[NISO][LIMELM]
int nfl_nelem[MEWE_FLUOR]
void resize(size_t newsize)
int dprintf(FILE *fp, const char *format,...)
long int nDensity[2][HS_NZ]
realnum & EnergyWN() const
long int nsShells[LIMELM][LIMELM]
const ios_base::openmode mode_r
#define NUM_HS98_DATA_POINTS
STATIC void validate_magic_number_3arg(const char *chFilename, FILE *ioFile, const long yearExp, const long monthExp, const long dayExp)
void push_back(const TransitionProxy &tr)
realnum & dampXvel() const
EmissionList::reference Emis() const
int nfl_nLine[MEWE_FLUOR]
double **** HS_He1_Xsectn
double ***** OP_Helike_Xsectn
qList::iterator Hi() const
STATIC void read_SH98_He1_cross_sections(void)
STATIC void ReadBadnellAIData(const string &fnam, long nelem, long ion, TransitionList &UTA, bitset< IS_TOP > Skip)
double Density[2][HS_NZ][NHSDIM]
double Emiss[2][HS_NZ][NHSDIM][NHSDIM][NLINEHS]
STATIC void read_Hummer_Storey()
void atmdat_2phot_setSplineCoefs()
void atmdat_outer_shell(long int iz, long int in, long int *imax, long int *ig0, long int *ig1)
const TransitionProxy back(void)
char chElementSym[LIMELM][CHARS_ELEMENT_SYM]
int nfl_ion_emit[MEWE_FLUOR]
qList::iterator Lo() const
bool lgInnerShell_Kisielius
realnum * AccelTotalOutward
double GetGF(double trans_prob, double enercm, double gup)
long int n_elec_eject[30][30][7]
double **** HS_He1_Energy
#define DEBUG_ENTRY(funcname)
double ***** OP_Helike_Energy
long **** OP_Helike_NumPts
realnum frac_elec_eject[30][30][7][10]
void database_readin(void)
int fprintf(const Output &stream, const char *format,...)
STATIC void read_mewe_gbar()
vector< TransitionList > AllTransitions
char * read_whole_line(char *chLine, int nChar, FILE *ioIN)
realnum & AutoIonizFrac() const
void InitTransition(const TransitionProxy &t)
STATIC void read_Helike_cross_sections(void)
double ElecTemp[2][HS_NZ][NHSDIM]
void AddLine2Stack() const
double FFmtRead(const char *chCard, long int *ipnt, long int last, bool *lgEOL)
realnum * pres_radiation_lines_curr