Go to the source code of this file.
Data Structures | |
struct | t_atoms |
Functions | |
void | AtomSeqBeryllium (double cs12, double cs13, double cs23, transition *t, double a30) |
void | AtomSeqBoron (transition *t21, transition *t31, transition *t41, transition *t32, transition *t42, transition *t52, double cs51, double cs43, double cs53, double cd54, double pump_rate, const char *chLabel) |
void | atom_level2 (transition *t) |
void | atom_level3 (transition *t10, transition *t21, transition *t20) |
double | atom_pop2 (double omega, double g1, double g2, double a21, double bltz, double abund) |
double | atom_pop3 (double g1, double g2, double g3, double o12, double o13, double o23, double a21, double a31, double a32, double Tex12, double Tex23, realnum *pop2, double abund, double gam2, double r12, double r13) |
void | atom_pop5 (const double g[], const double ex[], double cs12, double cs13, double cs14, double cs15, double cs23, double cs24, double cs25, double cs34, double cs35, double cs45, double a21, double a31, double a41, double a51, double a32, double a42, double a52, double a43, double a53, double a54, double p[], realnum abund, double *Cooling, double *CoolingDeriv, double pump12, double pump13, double pump14, double pump15) |
void | atom_levelN (long int nlev, realnum abund, const double g[], const double ex[], char chExUnits, double pops[], double depart[], double ***AulEscp, double ***col_str, double ***AulDest, double ***AulPump, double ***CollRate, const double create[], const double destroy[], bool lgCollRateDone, double *cooltl, double *coolder, const char *chLabel, int *nNegPop, bool *lgZeroPop, bool lgDeBug) |
void | atom_oi_calc (double *coloi) |
Variables | |
const int | N_OI_LEVELS = 6 |
const long | LIMLEVELN = 20L |
EXTERN struct t_atoms | atoms |
void atom_level2 | ( | transition * | t | ) |
atom_level2 do level population and cooling for two level atom
t |
Definition at line 17 of file atom_level2.cpp.
References ASSERT, atoms, t_emission::Aul, t_dense::cdsqte, chIonLbl(), t_collision::col_str, transition::Coll, t_emission::ColOvTot, t_rfield::ContBoltz, t_collision::cool, CoolAdd(), t_thermal::dCooldT, DEBUG_ENTRY, dense, t_atoms::DepLTELevels, transition::Emis, transition::EnergyErg, transition::EnergyK, t_quantumState::g, t_thermal::halfte, t_collision::heat, transition::Hi, t_quantumState::IonStg, transition::ipCont, transition::Lo, t_quantumState::nelem, t_emission::ots, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, phycon, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, t_emission::pump, rfield, sexp(), t_phycon::te, thermal, t_thermal::tsq1, transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.
Referenced by atom_level3(), CoolAlum(), CoolArgo(), CoolCalc(), CoolCarb(), CoolChlo(), CoolChro(), CoolCoba(), CoolDima(), CoolEvaluate(), CoolIron(), CoolMagn(), CoolMang(), CoolNeon(), CoolNick(), CoolNitr(), CoolOxyg(), CoolPhos(), CoolPota(), CoolScan(), CoolSili(), CoolSodi(), CoolSulf(), CoolTita(), CoolVana(), CoolZinc(), and Fe2_cooling().
void atom_level3 | ( | transition * | t10, | |
transition * | t21, | |||
transition * | t20 | |||
) |
atom_level3 compute three level atom, 10, 21, and 20 are line
t10 | ||
t21 | ||
t20 |
Definition at line 15 of file atom_level3.cpp.
References ASSERT, atom_level2(), atoms, t_emission::Aul, cdEXIT, t_dense::cdsqte, chIonLbl(), chLineLbl(), t_collision::col_str, transition::Coll, t_emission::ColOvTot, t_collision::cool, CoolAdd(), t_thermal::dCooldT, DEBUG_ENTRY, dense, t_atoms::DepLTELevels, t_dense::eden, transition::Emis, EN1RYD, transition::EnergyErg, transition::EnergyK, fp_equal(), t_quantumState::g, t_thermal::halfte, t_collision::heat, transition::Hi, t_quantumState::IonStg, ioQQQ, transition::ipCont, transition::Lo, MAX2, t_quantumState::nelem, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, phycon, t_rfield::plsfrq, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, t_emission::pump, rfield, RT_OTS_AddLine(), ShowMe(), t_phycon::te, t_phycon::teinv, thermal, TotalInsanity(), t_thermal::tsq1, transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.
Referenced by CoolAlum(), CoolArgo(), CoolCalc(), CoolCarb(), CoolChlo(), CoolFluo(), CoolIron(), CoolMagn(), CoolNeon(), CoolNick(), CoolNitr(), CoolOxyg(), CoolPhos(), CoolPota(), CoolSili(), CoolSodi(), CoolSulf(), and Fe7Lev8().
void atom_levelN | ( | long int | nlev, | |
realnum | abund, | |||
const double | g[], | |||
const double | ex[], | |||
char | chExUnits, | |||
double | pops[], | |||
double | depart[], | |||
double *** | AulEscp, | |||
double *** | col_str, | |||
double *** | AulDest, | |||
double *** | AulPump, | |||
double *** | CollRate, | |||
const double | create[], | |||
const double | destroy[], | |||
bool | lgCollRateDone, | |||
double * | cooltl, | |||
double * | coolder, | |||
const char * | chLabel, | |||
int * | nNegPop, | |||
bool * | lgZeroPop, | |||
bool | lgDeBug | |||
) |
atom_levelN - compute populations of arbitrary n-level atom
nlev | nlev is the number of levels to compute | |
abund | ABUND is total abundance of species, used for nth equation | |
g[] | G(ndim) is stat weight of levels | |
ex[] | EX(ndim) is excitation potential of levels, either wn or deg K 0 for first one, NOT d(ENER), but energy rel to ground | |
chExUnits | this is 'K' for above ex[] as Kelvin deg, is 'w' for wavenumbers | |
pops[] | populations of each level as deduced here | |
depart[] | departure coefficient derived here | |
AulEscp | net transition rate, A * esc prob, s-1 | |
col_str | col str rom up to low | |
AulDest | AulDest(ilo,ihi) is destruction rate, from up to low, A * dest prob, [s-1], asserts confirm that ihi,lo is zero | |
AulPump | AulPump(lo, hi) is pumping rate, A * occ num, (hi,lo) must be zero, [s-1] | |
CollRate | collision rates, evaluated here and returned for cooling by calling function, unless following flag is true. If true then calling function has already filled in these rates. CollRate[i][j] is rate from i to j | |
create | this is an additional creation rate, normally zero, units cm-3 s-1 | |
destroy[] | this is an additional destruction rate to continuum, normally zero, units s-1 | |
lgCollRateDone | flag saying whether CollRate already done, or we need to do it here | |
cooltl | total cooling, set here but nothing done with it | |
coolder | derivative of cooling, set here but nothing done with it | |
chLabel | string used to identify calling program in case of error | |
lgNegPop | lgNegPop flag indicating what we have done positive if negative populations occurred zero if normal calculation done negative if too cold (for some atoms other routine will be called in this case) | |
lgZeroPop | true if populations are zero, either due to zero abundance of very low temperature | |
lgDeBug | option to print matrices for debugging |
Definition at line 14 of file atom_leveln.cpp.
References amat, ASSERT, BOLTZMANN, cdEXIT, t_dense::cdsqte, conv, auto_vec< T >::data(), multi_arr< T, d, ALLOC, lgBC >::data(), DEBUG_ENTRY, dense, dsexp(), getrf_wrapper(), getrs_wrapper(), t_thermal::halfte, ioQQQ, ipiv, t_conv::lgSearch, t_trace::lgTrace, t_trace::lgTrLevN, MAX2, phycon, SMALLFLOAT, T1CM, t_phycon::te, t_phycon::te_wn, thermal, TorF(), TotalInsanity(), trace, t_thermal::tsq1, and multi_arr< T, d, ALLOC, lgBC >::zero().
Referenced by AtomSeqBoron(), dBase_solve(), Fe11Lev5(), Fe13Lev5(), Fe2_cooling(), Fe3Lev14(), Fe4Lev12(), Fe7Lev8(), and H2_Level_low_matrix().
void atom_oi_calc | ( | double * | coloi | ) |
atom_oi drive the solution of OI level populations, Ly-beta pumping
coloi |
Definition at line 23 of file atom_oi.cpp.
References t_dense::AtomicWeight, atoms, t_emission::Aul, DEBUG_ENTRY, dense, transition::Emis, fixit(), GetDopplerWidth(), transition::Hi, ioQQQ, ipH1s, ipH3p, ipH_LIKE, ipHYDROGEN, ipOXYGEN, ipT1039, ipT1304, ipT4368, ipT8446, ipTO1025, ipTOI11, ipTOI13, ipTOI29, ipTOI46, t_rfield::lgInducProcess, t_trace::lgTr8446, t_trace::lgTrace, transition::Lo, MAX2, MIN2, oi_level_pops(), t_emission::Pelec_esc, t_emission::Pesc, t_atoms::pmpo15, t_atoms::pmpo51, t_quantumState::Pop, t_atoms::popoi, t_emission::PopOpc, rfield, StatesElemNEW, TauLines, trace, Transitions, and t_dense::xIonDense.
Referenced by CoolOxyg().
double atom_pop2 | ( | double | omega, | |
double | g1, | |||
double | g2, | |||
double | a21, | |||
double | bltz, | |||
double | abund | |||
) |
atom_pop2 do level population for simple two level atom, no radiative transfer
omega | ||
g1 | ||
g2 | ||
a21 | ||
bltz | ||
abund |
Definition at line 9 of file atom_pop2.cpp.
References ASSERT, t_dense::cdsqte, DEBUG_ENTRY, dense, phycon, and t_phycon::teinv.
Referenced by CoolArgo(), CoolChro(), CoolIron(), CoolMagn(), CoolNeon(), CoolScan(), CoolSili(), CoolSulf(), and IonOxyge().
double atom_pop3 | ( | double | g1, | |
double | g2, | |||
double | g3, | |||
double | o12, | |||
double | o13, | |||
double | o23, | |||
double | a21, | |||
double | a31, | |||
double | a32, | |||
double | Tex12, | |||
double | Tex23, | |||
realnum * | pop2, | |||
double | abund, | |||
double | gam2, | |||
double | r12, | |||
double | r13 | |||
) |
atom_pop3 return value is population for 3-level atom, cm^-3
g1 | statictical weights of level 1 | |
g2 | statictical weights of level 2 | |
g3 | statictical weights of level 3 | |
o12 | collision strengths between three levels | |
o13 | collision strengths between three levels | |
o23 | collision strengths between three levels | |
a21 | transition probabilities between three levels | |
a31 | transition probabilities between three levels | |
a32 | transition probabilities between three levels | |
Tex12 | excitation energy in Kelvin | |
Tex23 | excitation energy in Kelvin | |
*pop2 | returned population of level 2, cm^-3 | |
abund | incoming total abundance of ion | |
gam2 | possible photodestruction of level 2, normally 0 | |
r12 | excitation rates (s-1) due to "other" processes | |
r13 | excitation rates (s-1) due to "other" processes |
Definition at line 10 of file atom_pop3.cpp.
References ASSERT, atoms, t_atoms::c12, t_atoms::c13, t_dense::cdsqte, DEBUG_ENTRY, dense, ex, phycon, SMALLFLOAT, and t_phycon::te.
Referenced by CoolAlum(), CoolArgo(), CoolCalc(), CoolCarb(), CoolChlo(), CoolChro(), CoolIron(), CoolNeon(), CoolNitr(), CoolOxyg(), CoolPhos(), CoolScan(), CoolSili(), CoolSodi(), CoolSulf(), CoolTita(), and CoolVana().
void atom_pop5 | ( | const double | g[], | |
const double | ex[], | |||
double | cs12, | |||
double | cs13, | |||
double | cs14, | |||
double | cs15, | |||
double | cs23, | |||
double | cs24, | |||
double | cs25, | |||
double | cs34, | |||
double | cs35, | |||
double | cs45, | |||
double | a21, | |||
double | a31, | |||
double | a41, | |||
double | a51, | |||
double | a32, | |||
double | a42, | |||
double | a52, | |||
double | a43, | |||
double | a53, | |||
double | a54, | |||
double | p[], | |||
realnum | abund, | |||
double * | Cooling, | |||
double * | CoolingDeriv, | |||
double | pump12, | |||
double | pump13, | |||
double | pump14, | |||
double | pump15 | |||
) |
atom_pop5 do populations and cooling for five level atom
g[] | ||
ex[] | ||
cs12 | ||
cs13 | ||
cs14 | ||
cs15 | ||
cs23 | ||
cs24 | ||
cs25 | ||
cs34 | ||
cs35 | ||
cs45 | ||
a21 | ||
a31 | ||
a41 | ||
a51 | ||
a32 | ||
a42 | ||
a52 | ||
a43 | ||
a53 | ||
a54 | ||
p[] | ||
abund | ||
cooling | ||
cooling | derivative | |
pump12 | ||
pump13 | ||
pump14 | ||
pump15 |
Definition at line 13 of file atom_pop5.cpp.
References amat, ASSERT, cdEXIT, t_dense::cdsqte, DEBUG_ENTRY, dense, ERG1CM, getrf_wrapper(), getrs_wrapper(), t_thermal::halfte, ioQQQ, ipiv, MAX2, phycon, sexp(), T1CM, t_phycon::te, thermal, and t_thermal::tsq1.
Referenced by CoolArgo(), CoolCalc(), CoolChlo(), CoolNitr(), CoolOxyg(), and CoolSulf().
void AtomSeqBeryllium | ( | double | cs12, | |
double | cs13, | |||
double | cs23, | |||
transition * | t, | |||
double | a30 | |||
) |
AtomSeqBeryllium compute level populations and emissivity for Be-sequence ions
cs12 | ||
cs13 | ||
cs23 | ||
t | ||
a30 |
Definition at line 13 of file atom_seq_beryllium.cpp.
References amat, ASSERT, atoms, t_emission::Aul, cdEXIT, t_dense::cdsqte, chIonLbl(), t_collision::col_str, transition::Coll, t_emission::ColOvTot, t_collision::cool, CoolAdd(), t_thermal::dCooldT, DEBUG_ENTRY, dense, t_atoms::DepLTELevels, transition::Emis, transition::EnergyErg, transition::EnergyK, t_quantumState::g, getrf_wrapper(), getrs_wrapper(), t_thermal::halfte, t_collision::heat, transition::Hi, t_quantumState::IonStg, ioQQQ, ipiv, transition::Lo, t_quantumState::nelem, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, phycon, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, t_emission::pump, t_phycon::te, thermal, t_thermal::tsq1, transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.
Referenced by CoolAlum(), CoolCarb(), CoolIron(), CoolNeon(), CoolNitr(), CoolOxyg(), CoolSili(), and CoolSulf().
void AtomSeqBoron | ( | transition * | t21, | |
transition * | t31, | |||
transition * | t41, | |||
transition * | t32, | |||
transition * | t42, | |||
transition * | t52, | |||
double | cs51, | |||
double | cs43, | |||
double | cs53, | |||
double | cd54, | |||
double | pump_rate, | |||
const char * | chLabel | |||
) |
AtomSeqBoron compute cooling from 5-level boron sequence model atom
t21 | ||
t31 | ||
t41 | ||
t32 | ||
t42 | ||
t52 | ||
cs51 | ||
cs43 | ||
cs53 | ||
cd54 | ||
pump_rate | pump rate due to UV permitted lines | |
chLabel | string used to identify calling program in case of error |
Definition at line 11 of file atom_seq_boron.cpp.
References ASSERT, atom_levelN(), atoms, t_emission::Aul, AulDest, AulEscp, AulPump, t_collision::col_str, col_str, transition::Coll, CollRate, t_emission::ColOvTot, t_collision::cool, CoolAdd(), t_thermal::dCooldT, DEBUG_ENTRY, dense, depart, t_atoms::DepLTELevels, transition::Emis, transition::EnergyErg, transition::EnergyK, t_quantumState::g, t_thermal::halfte, t_collision::heat, transition::Hi, t_quantumState::IonStg, lgFirst, LIMLEVELN, transition::Lo, MALLOC, N_SEQ_BORON, t_quantumState::nelem, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, pops, t_emission::pump, SDIV(), thermal, t_thermal::tsq1, transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.
Referenced by CoolCarb(), CoolIron(), CoolNitr(), CoolOxyg(), CoolSili(), and CoolSulf().
Referenced by atom_level2(), atom_level3(), atom_oi_calc(), atom_pop3(), AtomSeqBeryllium(), AtomSeqBoron(), ContCreatePointers(), CoolAlum(), CoolCarb(), CoolIron(), CoolMagn(), CoolNeon(), CoolNitr(), CoolOxyg(), CoolSili(), CoolSulf(), Fe11Lev5(), Fe13Lev5(), Fe2_cooling(), Fe3Lev14(), Fe4Lev12(), Fe7Lev8(), GrainsInit(), InitSimPostparse(), IonMagne(), IonNitro(), IterRestart(), IterStart(), lines_lv1_li_ne(), oi_level_pops(), OpacityAddTotal(), PrtComment(), and zero().
const long LIMLEVELN = 20L |
Definition at line 234 of file atoms.h.
Referenced by AtomSeqBoron(), Fe11Lev5(), Fe13Lev5(), Fe2_cooling(), Fe3Lev14(), Fe4Lev12(), and Fe7Lev8().
const int N_OI_LEVELS = 6 |
number of levels in OI atom
Definition at line 233 of file atoms.h.
Referenced by IterStart(), and zero().