94 for( vector<two_photon>::iterator tnu = sp->
TwoNu.begin(); tnu != sp->
TwoNu.end(); ++tnu )
118 if (fabs(renorm-1.0) > maxerr)
119 maxerr = fabs(renorm-1.0);
128 iso_sp[ipISO][nelem].
st[0].Pop() = 0.;
131 iso_sp[ipISO][nelem].
st[ipHi].Pop() = 0.;
132 for(
long ipLo=0; ipLo < ipHi; ipLo++ )
161 enum {DEBUG_LOC=
false};
165 fprintf(
ioQQQ,
"DEBUG \t%.2f\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\n",
252 fprintf(
ioQQQ,
" Hydrogenic return %.2f ",
fnzone);
258 fprintf(
ioQQQ,
" REC, COL, GAMT= ");
261 fprintf(
ioQQQ,
"%.2e ", coltot);
262 fprintf(
ioQQQ,
"%.2e ", gamtot);
263 fprintf(
ioQQQ,
" CSUP=");
265 fprintf(
ioQQQ,
"\n");
276 const bool lgJustAssert =
false, lgJustTest =
true;
293 sum_atom_iso +=
iso_sp[ipISO][nelem].
st[level].Pop();
306 iso_sp[ipISO][nelem].
st[0].Pop() = sum_atom_iso;
316 fprintf (
ioQQQ,
"Iso_Renorm %ld %ld %g %g %g[%g]\n",
317 ipISO,nelem,renorm-1.,
344 iso_sp[ipISO][nelem].
st[ipHi].Pop() *= renorm;
350 for(
long ipLo=0; ipLo < ipHi; ipLo++ )
374 iso_sp[ipISO][nelem].st[level].Pop(), denom );
376 iso_sp[ipISO][nelem].
fb[level].DepartCoef = 0.;
380 iso_sp[ipISO][nelem].fb[level].DepartCoef = 0.;
388 long int in, il, is, i, ipLo, nResolved, ipFirstCollapsed=LONG_MIN;
389 char chPrtType[2][12]={
"populations",
"departure"};
391 char chSpin[3][9]= {
"singlets",
"doublets",
"triplets"};
393#define ITEM_TO_PRINT(A_) ( lgPrtDeparCoef ? iso_sp[ipISO][nelem].fb[A_].DepartCoef : iso_sp[ipISO][nelem].st[A_].Pop() )
399 for( is = 1; is<=3; ++is)
403 else if( ipISO ==
ipHE_LIKE && is != 1 && is != 3 )
407 nResolved =
iso_sp[ipISO][nelem].
st[ipFirstCollapsed-1].n();
408 ASSERT( nResolved ==
iso_sp[ipISO][nelem].n_HighestResolved_local );
412 fprintf(
ioQQQ,
" %s %s %s %s\n",
416 chPrtType[lgPrtDeparCoef]);
419 fprintf(
ioQQQ,
" n\\l=> ");
420 for( i =0; i < nResolved; ++i)
422 fprintf(
ioQQQ,
"%2ld ",i);
427 for( in = 1; in <= nResolved; ++in)
432 fprintf(
ioQQQ,
" %2ld ",in);
434 for( il = 0; il < in; ++il)
436 if( ipISO==
ipHE_LIKE && (in==2) && (il==1) && (is==3) )
454 in =
iso_sp[ipISO][nelem].
st[il].n();
456 fprintf(
ioQQQ,
" %2ld ",in);
471 double TeList[NTE] = {6000.,10000.,15000.,20000.,25000.};
477 fprintf(ioPun,
"Te\t2 3s 33s\n");
482 for( i=0; i<NTE; ++i )
486 fprintf(ioPun ,
"%.0f\t",
488 fprintf(ioPun ,
"%.2f\t",
490 fprintf(ioPun ,
"%.2f\t",
492 fprintf(ioPun ,
"%.2f\t",
494 fprintf(ioPun ,
"%.3f\t",
497 fprintf(ioPun ,
"%.1f\n",
void PrintE82(FILE *, double)
sys_float safe_div(sys_float x, sys_float y, sys_float res_0by0)
bool fp_equal(sys_float x, sys_float y, int n=3)
#define DEBUG_ENTRY(funcname)
realnum ColUL(const ColliderList &colls) const
CollisionProxy Coll() const
EmissionList::reference Emis() const
TransitionProxy trans(const long ipHi, const long ipLo)
vector< two_photon > TwoNu
multi_arr< long, 3 > QuantumNumbers2Index
long int nCollapsed_local
bool lgContinuumLoweringEnabled[NISO]
t_elementnames elementnames
realnum HeCSInterp(long int nelem, long int ipHi, long int ipLo, long int Collider)
void HydroLevel(long int ipZ)
void ion_solver(long int nelem, bool lgPrintIt)
t_iso_sp iso_sp[NISO][LIMELM]
void iso_collide(long ipISO, long nelem)
void iso_continuum_lower(long ipISO, long nelem)
void iso_collapsed_lifetimes_update(long ipISO, long nelem)
void iso_error_generation(long ipISO, long nelem)
void iso_cascade(long ipISO, long nelem)
void iso_collapsed_Aul_update(long ipISO, long nelem)
void iso_collapsed_bnl_set(long ipISO, long nelem)
void iso_ionize_recombine(long ipISO, long nelem)
void iso_photo(long ipISO, long nelem)
void iso_level(const long ipISO, const long nelem, double &renorm)
void iso_radiative_recomb_effective(long ipISO, long nelem)
void iso_radiative_recomb(long ipISO, long nelem)
void iso_update_rates(void)
void iso_departure_coefficients(long ipISO, long nelem)
void iso_collapsed_update(void)
void iso_renorm(long nelem, long ipISO, double &renorm)
void AGN_He1_CS(FILE *ioPun)
#define ITEM_TO_PRINT(A_)
void iso_prt_pops(long ipISO, long nelem, bool lgPrtDeparCoef)
void iso_solve(long ipISO, long nelem, double &maxerr)
molezone * findspecieslocal(const char buf[])
t_secondaries secondaries
double CharExcIonTotal[NCX]
realnum IonizErrorAllowed
void setConvIonizFail(const char *reason, double oldval, double newval)
realnum SetIoniz[LIMELM][LIMELM+1]
long int IonLow[LIMELM+1]
long int IonHigh[LIMELM+1]
double xIonDense[LIMELM][LIMELM+1]
char chElementSym[LIMELM][CHARS_ELEMENT_SYM]
double H2_Solomon_dissoc_rate_used_H2g
double H2_Solomon_dissoc_rate_TH85_H2g
double H2_Solomon_dissoc_rate_BD96_H2g
realnum H_ion_frac_collis
void TempChange(double TempNew, bool lgForceUpdate)
void CalcTwoPhotonRates(two_photon &tnu, bool lgDoInduced)