50 if( (*Hi).n() < 1 )
continue;
55 double rate_up_cont = (*(*tr).Lo()).Pop() * (*tr).Emis().pump() * factor;
58 double elec_decay = (*(*tr).Hi()).Pop() * (*tr).Emis().Aul() *
59 ((*tr).Emis().Pesc() + (*tr).Emis().Pdest() + (*tr).Emis().Pelec_esc());
116 double ground_to_star_rate = 0.;
125 for(
long iVibHi=0; iVibHi<=
nVib_hi[iElecHi]; ++iVibHi )
127 for(
long iRotHi=
Jlowest[iElecHi]; iRotHi<=
nRot_hi[iElecHi][iVibHi]; ++iRotHi )
135 double rate_up_cont =
153 ground_to_star_rate += rate_up_cont*decay_star;
163 return ground_to_star_rate;
196 double pop =
H2_populations_LTE[ (*st).n() ][ (*st).v() ][ (*st).J() ] * (*dense_total);
205 (*tr).Emis().PopOpc() = (*(*tr).Lo()).Pop() - (*(*tr).Hi()).Pop() * (*(*tr).Lo()).g() / (*(*tr).Hi()).g();
208 (*tr).Coll().cool() = 0.;
209 (*tr).Coll().heat() = 0.;
212 (*tr).Emis().xIntensity() = 0.;
213 (*tr).Emis().phots() = 0.;
214 (*tr).Emis().ots() = 0.;
235 double part_fun = 0.;
240 long iElec = (*st).n();
241 long iVib = (*st).v();
242 long iRot = (*st).J();
248 part_fun +=
H2_Boltzmann[iElec][iVib][iRot] * (*st).g();
254 long iElec = (*st).n();
255 long iVib = (*st).v();
256 long iRot = (*st).J();
261 (*st).g() / part_fun;
265 "mole_H2_LTE set H2_Boltzmann factors, T=%.2f, partition function is %.2f\n",
281 "\n***************H2_Reset called, resetting nCall_this_iteration, zone %.2f iteration %li\n",
332 double xsqrt , x15 ,
x2;
333 double energy = energy_ryd *
EVRYD;
339 energy_keV = energy/1000.0;
349 else if(energy >= 15.4 && energy < 18.)
351 cross_section = 1e7 * (1 - 197.448/xsqrt + 438.823/x - 260.481/x15 + 17.915/
x2);
356 else if(energy >= 18. && energy <= 30.)
358 cross_section = (-145.528 +351.394*xsqrt - 274.294*x + 74.320*x15)/pow(energy_keV,3.5);
361 else if(energy > 30. && energy <= 85.)
363 cross_section = (65.304 - 91.762*xsqrt + 51.778*x - 9.364*x15)/pow(energy_keV,3.5);
369 cross_section = 45.57*(1 - 2.003/xsqrt - 4.806/x + 50.577/x15 - 171.044/
x2 + 231.608/(xsqrt*
x2) - 81.885/(x*
x2))/pow(energy_keV,3.5);
377 DEBUG_ENTRY(
"diatomics::CalcPhotoionizationRate()" );
bool fp_equal(sys_float x, sys_float y, int n=3)
sys_float SDIV(sys_float x)
#define DEBUG_ENTRY(funcname)
realnum & Pelec_esc() const
TransitionProxy::iterator iterator
double Solomon_elec_decay_s
double photodissoc_BigH2_H2s
double pops_per_elec[N_ELEC]
long ip_photo_opac_offset
double Solomon_elec_decay_g
multi_arr< realnum, 3 > H2_dissprob
void H2_Solomon_rate(void)
multi_arr< long int, 2 > ipTransitionSort
double(* photoion_opacity_fun)(double energy)
const double *const dense_total
void CalcPhotoionizationRate(void)
double Solomon_dissoc_rate_g
multi_arr< realnum, 6 > H2_SaveLine
multi_arr< double, 3 > H2_populations_LTE
long int iteration_evaluated
double photodissoc_BigH2_H2g
long OpacityCreate(double *stack)
double GetExcitedElecDensity(void)
multi_arr< double, 3 > H2_Boltzmann
const double ENERGY_H2_STAR
void H2_zero_pops_too_low(void)
long ip_photo_opac_thresh
long int nCall_this_iteration
multi_arr< bool, 2 > lgH2_radiative
multi_arr< double, 2 > pops_per_vib
double Solomon_dissoc_rate_s
valarray< long > nRot_hi[N_ELEC]
multi_arr< double, 3 > H2_old_populations
multi_arr< double, 3 > H2_rad_rate_out
TransitionList::iterator rad_end
long int nzone_nlevel_set
multi_arr< long int, 3 > ipEnergySort
ProxyIterator< qStateConstProxy, qStateConstProxy > const_iterator
ProxyIterator< qStateProxy, qStateConstProxy > iterator
double GammaK(long int ipLoEnr, long int ipHiEnr, long int ipOpac, double yield1, t_phoHeat *photoHeat)
STATIC double cross_section(double EgammaRyd, double EthRyd, long nelem, long n, long l, long s)
double Yan_H2_CS(double energy_ryd)
UNUSED const double EVRYD