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, ";
130 long int i, nelem, ipHi, ipLo;
148 " start H -like iso sequence ");
157 "collisionally excited La cooling ");
160 " collisionally de-excited La heating ");
163 " cooling due to n>2 Lyman lines ");
166 " heating due to n>2 Lyman lines ");
169 " cooling due to n>3 Balmer lines ");
172 " heating due to n>3 Balmer lines ");
175 " cooling due to higher Paschen lines ");
178 " heating due to higher Paschen lines ");
191 "Lya contribution from suprathermal secondaries from ground ");
194 "collision ionization cooling of hydrogen ");
197 " this is the heating due to 3-body recombination ");
200 "collision ionization cooling of He+ ");
203 " this is the heating due to 3-body recombination onto He+");
205 fixit(
"why is there a zero here?");
207 " Stark broadening contribution to line ");
211 " Stark broadening contribution to line ");
215 "Stark broadening contribution to line ");
219 " Stark broadening contribution to line ");
227 "Stark broadening part of line");
235 " portion of line lost due to absorp by background opacity ");
239 "Ha destroyed by background opacity");
246 "portion of line lost due to absorb by background opacity");
252 "portion of line lost due to absorb by background opacity");
257 "portion of line lost due to absorb by background opacity");
261 "Ly-alpha destroyed by overlap with FeII " );
264 " simple high-density case b intensity of Ly-alpha, no two photon ");
289 "Case B H-beta computed from Q(H) and specified covering factor");
303 "Ly-alpha from Q(H), high-dens lim, specified covering factor" );
307 for( nelem=ipISO; nelem <
LIMELM; nelem++ )
315 for( ipLo=0; ipLo < ipHi; ipLo++ )
333 for( nelem=0; nelem <
LIMELM; nelem++ )
344 index_of_nHi_P = ipHi;
349 for( ipLo=0; ipLo < ipHi; ipLo++ )
362 if( ipHi == index_of_nHi_P && ipLo == index_of_nLo_S )
391 lindst(hbetab, -4861.36 ,
"CaBo",
393 " this is old case b based on Ferland (1980) PASP ");
407 " old prediction of He II 1640, Case B at low densities");
414 lindst(em,-4686.01,
"CaBo", 1,
'i',
false,
415 " old prediction of He II 4686, Case B at low densities");
421 for(nelem=0; nelem<
HS_NZ; ++nelem )
428 for( nelem=0; nelem <
LIMELM; nelem++ )
435 if( nelem <
HS_NZ && (nelem<2 || nelem>4) )
438 for( iCase=0; iCase<2; ++iCase )
440 char chAB[2]={
'A',
'B'};
453 double case_b_Intensity;
454 long int ipCHi , ipCLo;
466 if( case_b_Intensity<=0. )
469 case_b_Intensity = 0.;
474 if( iCase==0 && ipLo==1 )
488 chLab[3] = chAB[iCase];
499 else if( ipCLo == 2 )
504 else if( ipCLo == 1 || ipCLo == 0 )
516 " case a or case b from Hummer & Storey tables" );
527 chLabel =
chIonLbl(nelem+1, nelem+1-ipISO);
531 fixit(
"This was multiplied by Pesc when treated as a line, now what? Only used for printout?");
532 fixit(
"below should be 'i' instead of 'r' ?");
534 string tpc_comment =
"",
539 tpc_comment =
" two photon continuum, " + comment_trans;
540 tpe_comment =
" induced two photon emission, " + comment_trans;
542 linadd( tnu->AulTotal * tnu->E2nu * EN1RYD * (*tnu->Pop),
543 0, chLabel.c_str(),
'r', tpc_comment.c_str() );
545 linadd( tnu->induc_dn * tnu->E2nu * EN1RYD * (*tnu->Pop),
546 22, chLabel.c_str() ,
'i', tpe_comment.c_str() );
564 for( ipHi=ipLo+1; ipHi < nLoop; ipHi++ )
571 if( ipHi==1 && ipLo==0 )
577 string comment_trans =
"";
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)
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
double pow(double x, int i)
t_secondaries secondaries
long int StuffComment(const char *chComment)