54 sp->
fb[ipHi].ColIoniz =
127 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0},
128 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0} };
147 " iso_collide called %s nelem %li - no reeval Boltz fac, LTE dens\n",
158 " iso_collide called %s nelem %li - will reeval Boltz fac, LTE dens\n",
187 sp->
st[ipLo].Boltzmann() =
189 sp->
st[ipLo].ConBoltz() =
201 sp->
fb[ipLo].PopLTE =
202 sp->
st[ipLo].g() / sp->
st[ipLo].ConBoltz() * ConvLTEPOP;
207 sp->
fb[ipLo].PopLTE = 0.;
213 if( sp->
fb[ipLo].PopLTE <= 0. )
231 for(
long ipLo=0; ipLo < ipHi; ipLo++ )
244 cs_temp =
HeCSInterp( nelem , ipHi , ipLo, ipCollider );
253 cs_temp *= ( sp->
trans(ipHi,ipLo).
Emis().
gf() / sp->
st[ipLo].g() ) /
267 double rateCoef = cs_temp *
278 rateCoef *= (8./3.)*(log(
double(
N_(ipHi)))+2.);
290 rateCoef *= (2./3.)*(log(
double(
N_(ipHi)))+2.);
302 if(
N_(ipHi) <= 5 &&
N_(ipLo) <= 2 )
312 fprintf(
ioQQQ,
" iso_collide: %s Z=%li de-excitation rates coefficients\n",
iso_ctrl.
chISO[ipISO], nelem + 1 );
314 for(
long ipHi=1; ipHi < upper_limit; ipHi++ )
316 fprintf(
ioQQQ,
" %li\t", ipHi );
317 for(
long ipLo=0; ipLo < ipHi; ipLo++ )
322 fprintf(
ioQQQ,
"\n" );
325 fprintf(
ioQQQ,
" iso_collide: %s Z=%li collisional ionization coefficients\n",
iso_ctrl.
chISO[ipISO], nelem + 1 );
326 for(
long ipHi=0; ipHi < upper_limit; ipHi++ )
330 fprintf(
ioQQQ,
"\n" );
332 fprintf(
ioQQQ,
" iso_collide: %s Z=%li continuum boltzmann factor\n",
iso_ctrl.
chISO[ipISO], nelem + 1 );
333 for(
long ipHi=0; ipHi < upper_limit; ipHi++ )
337 fprintf(
ioQQQ,
"\n" );
339 fprintf(
ioQQQ,
" iso_collide: %s Z=%li continuum boltzmann factor\n",
iso_ctrl.
chISO[ipISO], nelem + 1 );
340 for(
long ipHi=0; ipHi < upper_limit; ipHi++ )
344 fprintf(
ioQQQ,
"\n" );
356 sp->
fb[ipLo].ColIoniz = 0.;
361 if(
N_(ipLo)==2 &&
N_(ipHi)==2 )
bool fp_equal(sys_float x, sys_float y, int n=3)
NORETURN void TotalInsanity(void)
#define DEBUG_ENTRY(funcname)
const double * rate_coef_ul() const
realnum & col_str() const
realnum & rate_lu_nontherm_set() const
realnum ColUL(const ColliderList &colls) const
double * rate_coef_ul_set() const
CollisionProxy Coll() const
realnum & EnergyWN() const
EmissionList::reference Emis() const
double coll_ion_wrapper(long int z, long int n, double t)
double *** CollIonRate_Ground
TransitionProxy trans(const long ipHi, const long ipLo)
long int n_HighestResolved_max
bool lgColl_l_mixing[NISO]
realnum HeCSInterp(long int nelem, long int ipHi, long int ipLo, long int Collider)
double Hion_coll_ioniz_ratecoef(long int ipISO, long int nelem, long int n, double ionization_energy_Ryd, double Te)
double hydro_vs_ioniz(double ionization_energy_Ryd, double Te)
realnum HydroCSInterp(long int nelem, long int ipHi, long int ipLo, long int ipCollider)
double HydroEinstA(long int n1, long int n2)
t_iso_sp iso_sp[NISO][LIMELM]
void iso_put_error(long ipISO, long nelem, long ipHi, long ipLo, long whichData, realnum errorOpt, realnum errorPess)
void iso_collide(long ipISO, long nelem)
void iso_collisional_ionization(long ipISO, long nelem)
static double ColliderMass[4]
void iso_suprathermal(long ipISO, long nelem)
double GetGF(double trans_prob, double enercm, double gup)
UNUSED const double ELECTRON_MASS
UNUSED const double EN1RYD
UNUSED const double PROTON_MASS
UNUSED const double ATOMIC_MASS_UNIT
UNUSED const double COLL_CONST
UNUSED const double HION_LTE_POP
t_secondaries secondaries
long int ipHeavy[LIMELM][LIMELM]
realnum AtomicWeight[LIMELM]
bool lgCaseB_HummerStorey
bool lgIsoTraceFull[NISO]
long int ipIsoTrace[NISO]