31 for(
long nelem=0; nelem <
LIMELM; nelem++ )
35 vector< pair<long, long> > thisElm_skipTrans;
44 index_of_nHi_P = ipHi;
49 for(
long ipLo=0; ipLo < ipHi; ipLo++ )
62 if( ipHi == index_of_nHi_P && ipLo == index_of_nLo_S )
66 thisElm_skipTrans.push_back( pair<long, long>( ipLo, ipHi ) );
70 "%2s\t index_of_nHi_P= %2ld (%5s)\t index_of_nLo_S= %2ld (%5s)\t"
71 " ipHi= %2ld (%5s)\t ipLo= %2ld (%5s)\t %10g %10g\t Dwl= %g\n",
74 iso_sp[ipISO][nelem].
st[index_of_nHi_P].chConfig().c_str(),
76 iso_sp[ipISO][nelem].
st[index_of_nLo_S].chConfig().c_str(),
78 iso_sp[ipISO][nelem].
st[ipHi].chConfig().c_str(),
80 iso_sp[ipISO][nelem].
st[ipLo].chConfig().c_str(),
97 static bool isSkipped(
const pair< long, long > level_indices )
99 return level_indices.first ==
this_ipLo &&
108 vector< pair<long, long> >::iterator sti;
111 bool skippedTrans =
true;
113 skippedTrans =
false;
119 string isoSeq =
"H-like, ";
121 isoSeq =
"He-like, ";
126 if( ipISO ==
ipH_LIKE && (ipLo == 1 || ipLo == 2 ) )
139 long int i, nelem, ipHi, ipLo;
157 " start H -like iso sequence ");
166 "collisionally excited La cooling ");
169 " collisionally de-excited La heating ");
172 " cooling due to n>2 Lyman lines ");
175 " heating due to n>2 Lyman lines ");
178 " cooling due to n>3 Balmer lines ");
181 " heating due to n>3 Balmer lines ");
184 " cooling due to higher Paschen lines ");
187 " heating due to higher Paschen lines ");
200 "Lya contribution from suprathermal secondaries from ground ");
203 "collision ionization cooling of hydrogen ");
206 " this is the heating due to 3-body recombination ");
209 "collision ionization cooling of He+ ");
212 " this is the heating due to 3-body recombination onto He+");
214 fixit(
"why is there a zero here?");
216 " Stark broadening contribution to line ");
220 " Stark broadening contribution to line ");
224 "Stark broadening contribution to line ");
228 " Stark broadening contribution to line ");
236 "Stark broadening part of line");
244 " portion of line lost due to absorp by background opacity ");
248 "Ha destroyed by background opacity");
255 "portion of line lost due to absorb by background opacity");
261 "portion of line lost due to absorb by background opacity");
266 "portion of line lost due to absorb by background opacity");
270 "Ly-alpha destroyed by overlap with FeII " );
273 " simple high-density case b intensity of Ly-alpha, no two photon ");
298 "Case B H-beta computed from Q(H) and specified covering factor");
312 "Ly-alpha from Q(H), high-dens lim, specified covering factor" );
316 for( nelem=ipISO; nelem <
LIMELM; nelem++ )
324 for( ipLo=0; ipLo < ipHi; ipLo++ )
342 for( nelem=0; nelem <
LIMELM; nelem++ )
353 index_of_nHi_P = ipHi;
358 for( ipLo=0; ipLo < ipHi; ipLo++ )
371 if( ipHi == index_of_nHi_P && ipLo == index_of_nLo_S )
400 lindst(hbetab, -4861.33 ,
"CaBo",
402 " this is old case b based on Ferland (1980) PASP ");
416 " old prediction of He II 1640, Case B at low densities");
420 em = 2.52e-20/(pow(
phycon.
te,1.05881));
423 lindst(em,-4685.64,
"CaBo", 1,
'i',
false,
424 " old prediction of He II 4686, Case B at low densities");
430 for(nelem=0; nelem<
HS_NZ; ++nelem )
437 for( nelem=0; nelem <
LIMELM; nelem++ )
444 if( nelem <
HS_NZ && (nelem<2 || nelem>4) )
447 for( iCase=0; iCase<2; ++iCase )
449 char chAB[2]={
'A',
'B'};
462 double case_b_Intensity;
463 long int ipCHi , ipCLo;
475 if( case_b_Intensity<=0. )
478 case_b_Intensity = 0.;
483 if( iCase==0 && ipLo==1 )
497 chLab[3] = chAB[iCase];
508 else if( ipCLo == 2 )
513 else if( ipCLo == 1 || ipCLo == 0 )
525 " case a or case b from Hummer & Storey tables" );
536 chLabel =
chIonLbl(nelem+1, nelem+1-ipISO);
540 fixit(
"This was multiplied by Pesc when treated as a line, now what? Only used for printout?");
541 fixit(
"below should be 'i' instead of 'r' ?");
543 string tpc_comment =
"";
546 tpc_comment =
" two photon continuum, " +
549 linadd( tnu->AulTotal * tnu->E2nu * EN1RYD * (*tnu->Pop),
551 chLabel.c_str(),
'r', tpc_comment.c_str() );
569 for( ipHi=ipLo+1; ipHi < nLoop; ipHi++ )
576 if( ipHi==1 && ipLo==0 )
582 string comment_trans =
"";
double wn2ang(double fenergyWN)
realnum WaveLengthCaseB[8][25][24]
string chIonLbl(const TransitionProxy &t)
realnum EnergyErg() const
realnum H_ion_frac_collis
long int IonHigh[LIMELM+1]
void set_xIntensity(const TransitionProxy &t)
void lindst(double xEmiss, realnum wavelength, const char *chLab, long int ipnt, char chInfo, bool lgOutToo, const char *chComment)
string iso_comment_tran_levels(long ipISO, long nelem, long ipLo, long ipHi)
static void collectSkipTrans(void)
bool lgHCaseBOK[2][HS_NZ]
static bool isSkipTransSet
t_elementnames elementnames
t_iso_sp iso_sp[NISO][LIMELM]
double xIonDense[LIMELM][LIMELM+1]
vector< two_photon > TwoNu
long int n_HighestResolved_max
static bool isSkipped(const pair< long, long > level_indices)
double & xIntensity() const
EmissionList::reference Emis() const
static vector< vector< pair< long, long > > > skipTrans(LIMELM)
LinSv * linadd(double xEmiss, realnum wavelength, const char *chLab, char chInfo, const char *chComment)
string GenerateTransitionConfiguration(const TransitionProxy &t)
qList::iterator Hi() const
double atmdat_HS_caseB(long int iHi, long int iLo, long int iZ, double TempIn, double DenIn, char chCase)
static bool isTransSkipped(long nelem, long ipLo, long ipHi)
multi_arr< long, 3 > QuantumNumbers2Index
TransitionProxy trans(const long ipHi, const long ipLo)
char chElementSym[LIMELM][CHARS_ELEMENT_SYM]
void PutLine(const TransitionProxy &t, const char *chComment, const char *chLabelTemp, const ExtraInten &extra)
string db_comment_tran_levels(long ipLoFile, long ipHiFile)
#define DEBUG_ENTRY(funcname)
int fprintf(const Output &stream, const char *format,...)
double & xObsIntensity() const
t_secondaries secondaries
long int StuffComment(const char *chComment)